{"openapi":"3.1.0","info":{"title":"aVenture API","version":"1.0.0"},"paths":{"/v1/entities/lookup-batch":{"post":{"operationId":"entities_lookupEntityBatch","summary":"Look Up Companies in Bulk by ID, Slug, or URL","description":"Returns a page of full entity records matched by id, slug, or an entity's current URL. It accepts no company names; identify one by name with lookupRecord (POST /v1/lookup) and its name field, then batch the returned ids here. When page and size are omitted, the full deduplicated batch is returned in request order. Sort is not supported for this fixed-order batch response. For public reads totalElements counts the entities visible to the caller, so requested identifiers that do not resolve or fail the public visibility filter are excluded. For privileged reads totalElements counts the requested identifiers that resolved to an entity id, which can exceed the number of records returned when an id no longer exists. A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["entities"],"parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N); omit page and size for the full batch.","required":false,"schema":{"type":"integer"}},{"name":"size","in":"query","description":"The size of the page to be returned; omit page and size for the full batch.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDetailBatch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/lookup-matches":{"post":{"operationId":"entities_lookupEntityMatches","summary":"Look Up Which Company Each Identifier Matches","description":"Returns exactly one result per id, slug, or current entity URL you send, repeating your input: MATCHED with the full record, AMBIGUOUS with candidate ids when more than one entity currently uses that URL, or MISSING. Unlike the batch detail read, no input is silently dropped and every row maps back to its source identifier. URL matching is host+path exact: scheme and a leading www are ignored, but distinct paths stay distinct (stripe.com does not match stripe.com/payments). A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["entities"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityResolution"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDetailBatch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/brand":{"get":{"operationId":"entities_getEntityBrand","summary":"Get a Company's Names, Logos, Links, and Tags","description":"Returns a short, cached summary of one company, looked up by exactly one of url, slug, or entityId: brand and legal names, logos, the primary website and social profile URLs, and current classification tags. url accepts any current URL joined to the company (website, LinkedIn, X/Twitter, Crunchbase, GitHub, and other profiles) or its aVenture page; scheme, a leading www, and case are ignored, while distinct paths stay distinct. 404 when nothing owns the identifier; 409 with candidate ids when a URL is owned by more than one company. A signed-in user's read charges one brand view per distinct company per UTC month against the monthly brand view allowance, then as additional usage when the subscriber enabled it; a repeat read of the same company in the month is free, as is a read of a company whose full profile view is already charged that month, a later full profile view of the company that month reverses its brand view charge, and an exhausted cap answers 429 with Retry-After.","tags":["entities"],"parameters":[{"name":"url","in":"query","description":"Any current URL joined to the company, e.g. stripe.com.","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","description":"Exact aVenture entity slug, e.g. stripe.","required":false,"schema":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255}},{"name":"entityId","in":"query","description":"Exact entity UUID.","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityBrand"}}}},"400":{"description":"Not exactly one of url, slug, or entityId; a malformed slug or entityId; or a url that cannot be normalized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"No visible company owns the identifier, including a url owned by a person.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"The url has more than one current owner; details.candidateEntityId and details.candidatePersonId list them. Retry with an entity candidate as entityId.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/lookup-exact":{"get":{"operationId":"entities_getEntityLookup","summary":"Read Full Entity Detail by aVenture Profile URL, Slug, Website, or Domain","description":"Start here for any aventure.vc profile URL, slug, website, or domain. Exact read: returns the full EntityDetail (names, links, funding, rounds, news, people, and research) of the one entity that identifier proves, so do not re-read it with getEntity or searchEntities; it answers 404 or 409 instead of guessing. Funding total: enrichment.fundingDetail.totalRaisedUsd sums only recorded round amounts with available USD rates; caveat missing amounts or rates, not a complete lifetime total. Operating HQ: match enrichment.headquartersAddressId to enrichment.address[].id; deprecated isHq marks the legal seat, not the operating HQ. For an existing-record name read, use POST /v1/entities/search with entityName (CLI entities search --entity-name) and verify the candidates against identity fields and evidenced URLs before reading an id. Choose universal lookup only when its possible filing effect is intended. Select stored financial facts with financialYear plus financialPeriod; otherwise they are omitted. Detail qualifiers and visibility rules apply. UUIDs use the item route; id query parameters are rejected. Changed slugs redirect canonically. A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["entities"],"parameters":[{"name":"slug","in":"query","description":"Exact entity slug.","required":false,"schema":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255}},{"name":"companySlug","in":"query","description":"Provider slug for Product/Service slug lookup; providerTypeRecord can narrow this to Company, Nonprofit, or Government routes.","required":false,"schema":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255}},{"name":"providerTypeRecord","in":"query","description":"Concrete provider type qualifier for a Product/Service provider route; group-only Organization is invalid. Use with companySlug when resolving `/companies/{slug}/products-services/{product}`, `/non-profits/{slug}/products-services/{product}`, or `/government/{slug}/products-services/{product}`.","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","description":"aventure.vc profile URL (such as https://aventure.vc/companies/<slug>), or the entity's own website or domain URL, matched by host and path unless urlMatchMode=domain.","required":false,"schema":{"type":"string"}},{"name":"urlType","in":"query","description":"URL type qualifier. List the accepted tokens with GET /v1/url-types (CLI: url-types list).","required":false,"schema":{"type":"string"}},{"name":"urlMatchMode","in":"query","description":"URL matching mode: hostPath (default for url) or domain. Omit when urlDomain is supplied; urlDomain selects domain mode automatically.","required":false,"schema":{"type":"string"}},{"name":"typeRecord","in":"query","description":"Concrete entity type qualifier; group-only Organization is invalid. List the accepted concrete tokens and their aliases with GET /v1/entities/types (CLI: entities types list).","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Primary entity name candidate.","required":false,"schema":{"type":"string"}},{"name":"nameBrand","in":"query","description":"Brand name candidate.","required":false,"schema":{"type":"string"}},{"name":"nameLegal","in":"query","description":"Legal name candidate.","required":false,"schema":{"type":"string"}},{"name":"location","in":"query","description":"Location candidate: city, state, or country.","required":false,"schema":{"type":"string"}},{"name":"urlDomain","in":"query","description":"Website domain candidate without protocol or path.","required":false,"schema":{"type":"string"}},{"name":"permitMonogram","in":"query","description":"Allow generated monogram logo fallback.","required":false,"schema":{"type":"boolean"}},{"name":"comparisonEntityId","in":"query","description":"Exact peer UUIDs in display order for an optional cited comparison on the UUID item JSON read. Exclude the subject and duplicates; subject plus peers must fit the served search answer policy maxEntityEvidence. Uses public stored evidence only, requires the caller's paid natural-search entitlement, and consumes no search allowance or peer views. Omit for ordinary reads; ignored on HEAD and SSE.","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"financialYear","in":"query","description":"Select stored financial facts for this exact year together with financialPeriod. Omit both for ordinary detail reads; ignored on HEAD and SSE.","required":false,"schema":{"type":"integer"}},{"name":"financialPeriod","in":"query","description":"Exact stored financial period token, without trimming or normalization. Supply with financialYear; must be nonblank and at most six characters. Ignored on HEAD and SSE.","required":false,"schema":{"type":"string","maxLength":6}}],"responses":{"200":{"description":"Entity detail as canonical JSON or the same data rendered as compact text/plain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDetail"}}}},"400":{"description":"Conflicting or unusable identity input: name, nameBrand, and nameLegal must identify the same entity, and exactly one identifier form may be supplied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"No entity resolved: fuzzy candidate signals below the review threshold without identity proof are exhausted, which does not prove the record is absent or safe to create. Keep an existing-record request on POST /v1/entities/search with entityName (CLI entities search --entity-name); compare candidate identity fields and evidenced URLs before reading a confirmed id. Search results are candidates, not identity verdicts, and an empty result means no visible match for those filters. Do not switch a read-only miss to universal lookup; choose it only when its possible filing effect is intended. Retry this exact read only with a slug or URL copied from an aVenture page. An existing but filtered row instead reports its reason as the ProblemDetail title: Entity Exists but Is Not Public (the record exists but is not published), Product Not Public: Missing Provider Relationship, or Fund Not Public: No Public Manager Firm.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Ambiguous identity: review-level candidates, unresolved identity proof, multiple exact normalized-name matches, or a Product/Service slug shared across provider pairs. ProblemDetail carries candidates; read each returned id with GET /v1/entities/{entityId}. Resolve the Product/Service ambiguity with companySlug plus slug or a provider's productService relationship.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/search":{"post":{"operationId":"entities_searchEntities","summary":"Search Companies, Products, and Services","description":"Searches entities by keyword, by meaning (semantic search), or by exact field filters, all sent in the request body. Without search text or sort, browse by updatedAt descending, then id ascending. Text search keeps relevance ranking; semanticQuery orders by embedding score. Organization expands to the canonical organization type group; semanticQuery ranks by stored content embeddings. For plain-English queries, use POST /v1/search/natural/entities. semanticQuery defines a bounded result set: the nearest rows at or above a relevance cutoff, capped in size and ordered by score; page numbers reach the whole set and totalElements counts it. Page 0 of a semantic set of 50 rows or fewer can emit a signed cursor; other pages continue by page number. To follow the cursor, reuse the same filters, sort, size, and visibility scope. countOnly is unsupported with cursor; count-only pages have no content; read totalElements. Non-semantic privileged backlog searches stop counting at 5001 matches. Below that value, totalElements is exact; at or above it, it is a lower bound, not an exact backlog size; Spring may raise it to the returned page's offset plus row count.","tags":["entities"],"parameters":[{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"countOnly","in":"query","description":"Return totalElements with empty content. With private visibility and backlog filters, without semanticQuery, 5001 means at least that many; lower totals are exact. The page empty flag describes content, not matches. Unsupported with cursor or includeFullDetail=true.","required":false,"schema":{"type":"boolean"}},{"name":"permitMonogram","in":"query","description":"Allow generated monogram logos in results.","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","description":"Opaque entity cursor; reuse filters and sort. Cursor is unsupported with countOnly; semanticQuery depends on the endpoint.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format property,(asc|desc), where property is one of: id, nameBrand, foundedYear, operatingStatus, updatedAt, createdAt, nextDueAt, dataCompletionCoverage, totalRaised, amountInvested, recentInvestmentAt, stage, mostRecentAmount, latestValuation, mostRecentDate, notableActivityAt, acceleratorBrand, acceleratorCohort, headquartersCountry, employeeCount. Default order is ascending; repeat sort for multiple criteria.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"includeFullDetail","in":"query","description":"Set true to return each match as a company detail search record instead of the list row: the headquarters address, the first 5 people (most recently updated association first), and the first 5 news articles (newest first). Full lists: GET /v1/entities/{entityId}/addresses, GET /v1/entities/{entityId}/people, and GET /v1/news?owner.entityId=.","required":false,"schema":{"type":"boolean"}},{"name":"Prefer","in":"header","description":"Send respond-async to get a semantic-search job back instead of waiting; poll the URL in its Location header.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entities_searchEntities_Response_200"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListFilter"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/search/jobs/{jobId}":{"get":{"operationId":"entities_getEntitySemanticSearchJob","summary":"Get an Async Semantic Entity Search","description":"Returns the page accepted by `Prefer: respond-async` on POST /v1/entities/search. Answers 202 with Location and Retry-After while the search is queued or running, 200 with the canonical entity page once complete, and 404 for an unknown job.","tags":["entities"],"parameters":[{"name":"jobId","in":"path","description":"Entity semantic search job UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Search completed; the canonical entity page is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}":{"get":{"operationId":"entities_getEntity","summary":"Get One Company, Product, or Service by ID","description":"Returns one company's full profile by exact UUID, the read for a company brief: identity, funding history with each round's lead investors, key people, news, and relationships. For an existing slug, profile URL, website, or domain, use GET /v1/entities/lookup-exact. For a name, use POST /v1/entities/search with entityName, verify the candidates against identity evidence, then read the confirmed id. Use universal lookup only when its possible filing effect is intended. Select stored financial facts with financialYear plus financialPeriod; otherwise they are omitted. A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["entities"],"parameters":[{"name":"entityId","in":"path","description":"Exact entity UUID.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"typeRecord","in":"query","description":"Concrete entity type qualifier; group-only Organization is invalid. List the accepted concrete tokens and their aliases with GET /v1/entities/types (CLI: entities types list).","required":false,"schema":{"type":"string"}},{"name":"permitMonogram","in":"query","description":"Allow generated monogram logo fallback.","required":false,"schema":{"type":"boolean"}},{"name":"comparisonEntityId","in":"query","description":"Exact peer UUIDs in display order for an optional cited comparison on the UUID item JSON read. Exclude the subject and duplicates; subject plus peers must fit the served search answer policy maxEntityEvidence. Uses public stored evidence only, requires the caller's paid natural-search entitlement, and consumes no search allowance or peer views. Omit for ordinary reads; ignored on HEAD and SSE.","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"financialYear","in":"query","description":"Select stored financial facts for this exact year together with financialPeriod. Omit both for ordinary detail reads; ignored on HEAD and SSE.","required":false,"schema":{"type":"integer"}},{"name":"financialPeriod","in":"query","description":"Exact stored financial period token, without trimming or normalization. Supply with financialYear; must be nonblank and at most six characters. Ignored on HEAD and SSE.","required":false,"schema":{"type":"string","maxLength":6}}],"responses":{"200":{"description":"Entity detail as canonical JSON or the same data rendered as compact text/plain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/filters":{"get":{"operationId":"entityFilters_listEntityFilters","summary":"List the Company Filter Options","description":"Get available filter options","tags":["entityFilters"],"parameters":[{"name":"typeGroup","in":"query","description":"Type group for default filter scope. Ignored when typeRecord is provided.","required":false,"schema":{"$ref":"#/components/schemas/EntityTypeGroup"}},{"name":"typeRecord","in":"query","description":"Filter by entity type (Company, Investor, etc.)","required":false,"schema":{"type":"string"}},{"name":"includeDistribution","in":"query","description":"Include range distribution charts","required":false,"schema":{"type":"boolean","default":false}},{"name":"distributionKey","in":"query","description":"Comma-separated or repeated filter keys for chart distribution (for example amountRaised,totalRaised)","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilterOptionSet"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/filters/refine":{"post":{"operationId":"entityFilters_refineEntityFilters","summary":"Refine the Company Filter Options","description":"Returns each entity filter's available options and counts, limited to the entities that match the filters you already applied. Each filter entry reports choiceOptionTotal and choiceOptionTruncated so CLI and MCP callers can tell when the displayed choiceOption list is only the top scoped subset. Use the filter search endpoint with the same scopeFilter to look up values not shown in the refine response.","tags":["entityFilters"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilterRefinedFilters"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilter"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/filters/search":{"post":{"operationId":"entityFilters_searchEntityFilters","summary":"Look Up Filter Values Inside the Current Search","description":"Searches all the values an entity filter can take, limited to the entities that match your other current filters. Pass the same scopeFilter used for list/refine work; the searched filter excludes its own current values so callers can expand a facet without clearing the rest of the query.","tags":["entityFilters"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilterSearchResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilterSearch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/fundraise-investor-joins":{"get":{"operationId":"entityFundraise_listEntityFundraiseInvestorJoins","summary":"List the Investors in a Funding Round","description":"Lists the organizations and people that invested in a funding round, with the amountInvested recorded for each. Each row names its investor with investorName and investorSlug beside the investor ids and leadInvestor, so one read lists a round's named investors; GET /v1/entities/{entityId}/fundraise-rounds/{fundraiseRoundId} returns the same rows on the round. Public reads omit joins whose investor profile is hidden, and the round's investorCount is source-reported, so it can exceed the joins listed here. amountInvested is a plain decimal number in the fundraise transaction currency. Send a JSON number such as 220000 or 123456.78. Do not send currency signs, currency codes, comma grouping, quoted numeric strings, or abbreviations such as 220k or 0.22M. PATCH with amountInvested:null clears the value. Use entityId for the fundraising/portfolio company that raised the round — always a company, never the fund or investment firm that supplied the capital. For an Investment Firm's outgoing investment, pass the portfolio company that received the money here and identify the firm with investorEntityId or investorEntitySlug. Use transactionId for the round id, or round plus dateAnnounced when transactionId is unknown. To list one investor's joins, find its entityId or personId by name with POST /v1/lookup with kind ENTITY or PERSON in the JSON body (CLI lookup --kind ENTITY or --kind PERSON --name \"<name>\" --data) and pass it as investorEntityId or investorPersonId.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"joinId","in":"query","description":"Join identifier. When present, lookup ignores transaction and investor query parameters.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"transactionId","in":"query","description":"Fundraise round transaction id. The target entity id/slug is the entity that raised the round; for an Investment Firm investment, use the portfolio/fundraising company as target and identify the firm with investorEntityId or investorEntitySlug. When omitted, lookup uses the target entity plus round/dateAnnounced.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"round","in":"query","description":"Raw fundraise round label used when transactionId is omitted","required":false,"schema":{"type":"string"}},{"name":"dateAnnounced","in":"query","description":"Exact source-stated announced date or instant used to disambiguate same-label rounds","required":false,"schema":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$"}},{"name":"investorEntityId","in":"query","description":"Investor entity identifier. Find an investor's entityId by name with POST /v1/lookup with kind ENTITY in the JSON body (CLI lookup --kind ENTITY --name \"<name>\" --data).","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"investorEntitySlug","in":"query","description":"Investor entity slug when investorEntityId is omitted. Find it by name with POST /v1/lookup with kind ENTITY in the JSON body (CLI lookup --kind ENTITY --name \"<name>\" --data).","required":false,"schema":{"type":"string"}},{"name":"investorPersonId","in":"query","description":"Investor person identifier. Find an investor's personId by name with POST /v1/lookup with kind PERSON in the JSON body (CLI lookup --kind PERSON --name \"<name>\" --data).","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"investorPersonSlug","in":"query","description":"Investor person slug when investorPersonId is omitted. Find it by name with POST /v1/lookup with kind PERSON in the JSON body (CLI lookup --kind PERSON --name \"<name>\" --data).","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityFundraiseInvestorJoin"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/fundraise-investor-joins/{joinId}":{"get":{"operationId":"entityFundraise_getEntityFundraiseInvestorJoin","summary":"Get One Investor on a Funding Round","description":"Returns one investor's participation in a funding round, by joinId.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"joinId","in":"path","description":"Fundraise investor join identifier","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFundraiseInvestorJoin"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/fundraise-rounds":{"get":{"operationId":"entityFundraise_listEntityFundraiseRounds","summary":"List a Company's Funding Rounds","description":"Lists fundraise rounds for an entity. Use entityId for the fundraising/portfolio company that raised the round - always a company, never the fund or investment firm. For an investment made by an Investment Firm, pass the portfolio company that received the money here, not the investment firm id and not the round id.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"round","in":"query","description":"Round label contains filter","required":false,"schema":{"type":"string"}},{"name":"dateFrom","in":"query","description":"Inclusive minimum announced date","required":false,"schema":{"type":"string","format":"date"}},{"name":"dateTo","in":"query","description":"Inclusive maximum announced date","required":false,"schema":{"type":"string","format":"date"}},{"name":"minAmount","in":"query","description":"Inclusive minimum amount raised in USD, using each round's USD-converted amount. Rounds with no recorded amount or no available USD conversion do not match. Use a plain whole-number amount such as 500000; do not include currency signs, codes, comma grouping, decimals, or strings.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"maxAmount","in":"query","description":"Inclusive maximum amount raised in USD, using each round's USD-converted amount. Rounds with no recorded amount or no available USD conversion do not match. Use a plain whole-number amount such as 50000000; do not include currency signs, codes, comma grouping, decimals, or strings.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"permitMonogram","in":"query","description":"Permit monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"roundExact","in":"query","description":"Funding rounds only, not outgoing investments: match the canonical participation write selector's exact stored round label, ignoring case and surrounding spaces. Cannot combine with round, dateFrom, dateTo, minAmount or maxAmount. Returns one bounded page of at most two raw ambiguity witnesses, without display deduplication: totalElements=2 means at least two matches, not an exhaustive count. Requires page=0, size>=2 and no cursor; no stable subset or export traversal is promised across requests. Omit dateAnnounced for no date constraint.","required":false,"schema":{"type":"string"}},{"name":"dateAnnounced","in":"query","description":"Funding rounds only; requires roundExact. ResearchDate announcement-period overlap uses the canonical participation write selector: ISO year, year-month, day or offset timestamp, preserving supplied precision. Omission imposes no date constraint. Two timestamps match only at the same instant; calendar periods overlap and timestamp/calendar comparisons use the timestamp's UTC day.","required":false,"schema":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$"}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format property,(asc|desc), where property is one of: id, dateAnnounced, amountRaised, round, createdAt, updatedAt. Default order is ascending; repeat sort for multiple criteria.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityFundraiseTransaction"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/fundraise-rounds/{fundraiseRoundId}":{"get":{"operationId":"entityFundraise_getEntityFundraiseRound","summary":"Get One Funding Round","description":"Gets one fundraise round for an entity with its investors named: investor[] carries each investor's investorName, investorSlug, leadInvestor, and amountInvested, lead investors first. Use entityId for the fundraising/portfolio company that raised the round - always a company, never the fund or investment firm. For an investment made by an Investment Firm, pass the portfolio company that received the money here, not the investment firm id and not the round id. Use fundraiseRoundId for the round id.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"fundraiseRoundId","in":"path","description":"Fundraise round id. Use this with the entityId path segment that owns the round.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFundraiseTransaction"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/investments":{"get":{"operationId":"entityFundraise_listEntityInvestments","summary":"List the Investments a Company Made","description":"Lists the investments made by the investor entity identified by entityId. Use entityId to select the investor, then filter by round, dateFrom/dateTo, minAmount/maxAmount, and latestPerEntity. amountInvested appears only inside investorAttribution, is a plain decimal number in the fundraise transaction currency, and is not added to amountRaised. Valid sort syntax is sort=amountInvested,desc; do not use investorAttribution.amountInvested, amount_invested, currency signs, currency codes, comma grouping, or abbreviated values. Deep traversal uses cursor: pass the prior X-Next-Cursor value as cursor and reuse the same filters and sort. For co-investor questions, this list alone is insufficient: GET /v1/entities/{entityId:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}}/investor-activity provides investor counts and stage mix, but neither operation returns co-investor rankings or a sector-filtered syndicate analysis.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"round","in":"query","description":"Round label contains filter","required":false,"schema":{"type":"string"}},{"name":"dateFrom","in":"query","description":"Inclusive minimum announced date","required":false,"schema":{"type":"string","format":"date"}},{"name":"dateTo","in":"query","description":"Inclusive maximum announced date","required":false,"schema":{"type":"string","format":"date"}},{"name":"minAmount","in":"query","description":"Inclusive minimum amount raised in USD, using each round's USD-converted amount. Rounds with no recorded amount or no available USD conversion do not match. Use a plain whole-number amount such as 500000; do not include currency signs, codes, comma grouping, decimals, or strings.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"maxAmount","in":"query","description":"Inclusive maximum amount raised in USD, using each round's USD-converted amount. Rounds with no recorded amount or no available USD conversion do not match. Use a plain whole-number amount such as 50000000; do not include currency signs, codes, comma grouping, decimals, or strings.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"permitMonogram","in":"query","description":"Permit monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"roundExact","in":"query","description":"Funding rounds only, not outgoing investments: match the canonical participation write selector's exact stored round label, ignoring case and surrounding spaces. Cannot combine with round, dateFrom, dateTo, minAmount or maxAmount. Returns one bounded page of at most two raw ambiguity witnesses, without display deduplication: totalElements=2 means at least two matches, not an exhaustive count. Requires page=0, size>=2 and no cursor; no stable subset or export traversal is promised across requests. Omit dateAnnounced for no date constraint.","required":false,"schema":{"type":"string"}},{"name":"dateAnnounced","in":"query","description":"Funding rounds only; requires roundExact. ResearchDate announcement-period overlap uses the canonical participation write selector: ISO year, year-month, day or offset timestamp, preserving supplied precision. Omission imposes no date constraint. Two timestamps match only at the same instant; calendar periods overlap and timestamp/calendar comparisons use the timestamp's UTC day.","required":false,"schema":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$"}},{"name":"latestPerEntity","in":"query","description":"Return latest transaction per entity","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityFundraiseTransaction"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/investor-activity":{"get":{"operationId":"entityFundraise_getEntityInvestorActivity","summary":"Get Investor Portfolio Counts, Sectors and Recipients","description":"Returns the investor's recorded investment counts, previously recorded exit and write-off counts, the split of investments by stage, and amounts in USD, with how many investments have a known USD amount. Use entityId for the investor, not a recipient. With portfolioOutcome, also returns fresh public-detail-visible direct and current primary managed-fund recipients: complete distinct cohort and primary-industry coverage counts plus independently paged sector and recipient evidence. Sector order is count descending then industry id; recipient order is recorded capital raised in USD descending (unknown last) then entity id. Both pages use page/size. Current acquired/public/closed status is not a dated exit, realized return/loss, failure cause or historical failure rate. Legacy stored totals may have a different snapshot and visibility. No co-investor or syndicate ranking is provided.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"portfolioOutcome","in":"query","description":"Select a current public recipient-status cohort, adding complete coverage counts and independent sector/recipient pages. Omit for the legacy stored aggregate. Neither acquired/public status nor recorded capital raised proves investor returns.","required":false,"schema":{"$ref":"#/components/schemas/InvestorPortfolioOutcome"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFundraiseInvestorActivity"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/investors":{"get":{"operationId":"entityFundraise_listEntityInvestors","summary":"List a Company's Investors","description":"Lists the organizations that invested in this company, with an investorAttribution entry for each round they joined. Use entityId for the fundraising/portfolio company being invested in, whose investors to list — always a company, never an investor fund or firm. amountInvested appears only inside investorAttribution, is a plain decimal number in the fundraise transaction currency, and is not added to amountRaised. Valid sort syntax is sort=amountInvested,desc; do not use investorAttribution.amountInvested, amount_invested, currency signs, currency codes, comma grouping, or abbreviated values. For more than a few investors, send compact=true: each row keeps the investor's own profile and returns its people, news, rounds, relationships, and research as empty lists.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"compact","in":"query","description":"Set true to return each investor's own profile with its people, news, funding rounds, relationships, and research as empty lists, not absent fields; the profile's sitemap flags still show which of them exist. Responses are much smaller.","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityInvestorParticipation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/investors/people":{"get":{"operationId":"entityFundraise_listEntityPersonInvestors","summary":"List Person Investors","description":"Lists the people who invested in this company, with an investorAttribution entry for each round they joined. Use entityId for the fundraising/portfolio company being invested in, whose investors to list — always a company, never an investor fund or firm. amountInvested appears only inside investorAttribution, is a plain decimal number in the fundraise transaction currency, and is not added to amountRaised. Valid sort syntax is sort=amountInvested,desc; do not use investorAttribution.amountInvested, amount_invested, currency signs, currency codes, comma grouping, or abbreviated values.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePersonInvestorParticipation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/valuations":{"get":{"operationId":"entityFundraise_listEntityValuations","summary":"List a Company's Valuation Over Time","description":"Returns newest-first, per-UTC-month valuation points composed from stated latestValuation research details plus fundraise-round valuations. Only researchDetail points have detailId and can be changed here; fundraiseRound points are read-only here. Custom sort is not supported.","tags":["entityFundraise"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityValuationTimeSeriesPoint"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/people":{"get":{"operationId":"entityPersonAssociations_listEntityPersonAssociations","summary":"List the People at a Company: Its Team, Founders, and Key People","description":"Lists who works at a company (its team): founders, executives, key people, management, employees, and other associated people, with each person's title and whether the role is current. Use it for team members, key people, or founders at a company; a person's name alone never resolves through an exact person lookup.","tags":["entityPersonAssociations"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","description":"Search term filter","required":false,"schema":{"type":"string"}},{"name":"role","in":"query","description":"Match titleName containing this text as a whole-word phrase, ignoring case: founder matches Co-Founder, Founder & CEO, and CEO and Co-Founder, but not Founding Partner. Omit to include all titles; this does not filter titleFunction or titleLevel.","required":false,"schema":{"type":"string"}},{"name":"isCurrent","in":"query","description":"Current association filter","required":false,"schema":{"type":"boolean"}},{"name":"includeUrl","in":"query","description":"Include person URL records","required":false,"schema":{"type":"boolean"}},{"name":"includeAddress","in":"query","description":"Include person address records","required":false,"schema":{"type":"boolean"}},{"name":"personSlug","in":"query","description":"Writes only: the person's slug when the body omits personId. List reads ignore it; use search to narrow listed people.","required":false,"schema":{"type":"string"}},{"name":"countOnly","in":"query","description":"Return count metadata without full content","required":false,"schema":{"type":"boolean"}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format property,(asc|desc), where property is one of: id, nameFirst, nameLast, nameFull, slug, createdAt, updatedAt, status, gender, amountInvested, totalInvestments. Default order is ascending; repeat sort for multiple criteria.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityPersonAssociation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/people/{associationId}":{"get":{"operationId":"entityPersonAssociations_getEntityPersonAssociation","summary":"Get One Person's Role at a Company","description":"Returns one person's role at a company.","tags":["entityPersonAssociations"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"associationId","in":"path","description":"Association id","required":true,"schema":{"type":"integer"}},{"name":"search","in":"query","description":"Search term filter","required":false,"schema":{"type":"string"}},{"name":"role","in":"query","description":"Match titleName containing this text as a whole-word phrase, ignoring case: founder matches Co-Founder, Founder & CEO, and CEO and Co-Founder, but not Founding Partner. Omit to include all titles; this does not filter titleFunction or titleLevel.","required":false,"schema":{"type":"string"}},{"name":"isCurrent","in":"query","description":"Current association filter","required":false,"schema":{"type":"boolean"}},{"name":"includeUrl","in":"query","description":"Include person URL records","required":false,"schema":{"type":"boolean"}},{"name":"includeAddress","in":"query","description":"Include person address records","required":false,"schema":{"type":"boolean"}},{"name":"personSlug","in":"query","description":"Writes only: the person's slug when the body omits personId. List reads ignore it; use search to narrow listed people.","required":false,"schema":{"type":"string"}},{"name":"countOnly","in":"query","description":"Return count metadata without full content","required":false,"schema":{"type":"boolean"}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram fallback","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityPersonAssociation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/entities":{"get":{"operationId":"entityPersonAssociations_listPersonEntityAssociations","summary":"List a Person's Roles at Companies","description":"Returns the entities this person is linked to and their role at each.","tags":["entityPersonAssociations"],"parameters":[{"name":"personId","in":"path","description":"Person UUID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"countOnly","in":"query","description":"Return count metadata without full content","required":false,"schema":{"type":"boolean"}},{"name":"includeUrl","in":"query","description":"Include entity URL records","required":false,"schema":{"type":"boolean"}},{"name":"includeAddress","in":"query","description":"Include entity address records (pass false to omit)","required":false,"schema":{"type":"boolean"}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram logo fallback","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityPersonAssociation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/entities/{associationId}":{"get":{"operationId":"entityPersonAssociations_getPersonEntityAssociation","summary":"Get One of a Person's Roles at a Company","description":"Returns one of this person's roles at an entity.","tags":["entityPersonAssociations"],"parameters":[{"name":"personId","in":"path","description":"Person UUID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"associationId","in":"path","description":"Association id","required":true,"schema":{"type":"integer"}},{"name":"includeUrl","in":"query","description":"Include entity URL records","required":false,"schema":{"type":"boolean"}},{"name":"includeAddress","in":"query","description":"Include entity address records (pass false to omit)","required":false,"schema":{"type":"boolean"}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram logo fallback","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityPersonAssociation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/relationships/types":{"get":{"operationId":"entityRelationships_listEntityRelationshipTypes","summary":"List Entity Relationship Types","description":"Returns every EntityRelationshipType value with its accepted alternate spellings and the flags that say how each type may be written and combined. Use joinable=true values with entities relationships create; acquisitionManaged=true values route through entity acquisitions; exclusiveRelationshipType lists relationship types that cannot coexist for the same unordered entity pair; readOnly=true values are emitted by reads only.","tags":["entityRelationships"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelationshipTypeOption"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/relationships/{relationshipId}":{"get":{"operationId":"entityRelationships_getEntityRelationship","summary":"Get One Relationship by ID","description":"Returns one relationship by row id, including historic and non-primary rows. The response includes isCurrent and isPrimary so hidden-row cause is explicit.","tags":["entityRelationships"],"parameters":[{"name":"relationshipId","in":"path","description":"Integer id of the relationship record (not an entity UUID).","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityRelationship"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/relationships":{"get":{"operationId":"entityRelationships_listEntityRelationships","summary":"List a Company's Relationships","description":"Returns the relationships in which this entity is either party. Defaults to renderable-only rows where isCurrent=true and isPrimary=true. Set includeInactive=true to also return historic and non-primary rows; each row carries id, isCurrent, and isPrimary. List a company's customers with type=customer and role=vendor, and its vendors, suppliers, or service providers with type=customer and role=customer: one customer row is stored once and read from both endpoints. Use entities relationships get to retrieve one row by id without an entity path.","tags":["entityRelationships"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"type","in":"query","description":"Optional EntityRelationshipType filter, one of: acceleratorParticipant, acquirer, affinity, calculated, competingProductService, competitor, customer, fundManagerFirm, parent, productService, serviceProvider, similarCompany, spinOffFrom, successor. Use entities relationships types list for valid values.","required":false,"schema":{"type":"string"}},{"name":"role","in":"query","description":"Role the path entity plays in the returned rows: the sourceRole or targetRole of a directional type, which role requires. With type=customer, role=vendor returns the path entity's customers, including the customers of its current primary productService offerings (one hop: no parent, subsidiary, or offering-of-offering rollup), and role=customer returns only the vendors the path entity itself buys from. totalElements and the cursor count that side only.","required":false,"schema":{"type":"string"}},{"name":"includeInactive","in":"query","description":"Include historic or non-primary rows. Default false returns only rows where isCurrent=true and isPrimary=true.","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeNonRenderable","in":"query","description":"Deprecated alias for includeInactive.","required":false,"schema":{"type":"boolean","default":false},"deprecated":true},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}},{"name":"transitive","in":"query","description":"When true with type=competingProductService, or type=competitor on a company, returns one cursor page (default 20, maximum 50) of the subject's curated competitors of competitorDegree; each Product/Service row nests its provider's productService row with comparison signals. With type=productService on a company, pages its Product/Service rows with a shared nested direct-competitor preview budget equal to size. Continue each product's competitors through its own relationships read. Rejects includeInactive.","required":false,"schema":{"type":"boolean","default":false}},{"name":"identityOnly","in":"query","description":"Return only joined entity core, relationship type and source/target ids; free authenticated identity lookup. Omits research, provenance, dates, comparison signals and nested relationships. Incompatible with transitive, competitorDegree and inactive flags.","required":false,"schema":{"type":"boolean","default":false}},{"name":"competitorDegree","in":"query","description":"Competitor stream for transitive=true with type=competingProductService or competitor; defaults to direct. secondOrder ranks records competing with the subject's direct competitors by shared count (two hops, never transitive closure). A cursor serves only the degree that minted it. Reuse the same subject and size.","required":false,"schema":{"$ref":"#/components/schemas/CompetitorDegree"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityRelationship"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/acquisitions":{"get":{"operationId":"entityAcquisitions_listEntityAcquisitions","summary":"List a Company's Acquisitions","description":"Returns an acquisition only when both the buyer and the acquired entity are published. A 404 for an acquisition that the entity relationships resource lists means the record exists but one side is not published. The acquired/acquirer roles in each row are always declared explicitly in the response via the acquiredEntity and acquirerEntity fields. The role query parameter selects which side of the acquisition the path entity is on: acquired (default) lists acquisitions where the path entity was bought; acquirer lists acquisitions where the path entity was the buyer; all lists or reads both sides in one response. Writes (POST/PUT/PATCH/DELETE) ignore role and always treat the path entity as acquired. List responses are ordered by most recent acquisition event first.","tags":["entityAcquisitions"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID whose acquisition rows are being read or written.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"role","in":"query","description":"Selects which side the path entity occupies in the WHERE clause: `acquired` (default) lists rows where the path entity was bought; `acquirer` lists rows where the path entity was the buyer; `all` lists both sides.","required":false,"schema":{"$ref":"#/components/schemas/EntityAcquisitionRole"}},{"name":"includeInactive","in":"query","description":"Includes retained non-current or non-primary acquisition relationships. Defaults to false (current and primary only). isCurrent records whether the buyer still owns the acquired company, not whether it is operating. Counterpart visibility is unchanged.","required":false,"schema":{"type":"boolean","default":false}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityAcquisition"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/acquisitions/{relationshipId}":{"get":{"operationId":"entityAcquisitions_getEntityAcquisition","summary":"Get One Company Acquisition","description":"Returns an acquisition only when both the buyer and the acquired entity are published. A 404 for an acquisition that the entity relationships resource lists means the record exists but one side is not published. A gated miss on an existing row returns 404 with title 'Acquisition Exists but a Counterpart Entity Is Not Public'. The acquired/acquirer roles in each row are always declared explicitly in the response via the acquiredEntity and acquirerEntity fields. The role query parameter selects which side of the acquisition the path entity is on: acquired (default) lists acquisitions where the path entity was bought; acquirer lists acquisitions where the path entity was the buyer; all lists or reads both sides in one response. Writes (POST/PUT/PATCH/DELETE) ignore role and always treat the path entity as acquired.","tags":["entityAcquisitions"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID whose acquisition rows are being read or written.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"relationshipId","in":"path","description":"Integer id of the acquisition record.","required":true,"schema":{"type":"integer"}},{"name":"role","in":"query","description":"Which side the path entity occupies for this `relationshipId`: `acquired` (default) returns the record only when the path entity was bought; `acquirer` returns it only when the path entity was the buyer; `all` returns it from either side. A side mismatch returns 404.","required":false,"schema":{"$ref":"#/components/schemas/EntityAcquisitionRole"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityAcquisition"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/classifications":{"get":{"operationId":"entityClassifications_listEntityClassifications","summary":"List a Company's Classifications","description":"Returns the company's classifications grouped by bucket. The default view includes current classifications; includeInactive=true adds historical ones and requires sign-in. A company that is not public returns 404.","tags":["entityClassifications"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"includeInactive","in":"query","description":"Include inactive/historical entity classification join rows; default false returns only current joins.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityClassification"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/classifications/suggestions":{"get":{"operationId":"entityClassifications_listEntityClassificationSuggestions","summary":"Suggest Classifications for a Company","description":"Returns ranked tag and standard industry code suggestions for the company, based on similar companies. mainProduct is never suggested, and an empty array means no similar company suggests anything. Requires sign-in; a company that is not public returns 404.","tags":["entityClassifications"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"size","in":"query","description":"Maximum suggestions to return; default 12, maximum 50.","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Deprecated alias for size.","required":false,"schema":{"type":"integer"},"deprecated":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityClassificationSuggestion"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/addresses":{"get":{"operationId":"entityAddresses_listEntityAddresses","summary":"List a Company's Locations","description":"Returns the entity's current physical addresses, each with its role (such as headquarters) and the dates that role applied. Headquarters come first, then the primary address, then the most recently updated. Reads directly from the base tables so fresh writes surface immediately (bypassing the mv_entity_addresses materialized view). Set includeInactive=true as a signed-in user or with read credentials to include inactive/historical rows.","tags":["entityAddresses"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"includeInactive","in":"query","description":"Include inactive rows","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Address"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/addresses/{addressJoinId}":{"get":{"operationId":"entityAddresses_getEntityAddress","summary":"Get One Company Address","description":"Returns the physical address that this addressJoinId links to the entity, with all of that address's roles. Requires read auth. ETag identifies this representation for a conditional PATCH.","tags":["entityAddresses"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"addressJoinId","in":"path","description":"Address join id parameter","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Address representation and its revision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/addresses/{addressId}/links":{"get":{"operationId":"addresses_listAddressLinks","summary":"List Address Links","description":"Returns every entity and person linked to this physical address, past and present, with each link's id, the linked record's id, and its role when one is recorded. Only publicly visible owners are returned unless private visibility is authorized. Entity links precede person links; each group is ordered by join id. Bounded keyset pagination avoids counting or loading every owner. Follow nextCursor, also returned as X-Next-Cursor. An absent or unlinked address returns empty content. Page must be zero and sort is unsupported.","tags":["addresses"],"parameters":[{"name":"addressId","in":"path","description":"Physical address row id, not an association join id.","required":true,"schema":{"type":"integer"}},{"name":"page","in":"query","description":"Offset paging is not supported; omit page. Any value other than 0 returns 400. Send the previous response's nextCursor as cursor to read the next page.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1}},{"name":"cursor","in":"query","description":"Opaque continuation from this address's previous response.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorSliceAddressLink"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/contact-details":{"get":{"operationId":"contactDetails_listEntityContactDetails","summary":"List a Company's Contact Details","description":"Every email and phone of one company, primary first, each with its usage and opt-out state. A signed-in user's read that returns contacts charges the record's profile view against the monthly entity or person view allowance, shared with profile reads: once per record per UTC month, a read returning no contacts is free, and an exhausted cap answers 429 with Retry-After. Without edit permission it serves only a publicly visible record and omits opted-out rows.","tags":["contactDetails"],"parameters":[{"name":"entityId","in":"path","description":"Company UUID.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContactDetail"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/contact-details":{"get":{"operationId":"contactDetails_listPersonContactDetails","summary":"List a Person's Contact Details","description":"Every email and phone of one person, primary first, each with its usage and opt-out state. A signed-in user's read that returns contacts charges the record's profile view against the monthly entity or person view allowance, shared with profile reads: once per record per UTC month, a read returning no contacts is free, and an exhausted cap answers 429 with Retry-After. Without edit permission it serves only a publicly visible record and omits opted-out rows.","tags":["contactDetails"],"parameters":[{"name":"personId","in":"path","description":"Person UUID.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContactDetail"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/logo":{"get":{"operationId":"entityLogo_getEntityLogo","summary":"Get a Company Logo","description":"Returns the selected square or standard logo with where it came from; returns 404 when none is stored. A Product or Service's assembled `core.image` can show its provider's logo; this logo is the entity's own asset, and an offering with no own mark grades `entity.logo` by that displayed provider logo. This is the asset fetch, not the verification proof: the accuracy check against reference marks is the logo check operation.","tags":["entityLogo"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"logoType","in":"query","description":"Logo slot: SQUARE (default; `core.image.logoSquare`) or STANDARD (`core.image.logo`).","required":false,"schema":{"$ref":"#/components/schemas/EntityLogoType"}},{"name":"validateSquareOriginal","in":"query","description":"Validate the entity SQUARE logo's stored original before returning metadata.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUpload"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/entities/research-details/types":{"get":{"operationId":"entityResearch_listEntityResearchDetailTypes","summary":"List the Accepted Research Detail Types","description":"Returns each research detail type and the rules for writing a value of that type. The rules include valueShape, allowedToken, range, and timeSeries. When timeSeries=true, each believable dated observation is historical data: add a new current row and delete only rows believed false.","tags":["entityResearch"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResearchDetailType"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/research-snippets/types":{"get":{"operationId":"entityResearch_listEntityResearchSnippetTypes","summary":"List the Accepted Research Snippet Types","description":"Lists the recognized research snippet types. A textType in this list is validated against its length and paragraph rules on write and defaults to visible; a textType not in this list is still saved but defaults to visible=false (hidden from default reads). The per-row visible flag overrides the default either way. The curated and analysisRenderable flags mark public Analysis-page eligibility, not snippet display.","tags":["entityResearch"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResearchSnippetType"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/entities/sec":{"get":{"operationId":"entityResearch_lookupSecCompany","summary":"Get SEC EDGAR Facts for an SEC Registrant","description":"Resolves a US SEC registrant by ticker (preferred) or company-name query. Returns the SEC EDGAR identity facts: legal name, former names, ticker, exchange, SIC industry, state of incorporation, headquarters, and whether it is an operating company, plus the earliest EDGAR filing date and, when EDGAR holds it, the IPO prospectus (listingProspectus). SEC supplies no brand name, website, or summary text — those stay enrichment-owned and are absent here. A name query binds only the one registrant whose title equals it ignoring case and legal suffix, or the only registrant whose title contains it; a name SEC's ticker listing lacks is looked up in EDGAR's company-name index, which also holds tickerless filers such as private Form D issuers. Several matches without one exact title return 409: resolution.parameter is ticker with their tickers in resolution.acceptedValue, or, when none has a ticker, name with each legal name that binds alone; filers whose legal names differ only by case or legal suffix return 409 with no resolution and their CIKs in the detail. A ticker missing from SEC's current listings binds the one registrant whose past filings carried it (a delisted filer, whose ticker list is then empty); several such registrants return 409. A 404 means this lookup matched no SEC registrant; it does not show the company is private. Read live and never persisted.","tags":["entityResearch"],"parameters":[{"name":"ticker","in":"query","description":"Trading ticker symbol (preferred resolver)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Company name query (used when no ticker is given)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecCompany"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/analysis-replay":{"get":{"operationId":"entityResearch_getEntityAnalysisReplay","summary":"Get an Example Published Analysis Section","description":"Returns one accepted, currently published research-analysis section as an example of what the analysis feature produces; requires a valid credential. The same global example is selected for every requested profile; the returned company identity names its subject. No conversational events or private sources are returned. This does not grant profile or saved-research access. Returns 404 when no eligible example exists.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID) that gives page context; it does not select the example returned.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityAnalysisReplay"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/employee-counts":{"get":{"operationId":"entityResearch_listEntityEmployeeCounts","summary":"List a Company's Headcount Over Time","description":"Returns this entity's employee count over time. Results are sorted newest first. This endpoint does not support custom sorting.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID)","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned; maximum 500.","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEmployeeCount"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/research":{"get":{"operationId":"entityResearch_getEntityResearch","summary":"Get the Research Gathered About a Company","description":"Returns the consolidated research for a company.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityResearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/research-details":{"get":{"operationId":"entityResearch_listEntityResearchDetails","summary":"List Research Details","description":"Returns paginated research details for an entity. Optionally filter by detail type. Rows for timeSeries=true types are history, not stale current state.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20}},{"name":"type","in":"query","description":"Research detail type token. Run GET /v1/entities/research-details/types (CLI: entities research-details types list) for the token inventory and each token's value shape.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityResearchDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/research-details/{detailId}":{"get":{"operationId":"entityResearch_getEntityResearchDetail","summary":"Get Research Detail","description":"Returns one research detail for an entity.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"detailId","in":"path","description":"Research detail id.","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityResearchDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/research-snippets":{"get":{"operationId":"entityResearch_listEntityResearchSnippets","summary":"List Research Snippets","description":"Returns paginated research snippets for one entity. Public reads omit hidden rows and private provenance fields; privileged private reads include hidden rows. Sorting is fixed by the server.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityResearchSnippet"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/research-snippets/{snippetId}":{"get":{"operationId":"entityResearch_getEntityResearchSnippet","summary":"Get Research Snippet","description":"Returns one research snippet for an entity. Public reads omit private provenance fields.","tags":["entityResearch"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"snippetId","in":"path","description":"Research snippet id.","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityResearchSnippet"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/similar":{"get":{"operationId":"entitySimilar_listEntitySimilarEntities","summary":"Get Similar Companies by ID","description":"Returns entities similar to the entity with this entityId, most similar first. Rows include the entity and similarity provenance. Use relationshipType to filter stored relationships. Defaults to 20 rows. Follow X-Next-Cursor with the same filters and size for the next page; page is ignored with cursor. A changed ranked roster rejects continuation: restart without cursor. Custom sorting is unsupported. Any signed-in user may call this on every plan. The list is free: it never counts against the monthly record-view allowance, which charges only a separate full-detail view of one record.","tags":["entitySimilar"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID)","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"relationshipType","in":"query","description":"Filter by stored relationship type, one of: acceleratorParticipant, acquirer, affinity, calculated, competingProductService, competitor, customer, fundManagerFirm, parent, productService, serviceProvider, similarCompany, spinOffFrom, successor.","required":false,"schema":{"type":"string"}},{"name":"typeRecord","in":"query","description":"Optional entity typeRecord filter. Repeat to allow multiple entity types.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"excludeManagerId","in":"query","description":"Exclude funds managed by this entity (UUID) before pagination","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"permitMonogram","in":"query","description":"Permit monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntitySimilarityResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/similar/summary":{"get":{"operationId":"entitySimilar_listEntitySimilarSummaries","summary":"Get Similar Company Summaries by ID","description":"Returns the same similar entities, order, and totals as GET /v1/entities/{entityId}/similar, but each row holds only the entity's basic profile, its current URLs, and where the similarity came from. Use it for rails and cards that do not render list enrichment. Defaults to 20 rows. Follow X-Next-Cursor with the same filters and size for the next page; page is ignored with cursor. A changed ranked roster rejects continuation: restart without cursor. Custom sorting is unsupported. Any signed-in user may call this on every plan. The list is free: it never counts against the monthly record-view allowance, which charges only a separate full-detail view of one record.","tags":["entitySimilar"],"parameters":[{"name":"entityId","in":"path","description":"Entity unique identifier (UUID)","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"relationshipType","in":"query","description":"Filter by stored relationship type, one of: acceleratorParticipant, acquirer, affinity, calculated, competingProductService, competitor, customer, fundManagerFirm, parent, productService, serviceProvider, similarCompany, spinOffFrom, successor.","required":false,"schema":{"type":"string"}},{"name":"typeRecord","in":"query","description":"Optional entity typeRecord filter. Repeat to allow multiple entity types.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"excludeManagerId","in":"query","description":"Exclude funds managed by this entity (UUID) before pagination","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"permitMonogram","in":"query","description":"Permit monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntitySimilaritySummary"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/types":{"get":{"operationId":"entityMaintenance_listEntityTypeRecords","summary":"List the Accepted typeRecord Values","description":"Returns each accepted typeRecord value with its aliases, meaning, and public page path.","tags":["entityMaintenance"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityTypeAlias"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/lookup-batch":{"post":{"operationId":"people_lookupPersonBatch","summary":"Look Up People in Bulk by ID or Slug","description":"Returns several people by id or slug, with their URLs, roles at entities, and addresses, each of which can be left out. When page and size are omitted, the full deduplicated batch is returned in request order. Sort is not supported for this fixed-order batch response. A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["people"],"parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N); omit page and size for the full batch.","required":false,"schema":{"type":"integer"}},{"name":"size","in":"query","description":"The size of the page to be returned; omit page and size for the full batch.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePersonDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonLookupBatch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/lookup-exact":{"get":{"operationId":"people_getPersonLookup","summary":"Read One Person's Full Detail by aVenture Profile URL, Slug, or URL","description":"Start here for any aventure.vc person profile URL, slug, or personal profile URL. Exact read: returns the full PersonDetail (names, profile, company roles, and investments) of the one person a slug, URL, or candidate signals prove, so do not re-read it with getPerson or searchPeople; it answers 404 or 409 instead of guessing. For an existing-record name read, use POST /v1/people/search with personName (CLI people search --person-name) and verify the candidates against identity fields, roles, and evidenced URLs before reading an id. An empty search means no visible match for those filters, not permission to file. Choose universal lookup only when its possible filing effect is intended. Use the UUID item route for an id; any id query is rejected. Canonical redirects are preserved. A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["people"],"parameters":[{"name":"slug","in":"query","description":"Group A — exact person slug (URL-friendly identifier). Mutually exclusive with id, url, and every candidate signal in group C.","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","description":"Group B — aventure.vc person profile URL (such as https://aventure.vc/people/<slug>) or the person's current profile URL, resolved via strict host+path or domain-only match. Mutually exclusive with id and slug; may be combined with group-C candidate signals for URL-first fallback.","required":false,"schema":{"type":"string"}},{"name":"urlType","in":"query","description":"Optional URL type qualifier for URL lookup (e.g., 'linkedin', 'twitter'). Narrows Group B (url) and Group C (urlDomain) matching. Not an identifier on its own.","required":false,"schema":{"type":"string"}},{"name":"urlMatchMode","in":"query","description":"URL match mode qualifier: 'hostPath' (strict host + path match, default) or 'domain' (host-only match). Not an identifier on its own.","required":false,"schema":{"type":"string"}},{"name":"nameFull","in":"query","description":"Group C — candidate lookup signal: person full name. A name alone never resolves (404): pair it with other group-C signals (location, urlDomain) or url. To find an existing person by name, use searchPeople with personName, compare candidate identity fields, roles, and evidenced URLs, then read the confirmed id. Search results are candidates, not identity verdicts. Choose universal lookup only when its possible filing effect is intended. For the people at a company, use listEntityPersonAssociations. Mutually exclusive with id and slug.","required":false,"schema":{"type":"string"}},{"name":"nameAny","in":"query","description":"Group C — candidate lookup signal: loose name match (any of given/family/full). A name alone never resolves; combine it with other group-C signals or url. Mutually exclusive with id and slug.","required":false,"schema":{"type":"string"}},{"name":"location","in":"query","description":"Group C — candidate lookup signal: person location (city, state, country). Combine with other group-C signals for bounded search. Mutually exclusive with id and slug; may be combined with url for fallback.","required":false,"schema":{"type":"string"}},{"name":"urlDomain","in":"query","description":"Group C — candidate lookup signal: person URL domain (host only, no path). Combine with other group-C signals for disambiguation. Mutually exclusive with id and slug; may be combined with url for fallback.","required":false,"schema":{"type":"string"}},{"name":"includeUrl","in":"query","description":"Include URL link values in the response (default: true). Set false to omit urlLink array.","required":false,"schema":{"type":"boolean"}},{"name":"includeAssociation","in":"query","description":"Include association values in the response (default: true). Set false to omit association array.","required":false,"schema":{"type":"boolean"}},{"name":"includeAddress","in":"query","description":"Include address values in the response (default: true). Set false to omit address array.","required":false,"schema":{"type":"boolean"}},{"name":"maxAssociations","in":"query","description":"Maximum association values to return; the server caps it at its own association limit. Default: 40.","required":false,"schema":{"type":"integer"}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram photo fallback (default: true). Set false to exclude monogram photos in response.","required":false,"schema":{"type":"boolean"}},{"name":"include","in":"query","description":"Profile panels to embed in this one read (repeat or comma-separate). Each named panel answers the same rows as its own endpoint's first page; omitted panels stay absent.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonDetailInclude"}}}],"responses":{"200":{"description":"Person detail as canonical JSON or compact text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"No person resolved: exact URL and bounded candidate signals are exhausted, which does not prove the record is absent — search before creating. An existing but filtered row instead reports its reason as the ProblemDetail title: Person Exists but Is Not Public (the record exists but is not published).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Ambiguous identity: URL ownership or candidate signals require review. ProblemDetail identifies candidate ids and the supported recovery. Verify the candidates against source evidence and read the matching person by personId or an evidenced full profile URL with urlMatchMode=hostPath. score and threshold rank review priority; they do not prove absence. Create only when reviewed candidates are distinct and source evidence supports the target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/search":{"post":{"operationId":"people_searchPeople","summary":"Search People","description":"Searches, filters, or browses people and returns a page of people matching the filters in the request body. semanticQuery uses the live priority embeddings tier and returns semanticMatch evidence. Without semanticQuery or search, a default-sorted page emits an X-Next-Cursor keyset continuation; send it back as cursor, without sort, to read the next page.","tags":["people"],"parameters":[{"name":"page","in":"query","description":"Zero-based page index for offset paging; omit it for the first page. Ignored when cursor is sent: to continue a cursor traversal, send the X-Next-Cursor value as cursor and leave page out.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"countOnly","in":"query","description":"When true, return only the page total in the body and skip the content payload.","required":false,"schema":{"type":"boolean"}},{"name":"hasImageFirst","in":"query","description":"When true, sort people who have a photo before those who do not.","required":false,"schema":{"type":"boolean"}},{"name":"permitMonogram","in":"query","description":"When false, monogram fallback logos are stripped from the response. Defaults to true.","required":false,"schema":{"type":"boolean"}},{"name":"cursor","in":"query","description":"Opaque continuation from X-Next-Cursor. Repeat the same filters and size; a semantic cursor also repeats sort, a keyset cursor omits it.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePerson"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonFilter"}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}":{"get":{"operationId":"people_getPerson","summary":"Get One Person by ID","description":"Returns person detail by exact UUID. For an existing slug or profile URL, use GET /v1/people/lookup-exact. For a name, use POST /v1/people/search with personName, verify the candidates against identity evidence, then read the confirmed id. Use universal lookup only when its possible filing effect is intended. A signed-in user's read charges one view per distinct returned record against the monthly entity or person view allowance; a repeat read of the same record in the month is free, and an exhausted cap answers 429 with Retry-After.","tags":["people"],"parameters":[{"name":"personId","in":"path","description":"Exact person UUID.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"includeUrl","in":"query","description":"Include URL link values in the response (default: true). Set false to omit urlLink array.","required":false,"schema":{"type":"boolean"}},{"name":"includeAssociation","in":"query","description":"Include association values in the response (default: true). Set false to omit association array.","required":false,"schema":{"type":"boolean"}},{"name":"includeAddress","in":"query","description":"Include address values in the response (default: true). Set false to omit address array.","required":false,"schema":{"type":"boolean"}},{"name":"maxAssociations","in":"query","description":"Maximum association values to return; the server caps it at its own association limit. Default: 40.","required":false,"schema":{"type":"integer"}},{"name":"permitMonogram","in":"query","description":"Permit generated monogram photo fallback (default: true). Set false to exclude monogram photos in response.","required":false,"schema":{"type":"boolean"}},{"name":"include","in":"query","description":"Profile panels to embed in this one read (repeat or comma-separate). Each named panel answers the same rows as its own endpoint's first page; omitted panels stay absent.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonDetailInclude"}}}],"responses":{"200":{"description":"Person detail as canonical JSON or compact text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/graph":{"get":{"operationId":"people_getPersonGraph","summary":"Get Person Graph","description":"Returns the precomputed person-graph document: career context per associated entity (entity facts, recent news, colleagues, similar entities with key people) and co-investors. Lists are capped and pre-ranked; the response is the display order. Hidden people and entities are excluded at materialization. When no document has been materialized yet, returns empty lists with computedAt=null and schedules an asynchronous recompute.","tags":["people"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonGraph"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/investments":{"get":{"operationId":"personInvestments_listPersonInvestments","summary":"List a Person's Investments","description":"Returns a paginated investment portfolio for a person with investorAttribution. amountInvested appears only inside investorAttribution, is a plain decimal number in the fundraise transaction currency, and is not added to amount. Valid sort syntax is sort=amountInvested,desc; do not use investorAttribution.amountInvested, amount_invested, currency signs, currency codes, comma grouping, or abbreviated values. joinId (the investor join id) is always the final tiebreak sort key, so rows tied on every requested key keep one order across pages.","tags":["personInvestments"],"parameters":[{"name":"personId","in":"path","description":"Person unique identifier (UUID)","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"permitMonogram","in":"query","description":"Permit monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePersonInvestment"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/investor-activity":{"get":{"operationId":"personInvestments_getPersonInvestorActivity","summary":"Get Person Investor Activity","description":"Returns a summary of a person's investing (total investments, distinct portfolio companies, current portfolio count, exits, total amounts in USD, and their most common investment stages) for a person investor by personId. personId identifies the individual who supplied the capital — an angel or individual investor, not the company that raised the round.","tags":["personInvestments"],"parameters":[{"name":"personId","in":"path","description":"Person unique identifier (UUID)","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFundraiseInvestorActivity"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/filters":{"get":{"operationId":"personMetadata_listPersonFilters","summary":"List Person Filter Options","description":"Returns available people filter facets — the option inventory a filter can take (titles, statuses, and the like), not people; searching or listing people by title uses the people search and list operations with their filters.","tags":["personMetadata"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilterOptionSet"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/filters/search":{"get":{"operationId":"personMetadata_searchPersonFilters","summary":"Search People Filter Options","description":"Searches available people filter options.","tags":["personMetadata"],"parameters":[{"name":"filterKey","in":"query","description":"Filter key to search within","required":true,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Search keyword or phrase. Single characters valid; stop words rejected.","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page index is fixed to 0 for filter search","required":false,"schema":{"type":"integer"}},{"name":"size","in":"query","description":"The size of the page to be returned; filter-search default 20, maximum 100.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityFilterSearchResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/addresses":{"get":{"operationId":"personAddresses_listPersonAddresses","summary":"List a Person's Addresses","description":"Returns the person's physical addresses, each with every role it has held for them and the dates of each role.","tags":["personAddresses"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Address"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/addresses/{addressJoinId}":{"get":{"operationId":"personAddresses_getPersonAddress","summary":"Get One Person's Address","description":"Returns the physical address that this addressJoinId links to the person, with all of that address's roles.","tags":["personAddresses"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"addressJoinId","in":"path","description":"Integer person-address association id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Address"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/photo":{"get":{"operationId":"personPhoto_getPersonPhoto","summary":"Get Person Photo","description":"Returns the person's attached photo with where it came from; returns 404 when none is stored, so read presence from `core.image.picture` and `core.image.isMonogram` on `people get`.","tags":["personPhoto"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUpload"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/news":{"get":{"operationId":"news_listNews","summary":"List News Articles, Including a Company's or Person's News","description":"Browse recent news articles, newest published first unless sort says otherwise, with optional filtering. A company's news is this list filtered by owner.entityId (CLI --owner-entity-id): under the default sort, articles whose headline names the company (brand or alias) and were published within a recent window lead, then newest first; explicit sorts and text search are unchanged. A person's news is this list filtered by owner.personId (CLI --owner-person-id). This is the article list: the entities an article is about come from the semantic-similarity read, not here.","tags":["news"],"parameters":[{"name":"size","in":"query","description":"The size of the page to be returned; default 20 and maximum 25 for the standard list, where larger values are reduced to that maximum. Explicit newsId selections instead accept up to 200 articles per page. Entity, person, author-initial, and thin-mode reads accept larger pages.","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"search","in":"query","description":"Full-text news search term.","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","description":"News category slug to include or exclude.","required":false,"schema":{"type":"string"}},{"name":"owner.entityId","in":"query","description":"Owning entity id; set only when personId is absent.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"owner.personId","in":"query","description":"Owning person id; set only when entityId is absent.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"excludeId","in":"query","description":"Exclude one news article by id.","required":false,"schema":{"type":"integer"}},{"name":"publishedAfter","in":"query","description":"Earliest publication date, inclusive.","required":false,"schema":{"type":"string","format":"date"}},{"name":"publishedBefore","in":"query","description":"Latest publication date, inclusive.","required":false,"schema":{"type":"string","format":"date"}},{"name":"newsId","in":"query","description":"Return only these news article ids.","required":false,"schema":{"type":"array","items":{"type":"integer"}}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageNews"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/feedback":{"post":{"operationId":"news_createNewsFeedback","summary":"Submit News Feedback","description":"Records feedback on a news article.","tags":["news"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsFeedbackAcknowledgement"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsFeedback"}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/lookup":{"get":{"operationId":"news_lookupNews","summary":"Look Up One News Article","description":"Finds one news article by slug, external ID, URL, or its title (optionally narrowed by publication name or URL domain) and returns its detail. Use the numeric item route for an id; any id query is rejected. Canonical redirects are preserved.","tags":["news"],"parameters":[{"name":"slug","in":"query","description":"Exact news article slug (URL-friendly identifier). Mutually exclusive with id, externalId, url, and title.","required":false,"schema":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255}},{"name":"externalId","in":"query","description":"External ID or RSS GUID for ingestion-key lookup. Mutually exclusive with id, slug, url, and title.","required":false,"schema":{"type":"string"}},{"name":"url","in":"query","description":"Original article URL to resolve via strict host+path or domain-only match. Mutually exclusive with id, slug, and externalId. May pair with title and publication to narrow candidate recovery after an exact URL miss. Pair with urlMatchMode to disambiguate.","required":false,"schema":{"type":"string"}},{"name":"title","in":"query","description":"Candidate lookup signal: article title. Mutually exclusive with id, slug, and externalId. Combine with publication, urlDomain, or url for bounded candidate search.","required":false,"schema":{"type":"string"}},{"name":"publication","in":"query","description":"Publication qualifier (e.g., 'TechCrunch', 'Forbes'). Narrows a title candidate search. Not an identifier on its own.","required":false,"schema":{"type":"string"}},{"name":"urlDomain","in":"query","description":"Candidate lookup URL domain qualifier (host only, no path). Narrows a title candidate search. Not an identifier on its own.","required":false,"schema":{"type":"string"}},{"name":"urlMatchMode","in":"query","description":"URL match mode qualifier: 'hostPath' (strict host + path match, default) or 'domain' (host-only match). Narrows url and urlDomain matching. Not an identifier on its own.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"News detail as canonical JSON or compact text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Ambiguous candidate signals: more than one article still matches the supplied title/URL bundle. ProblemDetail carries details.newsCandidate; review those ids, update the matching article, and create only when all candidates are distinct and source evidence supports the target. score and threshold are review ranking, not absence proof. Resolve directly by id, slug, or externalId.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/subscriptions":{"get":{"operationId":"news_listNewsSubscriptions","summary":"List Entity News Subscriptions","description":"The caller's news webhook subscriptions with each one's delivery state. The signing secret is never returned; each item's subscription is the unsubscribe body.","tags":["news"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NewsSubscriptionDetail"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]},"put":{"operationId":"news_subscribeNewsSubscription","summary":"Subscribe to Entity News","description":"Creates or refreshes a webhook subscription to news newly linked to one entity. A new endpoint must echo a signed verification challenge before the subscription exists.","tags":["news"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubscriptionGrant"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubscription"}}}},"security":[{"bearerAuth":[]}]},"delete":{"operationId":"news_unsubscribeNewsSubscription","summary":"Unsubscribe From Entity News","description":"Removes the caller's webhook subscription with this event, entity, and url.","tags":["news"],"responses":{"204":{"description":"No Content","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubscriptionKey"}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/subscriptions/{subscriptionId}/test-events":{"post":{"operationId":"news_sendNewsSubscriptionTestEvent","summary":"Send a Test News Event","description":"POSTs one signed sample entity.news.published event to the caller's subscription url and returns the receiver's HTTP status. The cursor and retry state do not change. An unanswered POST answers 422 with its callback_* code.","tags":["news"],"parameters":[{"name":"subscriptionId","in":"path","description":"Subscription id from subscribe or list.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubscriptionTestEvent"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/{newsId}":{"get":{"operationId":"news_getNews","summary":"Get One News Article","description":"Returns news detail by exact positive ID. Use lookup for a slug, external ID, URL, or title.","tags":["news"],"parameters":[{"name":"newsId","in":"path","description":"Exact positive news article id.","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"News detail as canonical JSON or compact text.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/{newsId}/thumbnail":{"get":{"operationId":"newsThumbnail_getNewsThumbnail","summary":"Get News Thumbnail","description":"Returns the article's attached thumbnail with where it came from; returns 404 when none is stored, so read presence from `core.newsImageThumbnail` on `news get`.","tags":["newsThumbnail"],"parameters":[{"name":"newsId","in":"path","description":"Exact positive news article id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUpload"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/content":{"get":{"operationId":"publications_listContent","summary":"List Content","description":"Returns news articles, blog posts, repositories, websites, and pages related to one company (ownerEntityId) or person (ownerPersonId); omit both owners to page every owner's content. Any signed-in user may call this.","tags":["publications"],"parameters":[{"name":"topic","in":"query","description":"Topic key or source category.","required":false,"schema":{"type":"string"}},{"name":"contentType","in":"query","description":"Public content type filter.","required":false,"schema":{"$ref":"#/components/schemas/PublicationType"}},{"name":"relation","in":"query","description":"How the content relates to the entity or person.","required":false,"schema":{"$ref":"#/components/schemas/PublicationRelation"}},{"name":"year","in":"query","description":"Best-effort content year filter.","required":false,"schema":{"type":"integer"}},{"name":"ownerEntityId","in":"query","description":"Company whose publications to read; mutually exclusive with ownerPersonId.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"ownerPersonId","in":"query","description":"Person whose publications to read; mutually exclusive with ownerEntityId.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"existenceProbe","in":"query","description":"Set true on a first-page request when you only need to know whether any content exists; the response then skips the exact total and stable ordering.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePublication"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/content/facets":{"get":{"operationId":"publications_listContentFacets","summary":"Count One Owner's Publications","description":"Counts one entity's (ownerEntityId) or person's (ownerPersonId) publications by topic and content type across all of them, not just the current page. Send exactly one owner. Any signed-in user may call this.","tags":["publications"],"parameters":[{"name":"ownerEntityId","in":"query","description":"Company whose publications to read; mutually exclusive with ownerPersonId.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"ownerPersonId","in":"query","description":"Person whose publications to read; mutually exclusive with ownerEntityId.","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicationFacet"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/content/search":{"post":{"operationId":"publications_searchContent","summary":"Search Content","description":"Searches news, posts, repositories, sites, and papers published by or about one company (ownerEntityId) or person (ownerPersonId) from a plain-English query; omit both owners to search every owner's content. Any signed-in user may call this.","tags":["publications"],"parameters":[{"name":"ownerEntityId","in":"query","description":"Company whose publications to read; mutually exclusive with ownerPersonId.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"ownerPersonId","in":"query","description":"Person whose publications to read; mutually exclusive with ownerEntityId.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePublication"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NaturalSearch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/blog-posts":{"get":{"operationId":"researchBlogPosts_listEntityBlogPosts","summary":"List a Company's Blog Posts","description":"Returns active external blog post links. For news and press coverage, list news instead.","tags":["researchBlogPosts"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the blog post rows","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":10}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":["publishedAt,desc"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageBlogPost"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/blog-posts/{blogPostId}":{"get":{"operationId":"researchBlogPosts_getEntityBlogPost","summary":"Get One Company Blog Post","description":"Returns one of the entity's external blog post links by id. Any signed-in user may call this.","tags":["researchBlogPosts"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the blog post row","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"blogPostId","in":"path","description":"Blog post UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/blog-posts":{"get":{"operationId":"researchBlogPosts_listPersonBlogPosts","summary":"List a Person's Blog Posts","description":"Returns active external blog post links.","tags":["researchBlogPosts"],"parameters":[{"name":"personId","in":"path","description":"Person UUID owning the blog post rows","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":10}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":["publishedAt,desc"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageBlogPost"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/blog-posts/{blogPostId}":{"get":{"operationId":"researchBlogPosts_getPersonBlogPost","summary":"Get One Person Blog Post","description":"Returns one of the person's external blog post links by id. Any signed-in user may call this.","tags":["researchBlogPosts"],"parameters":[{"name":"personId","in":"path","description":"Person UUID owning the blog post row","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"blogPostId","in":"path","description":"Blog post UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/texts/types":{"get":{"operationId":"texts_listEntityTextTypes","summary":"List the Accepted Company Text Types","description":"Returns the text types an entity text can have.","tags":["texts"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TextTypeOption"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/texts":{"get":{"operationId":"texts_listEntityTexts","summary":"List a Company's Text","description":"Returns a page of the entity's texts. Inactive rows require read auth; private rows reach only admin callers.","tags":["texts"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the text rows","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityText"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/texts/{textId}":{"get":{"operationId":"texts_getEntityText","summary":"Get One Piece of Company Text","description":"Returns one of the entity's texts by id. Requires read auth.","tags":["texts"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the text row","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"textId","in":"path","description":"Text row id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityText"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/urls":{"get":{"operationId":"urlLinks_listEntityUrls","summary":"List a Company's URLs","description":"Returns a page of the entity's current primary URLs. Set includeInactive=true as a signed-in user or with read credentials to include secondary active and inactive/historical rows.","tags":["urlLinks"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the URL rows","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"includeInactive","in":"query","description":"Include secondary active and inactive/historical URL rows","required":false,"schema":{"type":"boolean","default":false}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityUrlLink"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/urls/{urlId}":{"get":{"operationId":"urlLinks_getEntityUrl","summary":"Get One Company URL","description":"Returns one of the entity's URLs by id. Requires read auth.","tags":["urlLinks"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the URL row","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"urlId","in":"path","description":"URL link id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityUrlLink"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/urls":{"get":{"operationId":"urlLinks_listPersonUrls","summary":"List Person URLs","description":"Returns a page of the person's current primary URLs. Set includeInactive=true as a signed-in user or with read credentials to include secondary active and inactive/historical rows.","tags":["urlLinks"],"parameters":[{"name":"personId","in":"path","description":"Person UUID owning the URL rows","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"includeInactive","in":"query","description":"Include secondary active and inactive/historical URL rows","required":false,"schema":{"type":"boolean","default":false}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntityUrlLink"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/urls/{urlId}":{"get":{"operationId":"urlLinks_getPersonUrl","summary":"Get One Person URL","description":"Returns one of the person's URLs by id. Requires read auth.","tags":["urlLinks"],"parameters":[{"name":"personId","in":"path","description":"Person UUID owning the URL row","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"urlId","in":"path","description":"URL link id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityUrlLink"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/url-types":{"get":{"operationId":"urlLinks_listUrlTypes","summary":"List URL Types","description":"Returns the URL types, and their accepted alternate spellings, that an entity or person URL can have. One list serves both entities and people; it writes nothing.","tags":["urlLinks"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UrlTypeAlias"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/repositories":{"get":{"operationId":"repositories_listEntityRepositories","summary":"List a Company's GitHub Repositories","description":"Returns the entity's synced GitHub repositories, paged. Default sort is stargazerCount desc, then name.","tags":["repositories"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID owning the repositories","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageGithubRepo"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/repositories":{"get":{"operationId":"repositories_listPersonRepositories","summary":"List a Person's GitHub Repositories","description":"Returns the person's synced GitHub repositories, paged. Default sort is stargazerCount desc, then name.","tags":["repositories"],"parameters":[{"name":"personId","in":"path","description":"Person UUID owning the repositories","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageGithubRepo"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lookup":{"post":{"operationId":"search_lookupRecord","summary":"Identify a Company, Product, Service, or Person by Name, URL, or ID","description":"Identifies the company, Product, Service, or person that a name, URL, or id refers to among the records you can see and may file a missing subject. Choose universal lookup only when that possible filing effect is intended. For an existing-record name read, use POST /v1/entities/search with entityName or POST /v1/people/search with personName (CLI entities search --entity-name or people search --person-name), compare candidate identity fields and evidenced URLs, then read the confirmed id. Search results are candidates, not identity verdicts; an empty result means no visible match for those filters, not permission to file. For an existing URL or slug, use GET /v1/entities/lookup-exact or GET /v1/people/lookup-exact. Send name, at least one url, or both; neither answers 422, and a name that is a URL is read as url. Optional clues narrow the answer: kind (ENTITY or PERSON) when you know which kind the subject is, typeRecord or productServiceProviderId for a Product or Service from a known provider, and context such as an employer or title. A name that is exactly a record's id, public handle, registry id (ticker, LEI, EIN), or slug answers at once. status is MATCHED, NEEDS_REVIEW, or NO_MATCH. MATCHED: match.owner names one record, by entityId (match.record.typeRecord tells a company from a Product or Service; read it with GET /v1/entities/{entityId}) or by personId (read it with GET /v1/people/{personId}). NEEDS_REVIEW: more than one record fits, such as a company and a person sharing a name; candidate lists them, and resending with a URL the subject owns or its kind usually settles it. NO_MATCH: no record you can see was confirmed as this subject; a former, alternate, or legal name may still match through the entityName array in the JSON body of POST /v1/entities/search (CLI entities search). With filing permitted, a NO_MATCH subject whose own site a web search finds, and whose live page names it, is added as a new record whose visibility follows canonical publication rules with its name, website, and logo, returned as created; adding it spends no research unit. Ordinary named shells are not researched automatically; explicit filing requests research only when research is also requested. An automatic URL-only lookup of one LinkedIn or X profile can instead file its captured owner without an own site; that profile use is deprecated: send the profile URL as sourceUrl to lookupMentions (POST /v1/lookup/mentions), which identifies and files its owner the same way; these requests answer with Deprecation and Sunset headers. For these profiles, omitted scheduleEnrichment uses app.lookup-mentions.profile-auto-enrich-enabled for new records and existing matches; true requests research and false never queues it. Requests restricted to existing records add nothing; exact=true, deterministic=true, and verifyUrl=true do not opt into automatic profile adoption or research by omission. Other existing matches require an explicit research request outside explicit filing. Queue research separately with POST /v1/entities/{entityId}/enrichments or POST /v1/people/{personId}/enrichments. Accept: text/event-stream streams the same answer as server-sent events. With exact=true, name is read only as an exact id, public handle, registry id, or slug: no model call, no web search, no quota spent, NEEDS_REVIEW listing each holder when several records share the identifier, and 404 when nothing matches. Example body: {\"name\":\"Acme AI\",\"url\":[\"https://acme.ai\"]}. In DEVELOPMENT, automatic record filing and matched-record research are disabled; nothing is filed automatically. Explicit filing and manual record enrichments and run APIs remain available. A signed-in caller that sends Prefer: respond-async gets 202 with a Location status URL instead: a lookup job runs this same identification without the live deadline, and GET /v1/lookup/jobs/{jobId} returns it as identification once COMPLETED. A repeat of the same request returns the same job while it is still PENDING or RUNNING.","tags":["search"],"parameters":[{"name":"exact","in":"query","description":"Treat name only as an exact id, public handle, registry id, or slug: no model call, no web search, and 404 when nothing matches; several records sharing the identifier answer NEEDS_REVIEW with each as a candidate. An exact match never spends the name-identification quota, with or without this flag.","required":false,"schema":{"type":"boolean"}},{"name":"legacy","in":"query","description":"Deprecated: send exact instead. Treat name only as an exact id, public handle, registry id, or slug: no model call, no web search, and 404 when nothing matches. An exact match never spends the name-identification quota, with or without this flag.","required":false,"schema":{"type":"boolean"},"deprecated":true},{"name":"scheduleEnrichment","in":"query","description":"On universal lookup, LinkedIn and X profiles use app.lookup-mentions.profile-auto-enrich-enabled when omitted; false never queues research. Other existing matches require true. Ordinary named shells are not researched automatically. In DEVELOPMENT, automatic record filing and matched-record research are disabled; nothing is filed automatically. Explicit filing and manual record enrichments and run APIs remain available.","required":false,"schema":{"type":"boolean"}},{"name":"verifyUrl","in":"query","description":"When true, the server fetches each submitted URL and returns its preferred form (for example with or without www) and the HTTP results; defaults to false.","required":false,"schema":{"type":"boolean"}},{"name":"deterministic","in":"query","description":"Skip web search, article fetching, semantic retrieval, and model judgment; defaults to false. Unresolved subjects return NEEDS_REVIEW when a scored candidate is plausible, otherwise NO_MATCH, at stage DETERMINISTIC.","required":false,"schema":{"type":"boolean","default":false}},{"name":"publishCreated","in":"query","description":"Set visibility only for a record this lookup creates: true makes it public, false keeps it hidden, and omission preserves the filing default. Existing records and suppression or duplicate checks are unaffected.","required":false,"schema":{"type":"boolean"}},{"name":"refreshLinkedin","in":"query","description":"When omitted, uses the signed-in user's saved refreshLinkedin search setting, which defaults to true; callers without a user account default to true. An explicit value overrides the saved choice, except that exact, deterministic, and verifyUrl lookups never refresh, even when true is sent. Import supported LinkedIn profile data before the lookup finishes. Set false to skip re-import when this exact profile is already linked; initial profile attachment and separately requested research are unchanged. Evidence follows the existing capture cache policy; this never forces a new capture. Company profiles attach their proven URL, fill an absent founding year, retain a dated employee count or size range, resolve an exact current industry label, and fill an absent operating headquarters address only from one unambiguous office. A missing description is composed and judged from retained evidence, never copied from About. Current curated descriptions, classifications and addresses are preserved; unsupported industry or address values remain capture evidence.","required":false,"schema":{"type":"boolean"}},{"name":"Prefer","in":"header","description":"Send respond-async to request a pollable lookup job; filing options are preserved.","required":false,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"Stable intake identity for requested status verification; reuse it to recover the accepted job.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The identification as canonical JSON or compact text/plain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Identification"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"Without a paid aVenture plan a caller gets a free daily allowance of name identifications per UTC day; past it the lookup answers 402 with code subscription_required (subscription_canceled, subscription_past_due, or subscription_paused when a plan lapsed), carrying limit, used, remaining, resetAt, and a Retry-After header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentificationSubject"}}}},"security":[{"bearerAuth":[]}]}},"/v1/lookup/jobs/{jobId}":{"get":{"operationId":"search_getLookupJob","summary":"Get a Lookup Job's State and the Records Its Article Names","description":"Returns the job state: 202 with Retry-After while PENDING or RUNNING, 200 once terminal. Once COMPLETED, it returns each identified name: MATCHED names the stored record, NEEDS_REVIEW lists candidates, and a failed name carries failureReason. Ordinary article jobs may include shell, enrichmentRunId, or shellDetail on NO_MATCH. Bulk jobs return maxNames and limitReached; reaching the bound means more names may remain. A single-subject job, filed by Prefer: respond-async on POST /v1/lookup with kind in the JSON body, or by a signed-in live lookup on that route that rolled over to a job, carries source.subject and, once COMPLETED, identification: the answer that route returns. Only the requesting caller can read the job.","tags":["search"],"parameters":[{"name":"jobId","in":"path","description":"Lookup job id from the create response.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"The job is terminal: COMPLETED, FAILED, or CANCELED.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupJob"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/lookup/mentions":{"post":{"operationId":"search_lookupMentions","summary":"Look Up a Profile, Post, Page, or File and Identify Every Company and Person It Names","description":"Looks up a pasted URL: a LinkedIn or X profile or post identifies the person or company it belongs to and can add that record when aVenture has none, and any other page identifies the companies and people it names. Use it to look up, identify, or add someone from a profile, post, or page URL; to research a record aVenture already holds, use POST /v1/research/runs. Reads a page (sourceUrl or sourceNewsId), a recorded document such as an email (sourceDocumentId, sent alone; read live with editor authority, or durably as your own captured PDF with Prefer: respond-async, source-read), a screenshot or PDF (multipart file part), or a page and screenshot, lists every company, organization, investor, and person it names, and identifies each one as POST /v1/lookup would, with the page as its source. A PDF's link annotation targets and printed URLs identify as URLs, and names from every readable text chunk identify as mentions under the same mention cap; names left out set truncated. A page fetched from sourceUrl first lists its own site's company, looked up by that site's URL, unless the site is a news outlet, a shared platform such as LinkedIn, or aVenture; when no record holds that site, it is added from the name the site declares, as POST /v1/lookup adds a URL. A caller that read the names itself sends them as mention instead, alone, so neither page nor screenshot leaves it. Answers within seconds: a name still identifying when the time is up carries failureReason instead of identification; send it alone to POST /v1/lookup. Each NO_MATCH name whose own site a web search finds, and whose live page names it, is added as a new record whose visibility follows canonical publication rules, queued for research as scheduleEnrichment says, and returned as shell; adding it spends no research unit, and a name not added carries shellDetail saying why. Without Prefer: respond-async, JSON and text answers await filing within the live deadline. Only callers sending Prefer: respond-async release the identifications with filing pending in a lookup job; poll filing.statusUrl and merge its mention rows by mentionType and name. The event stream sends each identification immediately and each committed shell before complete. Needs a signed-in user. Each name spends one name-identification quota slot, as POST /v1/lookup does; reading a page, screenshot, or PDF also spends one natural-search slot and the free daily lookup allowance (20 name lookups per UTC day), sending mention does neither. JSON body: {\"sourceUrl\":\"https://techcrunch.com/2024/01/01/example\"} or {\"mention\":[{\"name\":\"Visa\",\"type\":\"COMPANY\"}]}; multipart: a file part plus an optional JSON body part. With maxNames, the request answers 202 with a lookup-only bulk job instead: it identifies up to that many names from an article or mention names alone, adds no records, queues no research, spends one name-identification slot per bound name, and is read at GET /v1/lookup/jobs/{jobId}; the same request sent again soon reuses its paid job.","tags":["search"],"parameters":[{"name":"scheduleEnrichment","in":"query","description":"true queues research on each record this lookup adds and on supplied profiles. false never queues research. When omitted, LinkedIn and X profiles, including a social post author profile, use the automatic profile-enrichment policy; other records are added without research. Logo import and synchronous profile adoption can still run when research is disabled.","required":false,"schema":{"type":"boolean"}},{"name":"refreshLinkedin","in":"query","description":"When omitted, uses the signed-in user's saved refreshLinkedin search setting, which defaults to true; callers without a user account default to true. An explicit value overrides the saved choice, except that a deterministic source never refreshes, even when true is sent, and a maxNames bulk lookup ignores this value. Import supported LinkedIn profile data before the lookup finishes. Set false to skip re-import when this exact profile is already linked; initial profile attachment and separately requested research are unchanged. Evidence follows the existing capture cache policy; this never forces a new capture. Company profiles attach their proven URL, fill an absent founding year, retain a dated employee count or size range, resolve an exact current industry label, and fill an absent operating headquarters address only from one unambiguous office. A missing description is composed and judged from retained evidence, never copied from About. Current curated descriptions, classifications and addresses are preserved; unsupported industry or address values remain capture evidence.","required":false,"schema":{"type":"boolean"}},{"name":"maxNames","in":"query","description":"Opt in to lookup-only bulk; cap is 1 through app.jobs.lookup-job.bulk-mention-limit. Accepts an article or mention names alone; no shells or enrichment are scheduled.","required":false,"schema":{"type":"integer"}},{"name":"Prefer","in":"header","description":"Send respond-async to release identifications before shell filing completes; poll filing.statusUrl. A signed-in user can also send source-read with respond-async for durable source reading of a supported URL-only event-stream lookup, including cataloged news, LinkedIn or X profiles, and supported social posts, or of a PDF the caller captured in an aVenture app (its sourceDocumentId, sent alone), which any signed-in user may send this way and is metered as other durable source reads; another caller's capture answers 404. The source event describes the source; accepted carries sourceRead.continuation after the background lookup commits. Follow its caller-scoped statusUrl with Retry-After; accepted is not completion. An exact stored profile can still complete inline. Without both preferences, lookup starts live, but a supported source whose live attempt runs out of time or whose provider remains running can still continue in a caller-scoped lookup job, including for JSON responses.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MentionLookup"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupJobMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/search":{"post":{"operationId":"search_federated","summary":"Search Companies, People, and News Together","description":"Searches entities, people, and news in one request. Only the auto and keyword modes are accepted; other modes and sort are rejected. Omitted body defaults are the aventure.vc search page's request (suppress non-operating entities, 10 people, 4 news); the page also sends layer=synthesis, layer=web, and cacheMode use, so a client sending that request gets the page's result. Scope interpretations report execution; unsearchable scopes carry provenance.rejection; layer=synthesis adds a cited answer and relatedQuery. SSE opens with admitted after metering, settled has all scopes, revised adds pendingWebQuery results and synthesis without moving settled rows, complete is terminal; ids are revision:request-uuid from 0. JSON Last-Event-ID reads the exact retained terminal revision with the original request and caller, never searching on refusal. SSE resumes retained state; only SSE can retry an admitted failed answer. X-Aventure-Search-Resume: only refuses a missing continuation. Disconnects do not cancel admitted work. Incomplete SSE snapshots end in error; terminal failures carry disposition=TERMINAL. Headerless signed-in JSON with web waits for discovery and files minimum profiles. Full research is admitted separately under the caller's search setting and plan allowances, including late filings.","tags":["search"],"parameters":[{"name":"includePrivate","in":"query","description":"Send false for the aventure.vc search page's public view, or omit it for your default view, which already includes private fields when your account may see them. Never send true: it adds nothing and answers 403 without that permission.","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1}},{"name":"layer","in":"query","description":"Repeat to add layers. Synthesis cites this response's public entity records, passages, and news; other layers enrich entities while people and news run alongside.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchLayer"}}},{"name":"Last-Event-ID","in":"header","description":"Read this full SSE event id without searching.","required":false,"schema":{"type":"string"}},{"name":"X-Aventure-Search-Resume","in":"header","description":"Send `only` with Last-Event-ID to resume an earlier search stream; if it cannot be resumed, the request fails instead of starting a new search.","required":false,"schema":{"type":"string"}},{"name":"X-Tier","in":"header","description":"Send `batch` to run language-model steps on the lower-priority background tier; omit for live requests.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ranked matches across every federated record type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FederatedSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"An unentitled signed-in caller spends a free UTC-day search allowance. Once exhausted, 402 retains the subscription-status code and adds limit, used, remaining, and resetAt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FederatedNaturalSearch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/link":{"get":{"operationId":"search_link","summary":"Search From a Page URL","description":"Fetches the page at the supplied URL, identifies the single company, product, or person the page is primarily about, and returns entity, person, and news results for that name, together with the search query it built from the page. A page whose content cannot be read returns 404; a fetch or inference failure returns a problem (503 only when a retry can succeed), never an empty result. For direct URL-to-record identity resolution use the entities lookup operation with the url instead. Send `Prefer: respond-async` to skip the live wait: the search is committed as a link search job and the read answers 202 with a Location status URL and Retry-After; poll it. A repeat of a search that completed in the last few minutes answers 200 from its stored result. A failed job commit answers 503; a caller already holding the maximum active link searches gets 429.","tags":["search"],"parameters":[{"name":"url","in":"query","description":"Public article or page URL to search from","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1}},{"name":"Prefer","in":"header","description":"Send respond-async to request a pollable link search job.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Records reachable from the submitted link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"This search needs a paid aVenture plan; a caller without one gets 402 with code subscription_required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/link/jobs/{jobId}":{"get":{"operationId":"search_getLinkSearchJob","summary":"Get a Link Search Job","description":"Returns the result of a link search accepted with `Prefer: respond-async`. Answers 202 with Location and Retry-After while the job is pending or running, 200 with the search once it completes, the synchronous read's 404 or 422 when the page or URL was refused, and 503 when the job failed transiently; resubmit the search to retry. Runs and their stored results do not expire; an unknown job id returns 404.","tags":["search"],"parameters":[{"name":"jobId","in":"path","description":"Link search job UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Records reachable from the submitted link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"This search needs a paid aVenture plan; a caller without one gets 402 with code subscription_required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/shared":{"get":{"operationId":"search_listSharedSearch","summary":"List Shared Search Answers","description":"Returns the listing details of shared search answers, ordered by UUID, a page at a time; follow the returned cursor for the next page. Answer bodies and a total count are omitted to keep sitemap traversal independent of the total number or size of saved answers. Page must be zero; follow nextCursor.","tags":["search"],"parameters":[{"name":"page","in":"query","description":"Offset paging is not supported; omit page. Any value other than 0 returns 400. Send the previous response's nextCursor as cursor to read the next page.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"cursor","in":"query","description":"The previous page's nextCursor.","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorSliceSharedSearchList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"search_createSharedSearch","summary":"Share a Search Answer","description":"Runs the query against public records and saves its answer under the supplied UUID. Reusing the UUID with the same query returns the original answer; a different query is rejected. The saved answer survives query-cache expiry and is readable without authentication. No result supplied by a caller is accepted.","tags":["search"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSearchMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/shared/slug/{slug}":{"get":{"operationId":"search_getSharedSearchBySlug","summary":"Read a Shared Search by Slug","description":"Resolves the saved query slug used by the public search page.","tags":["search"],"parameters":[{"name":"slug","in":"path","description":"Shared search slug.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/shared/{id}":{"get":{"operationId":"search_getSharedSearch","summary":"Read a Shared Search Answer","description":"Returns the persisted public answer without running the query again.","tags":["search"],"parameters":[{"name":"id","in":"path","description":"Shared search UUID.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/web/search":{"post":{"operationId":"search_web","summary":"Search the Live Web","description":"Runs a live web search and returns its results, or a stored result when the same query was searched recently. Use it for external facts a stored record lacks, such as a publication or release date, press coverage, or an app-store listing. Each successful search uses one web search from the signed-in account's monthly allowance. Past it, a subscriber with additional usage on pays 2.5 cents per search; otherwise the call answers 429 with a usage-limit message and upgrade links. A query naming too few distinct words (a bare brand, or a brand plus an unquoted number) is refused with 422 before any charge; a quoted exact phrase, such as a registry number or amount, counts as one word, and a fully quoted exact name of at least two words counts on its own. Name what you are looking for and a disambiguator such as the domain. Set `provider` to EXA for Exa's instant search or EXA_DEEP for its slower, broader deep search; both answer synchronously. When the default search is still running after aVenture's live wait, the call answers 503 with Retry-After; send `Prefer: respond-async` to receive 202 with a Location status URL instead, and poll it after Retry-After. Neither charges an allowance search.","tags":["search"],"parameters":[{"name":"Idempotency-Key","in":"header","description":"Replay key for this account's exact search request, up to 255 characters","required":false,"schema":{"type":"string","pattern":"(?U)(?!\\s*$)[^\\p{Cc}]+","minLength":1,"maxLength":255}},{"name":"Prefer","in":"header","description":"Send respond-async to receive a pollable job when a live web search is still running; an Exa provider answers live.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Search"}}}},"security":[{"bearerAuth":[]}]}},"/v1/web/searches/jobs/{jobId}":{"get":{"operationId":"search_getWebSearchJob","summary":"Get an Async Web Search Job","description":"Reads the web-search job a `Prefer: respond-async` search accepted. Answers 200 with the finished search (charged like a search), 202 with Retry-After while the search is queued or running, 503 search_provider_error when the job ended without a result, and 404 for an unknown job. On that 503, follow the problem's disposition: TRANSIENT means the job ended before a provider answered, so send the search once more after Retry-After; TERMINAL means the provider refused this query or aVenture already retried it, so record the outage instead of resending it. Never starts or resubmits a provider search.","tags":["search"],"parameters":[{"name":"jobId","in":"path","description":"Web-search job UUID from the 202 response","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Finished web search; never cached by intermediaries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearch"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/natural/entities":{"post":{"operationId":"naturalSearch_searchNaturalEntities","summary":"Find Companies, Startups, and Investors in Natural Language","description":"Turns a plain-English search for companies, startups, investors, investment firms, or investment managers into a structured EntityFilter, runs it as a regular entity search, and returns both how the query was interpreted and a ranked page of matching entities. Unsupported constraints are named in the interpretation instead of being silently ignored. A description or company discovery question belongs here; explicit filter fields are hard constraints: they override planner values, while the planner fills fields left unset. Example: search.query 'AI infrastructure companies founded since 2020' with size=3. The query accepts plain English; size limits the page, page starts at 0, and filter.yearFoundedRange [{\"min\":2020}] imposes a hard founding-year constraint.","tags":["naturalSearch"],"parameters":[{"name":"permitMonogram","in":"query","description":"When false, generated monogram logos are stripped from entity rows.","required":false,"schema":{"type":"boolean"}},{"name":"layer","in":"query","description":"Optional answer layers to add beside the entity records; repeat to add more. `passage` ranks public research snippets and linked news that answer the question; `synthesis` adds a cited written answer and implies `passage`; `judgment` ranks a competitor, market, or provider question's answer by judged probability; `web` adds web evidence and the companies it names, and implies `judgment`.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchLayer"}}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Ranked entity matches for the interpreted query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NaturalSearchResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"An unentitled signed-in caller spends a free UTC-day search allowance. Once exhausted, 402 retains the subscription-status code and adds limit, used, remaining, and resetAt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityNaturalSearch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/search/natural/people":{"post":{"operationId":"naturalSearch_searchNaturalPeople","summary":"Find People With Natural Language","description":"Turns a plain-English people search into a structured PersonFilter, runs it as a regular people search, and returns both how the query was interpreted and a ranked page of matching people. Broad role, employer, work-history, and profile requests use person semantic search. Explicit filter fields are hard constraints: they override planner values, while the planner fills fields left unset.","tags":["naturalSearch"],"parameters":[{"name":"permitMonogram","in":"query","description":"When false, generated monogram pictures are stripped from person rows.","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Ranked person matches for the interpreted query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonNaturalSearchResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"An unentitled signed-in caller spends a free UTC-day search allowance. Once exhausted, 402 retains the subscription-status code and adds limit, used, remaining, and resetAt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonNaturalSearch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/directory/exports":{"post":{"operationId":"directory_createDirectoryExport","summary":"Export Directory Records","description":"Export up to 100 visible directory records as JSON, CSV or XLSX using Accept. Requires a paid plan with EXPORT access. Each company or investor row consumes ENTITY_VIEW; each person row consumes PERSON_VIEW, shared with detail views once per UTC month. Re-viewing or re-exporting the same record that month is free. Eligible overflow uses view additional usage at 2.5 US cents per row; a refused page charges nothing.","tags":["directory"],"responses":{"200":{"description":"A JSON export or an attachment in the negotiated CSV/XLSX representation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectoryExport"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectoryExportMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/directory/shared":{"get":{"operationId":"directory_listSharedDirectory","summary":"List Shared Directory Views","description":"Returns the listing details of shared directory views, ordered by UUID, a page at a time; follow the returned cursor for the next page. Filters and a total count are omitted. Page must be zero; follow nextCursor.","tags":["directory"],"parameters":[{"name":"page","in":"query","description":"Offset paging is not supported; omit page. Any value other than 0 returns 400. Send the previous response's nextCursor as cursor to read the next page.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"cursor","in":"query","description":"The previous page's nextCursor.","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorSliceSharedDirectoryList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"directory_createSharedDirectory","summary":"Share a Directory View","description":"Publishes the exact filter and sort a /companies, /investors, or /people page shows under the supplied UUID, with a model-written heading, title, and description. The view must match at least one public record and may set only public filter fields. Reusing the UUID with the same view, or sharing a view already published, returns that publication; a different view under a used UUID is rejected. Reading the publication through this API requires authentication.","tags":["directory"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedDirectory"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedDirectoryMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/directory/shared/slug/{slug}":{"get":{"operationId":"directory_getSharedDirectoryBySlug","summary":"Read a Shared Directory View by Slug","description":"Resolves the slug of a public /companies/shared, /investors/shared, or /people/shared page to its stored filter, sort, and page copy.","tags":["directory"],"parameters":[{"name":"slug","in":"path","description":"Shared directory view slug.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedDirectory"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/trending-news":{"get":{"operationId":"semanticSimilarity_listEntityTrendingNews","summary":"List Trending News About a Company","description":"Returns trending news semantically related to the company named by the entity id path parameter.","tags":["semanticSimilarity"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":10}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageNews"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/news/{newsId}/related-entities":{"get":{"operationId":"semanticSimilarity_listNewsRelatedEntities","summary":"List the Entities a News Article Is About","description":"Returns entities semantically related to a news article — the article's entity mentions, not a list of articles; the article list itself is the news list.","tags":["semanticSimilarity"],"parameters":[{"name":"newsId","in":"path","description":"News article id whose semantic neighbors should be returned.","required":true,"schema":{"type":"integer"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":10}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageEntity"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/similar":{"get":{"operationId":"semanticSimilarity_listPersonSimilarPeople","summary":"List People Similar to One Person","description":"Returns people similar to the person with this personId. Rows carry the person shape and per-row similarity provenance; load full detail through the person read endpoint. Stored rank is authoritative; photos break only contiguous equal-score ties. The Page total counts publicly readable people in the first 500 stored neighbors, independent of page size. Defaults to 20 rows; follow X-Next-Cursor only after an explicit more action. This endpoint does not support custom sorting. Any signed-in user may call this on every plan. The list is free: it never counts against the monthly record-view allowance, which charges only a separate full-detail view of one record.","tags":["semanticSimilarity"],"parameters":[{"name":"personId","in":"path","description":"Person unique identifier (UUID)","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"permitMonogram","in":"query","description":"Permit monogram fallback","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"cursor","in":"query","description":"Continuation from X-Next-Cursor; reuse the same person and size. A changed ranked roster returns 400; restart without cursor. Page is ignored with cursor.","required":false,"schema":{"type":"string"}},{"name":"X-Request-Origin","in":"header","description":"Label naming which app or page sent the request; used only for usage metrics and does not change results.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagePersonSimilarityResult"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/unique-ids":{"get":{"operationId":"identifiers_listEntityUniqueIds","summary":"List a Company's Identifiers","description":"Returns a page of this entity's or person's external identifiers. Sort by id, idType, identifier, createdAt, or updatedAt; default is updatedAt descending.","tags":["identifiers"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageUniqueId"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/unique-ids/{uniqueIdId}":{"get":{"operationId":"identifiers_getEntityUniqueId","summary":"Get One Company Identifier","description":"Returns one external identifier, after checking that it belongs to the entity or person in the path.","tags":["identifiers"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"uniqueIdId","in":"path","description":"Unique-id row id.","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UniqueId"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/unique-ids":{"get":{"operationId":"identifiers_listPersonUniqueIds","summary":"List a Person's Identifiers","description":"Returns a page of this entity's or person's external identifiers. Sort by id, idType, identifier, createdAt, or updatedAt; default is updatedAt descending.","tags":["identifiers"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"sort","in":"query","description":"Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageUniqueId"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/unique-ids/{uniqueIdId}":{"get":{"operationId":"identifiers_getPersonUniqueId","summary":"Get One Person Identifier","description":"Returns one external identifier, after checking that it belongs to the entity or person in the path.","tags":["identifiers"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"uniqueIdId","in":"path","description":"Unique-id row id.","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UniqueId"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/unique-ids/lookup":{"get":{"operationId":"identifiers_lookupUniqueId","summary":"Find Who an Identifier Belongs To","description":"Returns the entities or people that an external identifier belongs to. idType accepts a canonical token or alias; the value is normalized per type before matching. Returns every matching identifier row with its entityId or personId, including distinct ticker assignments for the same owner. Optional ticker source-fact filters match only supplied facts with exact source spelling and date precision. Omitted filters return all matches, never an inferred current listing.","tags":["identifiers"],"parameters":[{"name":"idType","in":"query","description":"Identifier type token or alias, for example ein.","required":true,"schema":{"type":"string"}},{"name":"identifier","in":"query","description":"Identifier value to resolve.","required":true,"schema":{"type":"string"}},{"name":"venue","in":"query","description":"Match the exact source-stated ticker venue, including case.","required":false,"schema":{"type":"string"}},{"name":"shareClass","in":"query","description":"Match the exact source-stated share class, including case.","required":false,"schema":{"type":"string"}},{"name":"listingStanding","in":"query","description":"Match the source-stated listing standing, not entity operating status.","required":false,"schema":{"$ref":"#/components/schemas/UniqueIdListingStanding"}},{"name":"standingAsOf","in":"query","description":"Match the standing assertion date at its supplied source precision.","required":false,"schema":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$"}},{"name":"effectiveFrom","in":"query","description":"Match the assignment beginning at its supplied source precision.","required":false,"schema":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$"}},{"name":"effectiveTo","in":"query","description":"Match the assignment end at its supplied source precision; omission does not mean current.","required":false,"schema":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UniqueId"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/unique-ids/types":{"get":{"operationId":"identifiers_listUniqueIdTypes","summary":"List the Accepted Unique Identifier Types","description":"Lists the recognized external identifier types (ein, secCik, ticker, lei, duns, isin, cusip, crd, orcid) with each type's label, accepted aliases, owner scope (entity and/or person), and the format pattern a value must match on write.","tags":["identifiers"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UniqueIdTypeAlias"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/slug":{"get":{"operationId":"recordSlugs_getEntitySlug","summary":"Get a Company's Slug","description":"Returns the current slug, canonical path, and public URL. Any signed-in user may call this.","tags":["recordSlugs"],"parameters":[{"name":"entityId","in":"path","description":"Entity UUID","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlugLocation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/classifications/catalog":{"get":{"operationId":"classificationTags_getClassificationCatalog","summary":"Get the Company Classification Taxonomy","description":"Returns active classification buckets and standardized categories with counts and accepted alias[] spellings, plus every active tag[] and standardized classification[] row unless includeTags=false. The full payload exceeds 1 MB: agents pass includeTags=false for metadata only, or bucketType to scope one bucket. To find one value, prefer the paginated classification tag list with category and q filters. Inactive tags are omitted.","tags":["classificationTags"],"parameters":[{"name":"bucketType","in":"query","description":"Filter editorial buckets by a returned type or alias (e.g. industry, typeCustomer, revenueModel). Case- and punctuation-insensitive. Does not filter standardized categories; use the classification tag list category filter for those.","required":false,"schema":{"type":"string"}},{"name":"includeTags","in":"query","description":"When false, returns bucket and category metadata and counts with empty tag[] and classification[] arrays. For one value, use the paginated classification tag list with category and q.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClassificationCatalog"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/classifications/tags":{"get":{"operationId":"classificationTags_listClassifications","summary":"List Classification Tags","description":"Returns a paginated list of editorial tags and standardized classifications. Filter by category using any bucket or standardized category spelling listed by the catalog, and by name with search. Sorting is not supported — sort returns 422.","tags":["classificationTags"],"parameters":[{"name":"category","in":"query","description":"Classification bucket or standardized category. Case- and punctuation-insensitive.","required":false,"schema":{"type":"string"}},{"name":"search","in":"query","description":"Case-insensitive name substring filter (e.g. 'enterprise').","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","description":"Deprecated alias for search.","required":false,"schema":{"type":"string"},"deprecated":true},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","minimum":1,"default":20}},{"name":"codeText","in":"query","description":"Exact supplied standardized code text; requires a standardized category.","required":false,"schema":{"type":"string"}},{"name":"code","in":"query","description":"Exact legacy numeric code; requires a standardized category.","required":false,"schema":{"type":"integer"}},{"name":"edition","in":"query","description":"Exact supplied edition; omitted imposes no edition constraint.","required":false,"schema":{"type":"string"}},{"name":"hasEdition","in":"query","description":"true selects recorded editions; false selects unknown edition.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageClassification"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/auth/api-key":{"get":{"operationId":"auth_getCurrentApiKey","summary":"Get Current API Key","description":"Returns details about the aVenture API key used for this request, as recorded by the sign-in provider.","tags":["auth"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"clerkApiKeyAuth":[]}]},"delete":{"operationId":"auth_revokeCurrentApiKey","summary":"Revoke Current API Key","description":"Revokes the aVenture API key authenticating this request and returns its metadata so the CLI can confirm revocation before deleting its saved copy.","tags":["auth"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"clerkApiKeyAuth":[]}]}},"/v1/auth/cli-authorizations":{"post":{"operationId":"auth_createCliAuthorization","summary":"Start CLI Authorization","description":"Starts a short-lived sign-in request for the CLI to approve in a browser, and returns the secret the CLI uses to check its status; the secret is shown only once.","tags":["auth"],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorizationStart"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorizationMutation"}}}}}},"/v1/auth/cli-authorizations/{cliAuthorizationId}/acknowledge":{"post":{"operationId":"auth_acknowledgeCliAuthorization","summary":"Acknowledge CLI Credential Delivery","description":"Confirms the CLI saved the delivered API key and deletes the server's temporary copy.","tags":["auth"],"parameters":[{"name":"cliAuthorizationId","in":"path","description":"Public CLI authorization request identifier","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cli-Poll-Secret","in":"header","description":"One-time poll credential returned by request creation","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorization"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/auth/cli-authorizations/{cliAuthorizationId}/poll":{"post":{"operationId":"auth_pollCliAuthorization","summary":"Poll CLI Authorization","description":"Returns whether the request is still pending or has finished, or, once it is approved, the encrypted API key, which can be delivered only once.","tags":["auth"],"parameters":[{"name":"cliAuthorizationId","in":"path","description":"Public CLI authorization request identifier","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cli-Poll-Secret","in":"header","description":"One-time poll credential returned by request creation","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Authorization is still pending or issuing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorizationPoll"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/auth/me/permissions":{"get":{"operationId":"auth_getCurrentAuthPermissions","summary":"Current User Permissions","description":"Returns the current caller's resolved roles and permissions.","tags":["auth"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthPermissionGrant"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"auth_authorizeOperations","summary":"Authorize API Operations","description":"Given a list of API operation ids, returns the ones the current caller may call, together with the caller's current permissions and access level. Candidate operations are checked without being executed.","tags":["auth"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthOperationAuthorization"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthOperationFilter"}}}},"security":[{"bearerAuth":[]}]}},"/v1/auth/providers":{"get":{"operationId":"auth_getAuthProviderCatalog","summary":"Get the Sign-In Options","description":"Sign-in options for the CLI and browser, readable before signing in. A non-null publishable key offers browser sign-in; a non-null OAuth client offers CLI sign-in.","tags":["auth"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthProviderCatalog"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/billing/additional-usage":{"patch":{"operationId":"billing_updateAdditionalUsage","summary":"Update Additional Usage Settings","description":"Turn metered usage past the monthly allowances on or off and choose how it is paid. PREPAID_CREDIT requires an entitled AI Plus or AI Pro subscription; USAGE_INVOICE also requires Stripe billing. Send {\"enabled\":false} to stop recording it. Returns the settings with this UTC month's priced usage.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAdditionalUsage"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAdditionalUsageMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/ai-credits":{"get":{"operationId":"billing_getAiCredits","summary":"Read the Current AI Credit Allowance","description":"AI credits are Researchly messages sent in Researchly's current billing period; the cap comes from the caller's tier and resetAt is Researchly's period end.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchAllowance"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/checkout-sessions":{"post":{"operationId":"billing_createBillingCheckoutSession","summary":"Create or Reuse a Checkout Session","description":"Start the selected AI Plus or AI Pro plan through Checkout: uiMode HOSTED_PAGE (the default) returns a hosted page url; ELEMENTS returns a clientSecret and publishableKey for the Payment Element in the caller's page. A caller with a continuing subscription changes plan with POST /v1/billing/plan-changes and cancels or resumes it with PATCH /v1/billing/subscription.","tags":["billing"],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckout"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/credit-purchases":{"post":{"operationId":"billing_createBillingCreditPurchase","summary":"Buy a Prepaid Additional Usage Credit Pack","description":"Creates a hosted Checkout Session for one credit pack, or returns the same one again for a repeated request; the paid amount becomes add-on credit for metered usage on an entitled eligible paid plan. Paid plan entitlements do not change. A repeated Idempotency-Key with the same pack returns the same Session.","tags":["billing"],"parameters":[{"name":"Idempotency-Key","in":"header","description":"Caller-chosen key, 1 to 255 characters, that makes a retry return the same Checkout Session instead of a second purchase.","required":true,"schema":{"type":"string","minLength":1,"maxLength":255}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCreditPurchase"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCreditPurchaseMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/credit-purchases/{purchaseId}":{"get":{"operationId":"billing_getBillingCreditPurchase","summary":"Read a Prepaid Credit Purchase Confirmation","description":"Returns the purchase amount and when the credit was added to your account, or when the purchase was closed.","tags":["billing"],"parameters":[{"name":"purchaseId","in":"path","description":"Purchase identity returned by prepaid credit checkout.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCreditPurchaseConfirmation"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/plan-change-previews":{"post":{"operationId":"billing_createBillingPlanChangePreview","summary":"Preview a Subscription Plan Change","description":"Show what POST /v1/billing/plan-changes would do for the same plan without changing anything: the amount charged on confirmation, when the plan takes effect, the recurring price after it, and the card on file. Refuses exactly what the plan change refuses.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPlanChangePreview"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPlanChangeMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/plan-changes":{"post":{"operationId":"billing_createBillingPlanChange","summary":"Change the Subscription Plan","description":"Move an active AI Plus or AI Pro subscription to another plan. A higher tier or a longer billing period applies now and invoices the prorated difference; paymentUrl is set when that invoice needs the customer to pay before the change applies; paymentClientSecret lets Stripe.js finish that payment in the page instead. Any other change takes effect at the current period end. Sending the current plan cancels a scheduled change. Any change resumes a subscription that was set to end at the period end.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPlanChange"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPlanChangeMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/plans":{"get":{"operationId":"billing_listPlans","summary":"List Subscription Tiers and Plans","description":"Return every self-serve tier with its monthly allowance caps and every Checkout plan with its monthly and annual recurring prices.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCatalog"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/billing/portal-sessions":{"post":{"operationId":"billing_createBillingPortalSession","summary":"Create a Hosted Billing Portal Session","description":"Open the authenticated user's hosted billing portal for payment methods, invoices, and billing details. The body is optional; flow PAYMENT_METHOD_UPDATE opens straight to updating the card.","tags":["billing"],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortal"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortalMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/subscription":{"get":{"operationId":"billing_getBillingSubscription","summary":"Read the Current Billing Subscription","description":"Returns your Essential, AI Plus, AI Pro, or Unlimited subscription (with sensitive payment details removed), what it entitles you to, monthly allowance usage, and additional usage spent and available.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscription"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"operationId":"billing_updateBillingSubscription","summary":"Cancel or Resume the Subscription","description":"Set cancelAtPeriodEnd to true to end an active AI Plus or AI Pro subscription at the current period end; a scheduled plan change is dropped. Set it to false to resume the subscription and restore the plan change scheduled before the cancellation. Set paused to false to resume a PAUSED subscription, which Stripe pauses when a trial ends without a payment method: add one first with POST /v1/billing/portal-sessions, since a resume without one is refused; the resumption invoices the plan and starts a new period now. Read the result with GET /v1/billing/subscription.","tags":["billing"],"responses":{"204":{"description":"No Content","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSubscriptionMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/subscription/next-charge":{"get":{"operationId":"billing_getBillingNextCharge","summary":"Preview the Next Subscription Charge","description":"Return what the next invoice of the caller's renewing Stripe subscription will charge and when, after coupons and credits, so a fully discounted plan reads 0. Read live from Stripe and never stored. 404 when the caller has no renewing Stripe subscription (none, cancelling, or App Store); 503 when Stripe is unavailable.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingNextCharge"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/billing/subscription/payment-profile":{"get":{"operationId":"billing_getBillingPaymentProfile","summary":"Read Your Card on File and Introductory Offer","description":"Return the card paying the caller's continuing Stripe subscription (brand, last four digits, expiry) and whether Checkout would charge each plan's introductoryAmount from GET /v1/billing/plans on the first payment, which only an account the App Store does not bill, with no earlier subscription, payment, or unvoided invoice, gets. Read live from Stripe and never stored; 503 when Stripe is unavailable.","tags":["billing"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPaymentProfile"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/agent/suggestions":{"get":{"operationId":"agents_suggestions","summary":"List Suggested Agent Questions","description":"Returns up to 12 prepared suggested-question buttons for the Agent tab's empty thread page: companies with funding announced in the past week first, then companies in the week's news, one per company. The set is computed from public records and refreshes about every 3 hours; an empty list is a normal response.","tags":["agents"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSuggestionList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/help":{"post":{"operationId":"agents_askHelpQuestion","summary":"Answer a Natural-Language Platform Help Question","description":"Answers a question about how to use aVenture, citing the operations it draws on. A question it cannot answer returns LOW confidence instead of a guessed command. With resolve, it returns a recommended operation or workflow, or a clarifying question, instead of a written answer, under its own per-account limit. Free for every signed-in account.","tags":["agents"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentHelp"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentHelpQuestion"}}}},"security":[{"bearerAuth":[]}]}},"/v1/enrichments":{"post":{"operationId":"researchRuns_enrichRecords","summary":"Enrich Companies, People, or a News Article's Mentions","description":"Queues one research run for each distinct entity and person in the request, in the order sent, including the entities and people each newsId's article identifies and links (see the request body fields). Runs belong to the principal and are billed like the single-record calls. Returns each record's run or typed refusal; other records still file, and runs already filed stay queued. Without userPrompt, a record already being researched, or researched within the last 24 hours, files nothing while the other records still file, and the request then answers 429 whose filedRunId lists the runs it filed; with userPrompt, that record's run queues behind the active run or starts now. Filing needs an entitled research subscription; prepaid credit only extends an eligible paid plan's allowance. A billing refusal reports ALLOWANCE_EXHAUSTED or SUBSCRIPTION_REQUIRED and no run is filed. A research-gate 402 files no run. A transient failure fails the request; retrying it reuses runs still in progress without charging them again. A list longer than the configured batch limit files only its first records up to that limit and returns no outcome for the rest, so compare the outcomes with the entityId and personId sent to find records to send again. A newsId list naming more articles than that limit is refused before any run is filed. Check each run's progress with GET /v1/research/runs/{runId} (CLI: research runs get).","tags":["researchRuns"],"parameters":[{"name":"Prefer","in":"header","description":"Request run-execution-direct to accept DIRECT run bodies with absent engine metadata; run-lane-origin independently selects actual lane values. Neither preference grants authorization or changes stored execution. Without DIRECT capability, full-run lists select only ENGINE or legacy-null execution; authorized incompatible results return 409 before mutation. Selected preferences are acknowledged in Preference-Applied; responses vary by Prefer.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Enrichment"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"Needs an entitled plan that includes research runs; prepaid credit extends an eligible paid plan's allowance. A plan that stopped covering them gets 402 with code subscription_required (subscription_past_due or subscription_paused when a plan lapsed), as does prepaid credit an unpaid usage invoice blocks. A newsId batch also needs lookup entitlement once its free daily lookup allowance is spent, even with prepaid research credit; that refusal uses subscription_required, subscription_canceled, subscription_past_due, or subscription_paused according to the subscription status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichmentBatch"}}}},"security":[{"bearerAuth":[]}]}},"/v1/entities/{entityId}/enrichments":{"post":{"operationId":"researchRuns_enrichEntity","summary":"Enrich One Company, Product, or Service","description":"Queues a research run for this entity; the run belongs to the authenticated caller. Take entityId from match.owner when POST /v1/lookup with kind ENTITY returns MATCHED (CLI: lookup --kind ENTITY --name \"<name>\" --data). The body documents finding for verbatim source facts and userPrompt for other updates and source URLs. Your own queued or running run for this entity is returned instead of queuing and charging another. While another run for it is queued or running, a request with userPrompt queues a run that starts after it, and one without answers 429 and files nothing; a new run reserves one `company` research unit from the plan's research allowance, spent only once the run saves a research write and returned when it ends without one. After the run completes, read the updated profile with GET /v1/entities/{entityId} (CLI: entities get). Check the run's progress with GET /v1/research/runs/{runId} (CLI: research runs get).","tags":["researchRuns"],"parameters":[{"name":"entityId","in":"path","description":"Entity id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"mode","in":"query","description":"COMPREHENSIVE (the default) researches the whole profile; INDIVIDUAL runs only the tasks named in taskPresetKey.","required":false,"schema":{"$ref":"#/components/schemas/EnrichmentMode"}},{"name":"model","in":"query","description":"Model id for the run's lead agent; omit to use aVenture's default model.","required":false,"schema":{"type":"string"}},{"name":"userPrompt","in":"query","description":"Deprecated: send userPrompt in the JSON body. Used only when the body carries no userPrompt; longer than 2000 characters is refused with 400.","required":false,"schema":{"type":"string"},"deprecated":true},{"name":"taskPresetKey","in":"query","description":"Research presets that focus the run, listed by GET /v1/research/runs/presets; at least one is required when mode is INDIVIDUAL, and an unknown key is a 400.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"Prefer","in":"header","description":"Request run-execution-direct to accept DIRECT run bodies with absent engine metadata; run-lane-origin independently selects actual lane values. Neither preference grants authorization or changes stored execution. Without DIRECT capability, full-run lists select only ENGINE or legacy-null execution; authorized incompatible results return 409 before mutation. Selected preferences are acknowledged in Preference-Applied; responses vary by Prefer.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"Needs an entitled plan that includes research runs; prepaid credit extends an eligible paid plan's allowance. A plan that stopped covering them gets 402 with code subscription_required (subscription_past_due or subscription_paused when a plan lapsed), as does prepaid credit an unpaid usage invoice blocks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichmentPrompt"}}}},"security":[{"bearerAuth":[]}]}},"/v1/people/{personId}/enrichments":{"post":{"operationId":"researchRuns_enrichPerson","summary":"Enrich One Person","description":"Queues a research run for this person; the run belongs to the authenticated caller. Take personId from match.owner when POST /v1/lookup with kind PERSON returns MATCHED (CLI: lookup --kind PERSON --name \"<name>\" --data); the body documents userPrompt. Your own queued or running run for this person is returned instead of queuing and charging another. While another run for it is queued or running, a request with userPrompt queues a run that starts after it, and one without answers 429 and files nothing; a new run reserves one `person` research unit from the plan's research allowance, spent only once the run saves a research write and returned when it ends without one. After the run completes, read the updated profile with GET /v1/people/{personId} (CLI: people get). Check the run's progress with GET /v1/research/runs/{runId} (CLI: research runs get).","tags":["researchRuns"],"parameters":[{"name":"personId","in":"path","description":"Person id (UUID).","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"mode","in":"query","description":"COMPREHENSIVE (the default) researches the whole profile; INDIVIDUAL runs only the tasks named in taskPresetKey.","required":false,"schema":{"$ref":"#/components/schemas/EnrichmentMode"}},{"name":"model","in":"query","description":"Model id for the run's lead agent; omit to use aVenture's default model.","required":false,"schema":{"type":"string"}},{"name":"userPrompt","in":"query","description":"Deprecated: send userPrompt in the JSON body. Used only when the body carries no userPrompt; longer than 2000 characters is refused with 400.","required":false,"schema":{"type":"string"},"deprecated":true},{"name":"taskPresetKey","in":"query","description":"Research presets that focus the run, listed by GET /v1/research/runs/presets; at least one is required when mode is INDIVIDUAL, and an unknown key is a 400.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"Prefer","in":"header","description":"Request run-execution-direct to accept DIRECT run bodies with absent engine metadata; run-lane-origin independently selects actual lane values. Neither preference grants authorization or changes stored execution. Without DIRECT capability, full-run lists select only ENGINE or legacy-null execution; authorized incompatible results return 409 before mutation. Selected preferences are acknowledged in Preference-Applied; responses vary by Prefer.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"Needs an entitled plan that includes research runs; prepaid credit extends an eligible paid plan's allowance. A plan that stopped covering them gets 402 with code subscription_required (subscription_past_due or subscription_paused when a plan lapsed), as does prepaid credit an unpaid usage invoice blocks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonEnrichmentPrompt"}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs":{"get":{"operationId":"researchRuns_listResearchRuns","summary":"List Your Research Runs","description":"Read research runs newest first; filter by entitySlug and taskPresetKey. An admin API key or admin bearer credential addresses every run and receives the privileged projection; any other authenticated caller addresses only runs it owns. FULL totalElements stops at 5201; that means at least that many matches. Continue with X-Next-Cursor; a cursor ignores page. Read one run with getResearchRun. view=SUMMARY returns at most size compact rows (no total or blob columns, size capped at 50). Reads use no research allowance. SUMMARY lane is admission (interactive/background); Prefer: run-lane-origin returns the actual queue lane.","tags":["researchRuns"],"parameters":[{"name":"entitySlug","in":"query","description":"Entity slug the run targets; omit for all your runs.","required":false,"schema":{"type":"string"}},{"name":"taskPresetKey","in":"query","description":"Research presets to include (listResearchRunPresets keys); omit for all.","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","minimum":0}},{"name":"size","in":"query","description":"Runs per page; maximum 200.","required":false,"schema":{"type":"integer","minimum":1}},{"name":"cursor","in":"query","description":"Opaque URL-safe cursor token from X-Next-Cursor. Reuse the same filters and sort.","required":false,"schema":{"type":"string"}},{"name":"view","in":"query","description":"FULL (default) pages full run rows; SUMMARY returns compact rows for polling","required":false,"schema":{"$ref":"#/components/schemas/ResearchRunView"}},{"name":"Prefer","in":"header","description":"Request run-execution-direct to accept DIRECT run bodies with absent engine metadata; run-lane-origin independently selects actual lane values. Neither preference grants authorization or changes stored execution. Without DIRECT capability, full-run lists select only ENGINE or legacy-null execution; authorized incompatible results return 409 before mutation. Selected preferences are acknowledged in Preference-Applied; responses vary by Prefer.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageHarnessRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]},"post":{"operationId":"researchRuns_createResearchRun","summary":"Research a Company or Person by URL","description":"Files a research request for the subject at url and returns its caller-owned run. Research also adds a new profile for a subject that POST /v1/lookup did not find. A new run reserves one `company` or `person` research unit, named by the run's researchAllowanceType and spent only once the run saves research and returned when it ends without any. Sending the same url again, with the same mode and presets, while your run for it is queued or running returns that run, uncharged; while the run has not started, a full-research request adds userPrompt to its request, and a task-specific request replaces its prompt on an exact URL match. The prompt limit applies to each submitted note, not their combined length. Notes are compared whole; consecutive blank lines in userPrompt are stored as one. After the run has started, including a requeued run, a note it does not hold is not added and returns 429; repeating a note it already holds reuses it. Without userPrompt, a record is researched at most once per rolling 24 hours across all callers: another spelling of a subject being researched, or researched inside that window, files and charges nothing and answers 429 saying what to do; with userPrompt it files, behind the active run or at once after a completion. A url that matches more than one record answers 409, and a spent allowance answers 429. A url that names someone other than the subject (a platform or publisher page, a parked or for-sale host, or an article) answers 422 before anything is filed or charged; its problem detail names what to send instead. A url naming a record you cannot read answers 404, filing and charging nothing. You may set only url, name, model, mode, userPrompt, taskPresetKey, taskInput, and finding; any other field is refused with 403, and a userPrompt longer than 2000 characters is refused with 400. Follow progress with GET /v1/research/runs/{runId}; you are notified when the run completes. The url names a stored record your account cannot read; nothing is filed or charged.","tags":["researchRuns"],"parameters":[{"name":"Prefer","in":"header","description":"Request run-execution-direct to accept DIRECT run bodies with absent engine metadata; run-lane-origin independently selects actual lane values. Neither preference grants authorization or changes stored execution. Without DIRECT capability, full-run lists select only ENGINE or legacy-null execution; authorized incompatible results return 409 before mutation. Selected preferences are acknowledged in Preference-Applied; responses vary by Prefer.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Filed run; Vary includes Prefer; Preference-Applied is run-lane-origin if requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"402":{"description":"Needs an entitled plan that includes research runs; prepaid credit extends an eligible paid plan's allowance. A plan that stopped covering them gets 402 with code subscription_required (subscription_past_due or subscription_paused when a plan lapsed), as does prepaid credit an unpaid usage invoice blocks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRunCreate"}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/presets":{"get":{"operationId":"researchRuns_listResearchRunPresets","summary":"List Research Presets","description":"Lists the presets you may send as taskPresetKey when you request research. Each preset's key is the value to send, and its name says what the run does. Every preset listed to a subscriber applies the facts you send in finding: the run checks each quote against its page and writes only the facts it confirms. An operator credential lists every preset, with prompts and agent-task keys.","tags":["researchRuns"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentTaskPresetCatalog"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}":{"get":{"operationId":"researchRuns_getResearchRun","summary":"Get One Research Run","description":"Returns one of your research runs with its status, latest progress, and, once available, the resulting profile and its public URL. An admin API key or admin bearer credential addresses every run and receives the privileged projection; any other authenticated caller addresses only runs it owns.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Prefer","in":"header","description":"Request run-execution-direct to accept DIRECT run bodies with absent engine metadata; run-lane-origin independently selects actual lane values. Neither preference grants authorization or changes stored execution. Without DIRECT capability, full-run lists select only ENGINE or legacy-null execution; authorized incompatible results return 409 before mutation. Selected preferences are acknowledged in Preference-Applied; responses vary by Prefer.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRunDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}/draft":{"get":{"operationId":"researchRuns_getResearchRunDraft","summary":"Get a Research Run Draft","description":"Read the latest private draft of a research run you own. Version is zero before the first section edit; use the returned version when editing a section.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityAnalysisDraft"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}/draft/sections/{sectionKey}":{"put":{"operationId":"researchRuns_putResearchRunDraftSection","summary":"Edit a Research Draft Section","description":"Replace one section of your run's private draft and publish it when accepted. The section key must equal the path key and an exact research snippet typeValue. Supply writerBrief instead of paragraph to use the shared prose writer's accepted text with its author-model provenance; paragraph edits are judged before publication. Both modes validate citations, applicability, figures, and restatement. Rejected sections remain in the draft; verification in the response and run event records the failure. A stale expectedVersion returns 409 without changing the draft. Read your draft's latest version before retrying. Editing an existing run uses no additional research allowance.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"sectionKey","in":"path","description":"Exact research snippet typeValue, matching the section body key.","required":true,"schema":{"type":"string"}},{"name":"expectedVersion","in":"query","description":"Version returned by the draft read; zero before the first edit.","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Draft updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityAnalysisDraft"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityAnalysisSectionMutation"}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}/draft/sections/{sectionKey}/writes/{writeId}":{"get":{"operationId":"researchRuns_getResearchRunDraftSectionWrite","summary":"Get a Research Draft Section Write","description":"Collects a writer-brief section edit the PUT filed as a background write; its 202 Location names it. Answers 202 while the writer runs, 200 with the draft at the version the write produced, 409 when the draft changed first, 422 when the writer refused the brief, and 503 when the write ended without a draft (re-send the edit). Only the caller that filed it may read it.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"sectionKey","in":"path","description":"Section key the write targets","required":true,"schema":{"type":"string"}},{"name":"writeId","in":"path","description":"Section write id from the PUT's Location","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Draft written","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityAnalysisDraft"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}/draft/sources":{"get":{"operationId":"researchRuns_getResearchRunDraftSources","summary":"Get a Research Draft's Sources","description":"Read the distinct source documents cited by your run's latest private draft, with public page URLs and fetch times when available.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisSource"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}/events":{"get":{"operationId":"researchRuns_listResearchRunEvents","summary":"Read a Research Run's Events","description":"Read only this run's events in ascending sequence order. Write authority reads any run getResearchRun returns unless it sends scope=OWN; any other caller must own the run or use its own credential. The first page captures a bounded snapshot; continue with nextCursor to finish that snapshot. There is no total count. Reading events uses no research allowance. With Accept: text/event-stream, eligible public readers receive safe activity; owners and the run credential also receive raw events. Last-Event-ID overrides afterSeq for SSE; both are ignored for JSON. Request run-terminal-decision to read the stored terminal decision event payload. Without this preference, the same event row contains the compatible empty agent envelope. Event identity, sequence, time and paging cursors are unchanged. The preference grants no access; responses vary by Prefer and acknowledge it in Preference-Applied.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"afterSeq","in":"query","description":"SSE only: resume after this event sequence; ignored for JSON.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","description":"Opaque nextCursor returned by the previous event page.","required":false,"schema":{"type":"string"}},{"name":"size","in":"query","description":"Events per page; maximum 100.","required":false,"schema":{"type":"integer","default":20}},{"name":"Last-Event-ID","in":"header","description":"SSE only: last event sequence; overrides afterSeq; ignored for JSON.","required":false,"schema":{"type":"integer","minimum":0}},{"name":"Prefer","in":"header","description":"Request run-terminal-decision to read the stored terminal decision event payload. Without this preference, the same event row contains the compatible empty agent envelope. Event identity, sequence, time and paging cursors are unchanged. The preference grants no access; responses vary by Prefer and acknowledge it in Preference-Applied.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorSliceHarnessRunEvent"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"security":[{"bearerAuth":[]}]}},"/v1/research/runs/{runId}/turns":{"post":{"operationId":"researchRuns_createResearchRunTurn","summary":"Continue a Research Session","description":"Ask a question or request a research section in one of your research sessions that has not finished. Send exactly one of nonblank text or invocation. RENDER_SECTION needs an exact research snippet typeValue as sectionKey. Text and instructions must fit the session's character limit. Only your own sign-in or user API key may submit a turn; machine credentials cannot. Continuing an existing session uses no additional research allowance.","tags":["researchRuns"],"parameters":[{"name":"runId","in":"path","description":"Research run id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRunEvent"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HarnessRunTurn"}}}},"security":[{"bearerAuth":[]}]}},"/info":{"get":{"operationId":"system_getSystemBuild","summary":"Get Build Metadata","description":"Returns the running build's version, build time, and source revision","tags":["system"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemBuild"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/v1/metrics":{"get":{"operationId":"system_getSystemGlobalMetrics","summary":"Get Platform Totals for Companies, Funding, and People","description":"Returns current platform-wide totals: companies tracked (companies and investment firms combined), total funding, trailing 30-day funding, investors, people, countries, cities. Totals are a periodically refreshed snapshot, so they can trail recent changes.","tags":["system"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemGlobalMetrics"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}},"tags":[{"name":"entities","description":"Companies and funds: people, funding, and news"},{"name":"entityFilters","description":"Filter options for company listings: available values, refinement, and option search."},{"name":"entityFundraise","description":"Funding rounds, their investors, and valuations for a company"},{"name":"entityPersonAssociations","description":"People linked to companies, and the role each one holds"},{"name":"entityRelationships","description":"Relationships between companies, investors, and other organizations"},{"name":"entityAcquisitions","description":"Acquisitions a company made or was part of. By default, the entity in the request path is the one acquired; acquirerEntityId is the buyer."},{"name":"entityClassifications","description":"Classification tags on a company, and suggested tags"},{"name":"entityAddresses","description":"A company's recorded office and headquarters addresses"},{"name":"addresses","description":"Address validation and location directories"},{"name":"contactDetails","description":"Email and phone contacts of companies and people"},{"name":"entityLogo","description":"A company's square and standard logos"},{"name":"entityResearch","description":"Company research: typed details and snippets, headcount over time, SEC filing facts, and how complete each company's research is"},{"name":"entitySimilar","description":"Similar companies, as full records or short summaries, by id"},{"name":"entityMaintenance","description":"Accepted record types, such as Company and Investment Firm"},{"name":"people","description":"Founders and investors, and what they back"},{"name":"personInvestments","description":"The investments a person made, looked up by id or slug and sortable by date, round, or amount"},{"name":"personMetadata","description":"Filter options for people listings and option search"},{"name":"personAddresses","description":"A person's recorded addresses"},{"name":"personPhoto","description":"A person's profile photo"},{"name":"news","description":"News linked to the companies and people in it"},{"name":"newsThumbnail","description":"A news article's thumbnail image"},{"name":"publications","description":"Publications about one company or person, and platform-wide publication search"},{"name":"researchBlogPosts","description":"External blog and article links for entities and people"},{"name":"texts","description":"Descriptions and other written text for companies and people"},{"name":"urlLinks","description":"Websites, social profiles, and other URLs for companies and people"},{"name":"repositories","description":"GitHub repositories synced for each entity or person."},{"name":"search","description":"Search companies, people, and news, or by URL"},{"name":"naturalSearch","description":"Find companies and people in natural language"},{"name":"directory","description":"Views of the public directories: publish, list, and read shared views by slug, and export a view's rows as JSON, CSV, or XLSX"},{"name":"semanticSimilarity","description":"Similar companies and people, related entities, and trending news"},{"name":"identifiers","description":"External identifiers and the records they name. Covers EIN, SEC CIK, ticker, LEI, DUNS, and other identifiers for companies and people, plus finding the company or person an identifier belongs to."},{"name":"recordSlugs","description":"A record's current slug, and slug changes that leave a permanent redirect"},{"name":"classificationTags","description":"Browse the classification taxonomy and search classification tags by category and name."},{"name":"auth","description":"Sign-in, session, API key, and CLI authorization endpoints"},{"name":"billing","description":"Plans, prices, subscription, usage, and upgrades"},{"name":"agents","description":"Platform help, versioned agent instructions, and agent runtime discovery"},{"name":"researchRuns","description":"Research requests you file for a company, Product, Service, or person, and their progress."},{"name":"system","description":"Service status, build version, and platform totals"}],"servers":[{"url":"https://api.aventure.vc","description":"aVenture API"}],"webhooks":{"news_entityNewsPublished":{"post":{"operationId":"news_entityNewsPublished","summary":"News Published to an Entity","description":"One public news article newly linked to the subscribed entity, POSTed with Standard Webhooks webhook-id, webhook-timestamp, and webhook-signature headers plus X-MCP-Subscription-Id. Any 2xx acknowledges it.","responses":{"200":{"description":"Webhook received successfully"}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsPublishedEvent"}}}}}}},"components":{"schemas":{"EntityDetailBatch":{"type":"object","properties":{"entityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Entity UUID values"},"permitMonogram":{"type":["boolean","null"],"default":true,"description":"Permit monogram fallbacks"},"slug":{"type":"array","items":{"type":"string"},"description":"Entity slug values"},"url":{"type":"array","items":{"type":"string"},"description":"Current joined entity URL values"}},"description":"Batch request for entity detail retrieval by id, slug, or current joined URL. Each identifier array accepts at most 200 values, and at most 200 identifiers may be submitted across entityId, slug, and url. It takes no names: identify a company by name with lookupRecord and its name field.","title":"EntityDetailBatch"},"ImageVariant":{"type":"object","properties":{"contentType":{"type":"string","description":"Content type verified from the stored image bytes"},"height":{"type":"integer","minimum":1,"description":"Actual pixel height"},"path":{"type":"string","description":"Managed path of the actual stored variant"},"width":{"type":"integer","minimum":1,"description":"Actual pixel width"}},"required":["contentType","height","path","width"],"description":"A stored image variant with verified dimensions and content type","title":"ImageVariant"},"EntityImage":{"type":"object","properties":{"isMonogram":{"type":"boolean","description":"Whether entity image monogram"},"logo":{"type":["string","null"]},"logoSquare":{"type":["string","null"]},"logoSquareVariant":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ImageVariant"},"description":"Verified variants of logoSquare's exact final master path; null means unknown, an empty array means known-empty. Use the master when absent or empty."},"logoVariant":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ImageVariant"},"description":"Verified variants of logo's exact final master path; null means unknown, an empty array means known-empty. Use the master when absent or empty."}},"required":["isMonogram"],"description":"Grouped entity image fields for square, standard, and monogram logo state","title":"EntityImage"},"EntityAliasType":{"type":"string","enum":["alternativeDba","relatedLegal"],"description":"Alias types for entity NameAlias","title":"EntityAliasType"},"EntityNameAliasEntityAliasType":{"type":"object","properties":{"displayable":{"type":["boolean","null"],"description":"Show this alias in public name displays."},"name":{"type":"string","description":"Alternate name text"},"type":{"oneOf":[{"$ref":"#/components/schemas/EntityAliasType"},{"type":"null"}],"description":"Alias type classification"}},"required":["name"],"description":"Alternate name used for search and display","title":"EntityNameAliasEntityAliasType"},"EntitySitemap":{"type":"object","properties":{"hasAcquisitions":{"type":"boolean","default":false,"description":"Whether `/companies/<slug>/acquisitions` is listed in the sitemap. True only when an acquisition relationship exists AND both the acquired and acquirer entities are publicly visible. `entities acquisitions list` returning zero rows for a confirmed acquisition relationship always means a counterpart entity is still hidden -- publish it; that list reads live rows and never lags. A `false` flag on a row newer than the last refresh is refresh lag (see `EntitySitemap`)."},"hasAnalysis":{"type":"boolean","description":"Whether the entity's Analysis profile page is listed in the sitemap."},"hasEmployees":{"type":"boolean","description":"Whether the entity's Employees profile page is listed in the sitemap."},"hasFundraising":{"type":"boolean","description":"Whether the entity's Fundraising profile page is listed in the sitemap."},"hasNews":{"type":"boolean","description":"Whether the entity's News profile page is listed in the sitemap."},"productServiceSlug":{"type":"array","items":{"type":"string"},"description":"Slugs of related Product/Service entities that should each get their own `/companies/<slug>/products-services/<productSlug>` URL, capped at `MAX_PRODUCT_SERVICE_SLUGS` server-side. Derived from current `productService` relationships in either stored direction; the entity relationships resource is the authoritative, read-your-writes view of those joins."}},"required":["hasAnalysis","hasEmployees","hasFundraising","hasNews","productServiceSlug"],"description":"Which of the entity's profile pages are listed in sitemap.xml; this does not confirm that a write succeeded. Each flag is true only when the page's data EXISTS AND every entity the page shows (this entity and any other, such as the acquired or acquiring company behind `hasAcquisitions`) is currently publicly visible (not hidden, and included in the sitemap). Flags come from a precomputed view that a scheduled refresh rebuilds; a refresh requested soon after a completed one waits for the next scheduled run, so polling sooner changes nothing. A `false` flag whose qualifying write committed after the last refresh started clears on the next refresh. A `false` flag whose write predates that refresh means an entity the page shows is still hidden: publish it, after checking that entity's own record.","title":"EntitySitemap"},"EntityType":{"type":"string","enum":["Company","Investment Firm","Fund","Nonprofit","Government","Organization","Business Line","Product","Service"],"description":"Kind of entity: an organization type such as Company or Investment Firm, or a Product or Service.","title":"EntityType"},"Entity":{"type":"object","properties":{"defaultCurrency":{"type":["string","null"],"description":"Default currency code (ISO 4217)"},"foundedYear":{"type":["integer","null"],"description":"Year the entity was founded"},"id":{"type":"string","format":"uuid","description":"Unique entity identifier"},"image":{"$ref":"#/components/schemas/EntityImage","description":"Logo and monogram image metadata"},"lastModifiedAt":{"type":["string","null"],"format":"date-time","description":"Provenance-grounded last-modified watermark (schema.org dateModified). Advances only when a real, consumer-meaningful data point changes via a recorded provenance event — never on timestamp-only writes, migrations, or index refreshes. Pairs with createdAt (dateCreated) and grounds the sitemap lastmod."},"nameAlias":{"type":"array","items":{"$ref":"#/components/schemas/EntityNameAliasEntityAliasType"},"description":"All names this entity has been known by — current alternates, DBAs, former names, and rebrand-source identities. Naming history (e.g. `Metaphor Systems` for the current `Exa` entity) lives here; never as a separate relationship type or `formerName` field."},"nameBrand":{"type":"string","description":"Resolved display brand name"},"nameLegal":{"type":["string","null"],"description":"Registered legal name"},"operatingStatus":{"type":["string","null"],"description":"Current operating status. Use Acquired Subsidiary when the entity was acquired and still operates; use Closed (Acquihire) when the entity was acquired for its team and shut down, rendering like Closed everywhere; use Acquired only when it is terminal, folded, or closed."},"publicId":{"type":["string","null"],"pattern":"^e[0-9A-Za-z]{11}$","description":"Stable, immutable public handle (e.g. `eV1StGXR8Z5a`). Never changes once assigned, unlike the slug. Null on responses that do not include it and on older records not yet given a handle."},"publicUrl":{"type":["string","null"],"description":"Absolute public profile URL on the aVenture front-end, e.g. `https://aventure.vc/non-profits/{slug}`, derived from the typeRecord's canonical route family. Null when the route needs relationship context or the record has no direct public SSR route (Business Line, Organization, Product, Service, or a non-public slug). EntityDetail.publicUrl resolves Business Line parent context. A Product/Service has no standalone page: it is addressed only as `{providerPublicUrl}/products-services/{slug}` under its provider, because its slug is unique only per provider; the sitemap-urls slot paths already emit those child routes."},"sitemap":{"oneOf":[{"$ref":"#/components/schemas/EntitySitemap"},{"type":"null"}],"description":"Which of the entity's profile pages exist and are listed in the sitemap; set only on sitemap reads and null otherwise to keep responses small."},"slug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"URL-safe identifier"},"typeRecord":{"$ref":"#/components/schemas/EntityType","description":"Entity type classification"},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Last modification timestamp"}},"required":["id","image","nameAlias","nameBrand","slug","typeRecord"],"description":"Core fields of an entity: identity, names, status, image, and source details. An entity is our umbrella record for organizations such as companies, funds, investment firms and investors, accelerators, nonprofits, and government agencies, plus products and services connected to those organizations. Nested as .core inside EntityList for default list reads and EntityDetail for detail reads.","title":"Entity"},"SearchEvidenceSource":{"type":"string","description":"Owner of search evidence: `entityRecord` is the entity's structured record, `researchSnippet` an entity research snippet, `newsArticle` a news article linked to the entity; `personRecord` a person linked to the entity; `fundraiseTransaction` a recorded investment round with investor attribution; `webProfile` a web page on a site the entity owns.","title":"SearchEvidenceSource"},"SearchAnswerCitation":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid","description":"Entity the evidence is about."},"source":{"$ref":"#/components/schemas/SearchEvidenceSource","description":"Record that owns the cited evidence."},"sourceId":{"type":"string","description":"Entity id for `entityRecord`, snippet or news article id from `passage`, person id for `personRecord`, the recorded round id for `fundraiseTransaction`, or the page URL for `webProfile`."}},"required":["entityId","source","sourceId"],"description":"One piece of evidence an answer cites, by its owning record.","title":"SearchAnswerCitation"},"Confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"],"description":"Three-level confidence band for a classifier, model, or probe verdict. The carrying property states what is assessed and what each band licenses.","title":"Confidence"},"SearchAnswerWebSource":{"type":"object","properties":{"title":{"type":"string","description":"Title of the cited page as the search result named it."},"url":{"type":"string","description":"Address of the cited page."}},"required":["title","url"],"description":"A web search result an answer paragraph cites, by its page.","title":"SearchAnswerWebSource"},"SearchAnswerParagraph":{"type":"object","properties":{"citation":{"type":"array","items":{"$ref":"#/components/schemas/SearchAnswerCitation"},"description":"Evidence this paragraph rests on, most important first."},"text":{"type":"string","description":"Paragraph text in plain prose, including unchanged source quotations, attributed except on a quoted company profile."},"topic":{"type":["string","null"],"description":"Short label naming the category, market, or segment this paragraph covers, such as \"Smartphones · North America\"; absent on the lead paragraph."},"webSource":{"type":"array","items":{"$ref":"#/components/schemas/SearchAnswerWebSource"},"description":"Web pages this paragraph rests on that no aVenture record owns, such as an encyclopedia article about a company the directory lacks; most important first. Always sent; absent only from answers written before it existed."}},"required":["citation","text"],"description":"One paragraph of an answer and the evidence it rests on.","title":"SearchAnswerParagraph"},"SearchAnswer":{"type":"object","properties":{"citation":{"type":"array","items":{"$ref":"#/components/schemas/SearchAnswerCitation"},"description":"Evidence the paragraphs cite, in first-use order."},"confidence":{"$ref":"#/components/schemas/Confidence","description":"How fully the cited evidence answers the question."},"description":{"type":["string","null"],"description":"Summary of at most 155 characters for a search-result snippet; source financial answers use a whole selected recorded proposition or a generic funding phrase. Absent when the answer abstains."},"heading":{"type":["string","null"],"description":"The question as the answer page's heading: the asker's own words in title case, with record names in their stored casing; it never adds, drops, or corrects a word. Absent when the answer abstains."},"paragraph":{"type":"array","items":{"$ref":"#/components/schemas/SearchAnswerParagraph"},"description":"The answer's paragraphs in reading order, each citing the evidence it rests on; empty when the answer abstains. A first paragraph without `topic` is the lead, written as a standalone answer of one or two sentences that reads complete when shown alone; later paragraphs expand it by topic without restating it. Source financial answers render recorded funding facts literally; a requested company profile follows the lead as one quoted \"Products and services\" paragraph, then other recorded transactions and attributed unchanged admitted source passages; a recorded total is not a round."},"relatedQuery":{"type":"array","items":{"type":"string"},"description":"Up to five follow-up searches grounded in the cited evidence; empty when the answer abstains."},"shareable":{"type":"boolean","description":"True when the answer has grounded paragraphs and the answer model did not judge the question advertising or promotion; only a shareable answer can be published as a public search page."},"text":{"type":"string","description":"Every paragraph's text in reading order, separated by blank lines; read `paragraph` to place each citation beside the text it supports."},"title":{"type":["string","null"],"description":"Page title of at most 60 characters naming the answer's subject, then the angle and scope its paragraphs cover. Narrative titles come from the writer; source financial titles use a whole selected recorded proposition or a generic funding title. Pages show it as the subheading under `heading`. Absent when the answer abstains."}},"required":["citation","confidence","paragraph","relatedQuery","shareable","text"],"description":"Answer to a natural-language question, grounded only in the response's entity records and passages. A written answer always has a paragraph; when the evidence does not answer the question, LOW confidence paragraphs state what the cited evidence does show. No paragraph means the answer abstained: the answer check refused every drafted paragraph, a requested recorded-figure composition held no figure, or `provenance.answerUnavailable` is true. LOW confidence with paragraphs means the evidence answers only part of the question or at least one kept paragraph passed the answer check only below its acceptance bar.","title":"SearchAnswer"},"AddressAssociationRole":{"type":"string","enum":["domicile","dominant","origin"],"description":"Meaning of an entity or person address association. Dominant is the operating headquarters; domicile is the legal or registered seat and is not evidence of operational presence; origin is the founding or historical location.","title":"AddressAssociationRole"},"AddressAssociation":{"type":"object","properties":{"endDate":{"type":["string","null"],"format":"date","description":"Last known day this role applied"},"id":{"type":"integer","description":"Address association row identifier"},"isCurrent":{"type":"boolean","description":"Whether this role is currently relevant"},"role":{"oneOf":[{"$ref":"#/components/schemas/AddressAssociationRole"},{"type":"null"}],"description":"Address association role; null means unclassified"},"startDate":{"type":["string","null"],"format":"date","description":"First known day this role applied"}},"required":["id","isCurrent"],"description":"One role and effective period for a physical address association","title":"AddressAssociation"},"AddressCity":{"type":"object","properties":{"id":{"type":["integer","null"]},"name":{"type":"string","description":"City name"}},"required":["name"],"description":"City reference used inside an address","title":"AddressCity"},"AddressCountry":{"type":"object","properties":{"countryCodeChar2":{"type":["string","null"],"description":"Two-letter country code"},"countryCodeChar3":{"type":["string","null"],"description":"Three-letter country code"},"id":{"type":["integer","null"]},"name":{"type":"string","description":"Country name"},"unRegion":{"type":["string","null"]},"unSubregion":{"type":["string","null"]}},"required":["name"],"description":"Country reference used inside an address","title":"AddressCountry"},"AddressState":{"type":"object","properties":{"id":{"type":["integer","null"]},"name":{"type":"string","description":"State or region name"},"stateAbbrev":{"type":["string","null"],"description":"State or region abbreviation"}},"required":["name"],"description":"State or region reference used inside an address","title":"AddressState"},"Address":{"type":"object","properties":{"address":{"type":["integer","null"],"description":"Legacy address row identifier"},"addressLine1":{"type":["string","null"],"description":"Canonical street address line."},"addressLine2":{"type":["string","null"],"description":"Canonical suite, floor, or secondary address line."},"association":{"type":"array","items":{"$ref":"#/components/schemas/AddressAssociation"},"description":"Role-period associations for this physical address"},"city":{"oneOf":[{"$ref":"#/components/schemas/AddressCity"},{"type":"null"}],"description":"City reference"},"country":{"oneOf":[{"$ref":"#/components/schemas/AddressCountry"},{"type":"null"}],"description":"Country reference"},"countryAbbrev":{"type":["string","null"]},"createdAt":{"type":["string","null"],"format":"date-time"},"fullAddress":{"type":["string","null"],"description":"Single-line formatted address"},"id":{"type":["integer","null"],"description":"Id of this listed row's first association; PATCH and DELETE address one association by its association[].id, so a row holding several roles needs one call each"},"isCurrent":{"type":["boolean","null"],"description":"Deprecated aggregate compatibility flag; true when any association is current","deprecated":true},"isHq":{"type":["boolean","null"],"description":"Deprecated legacy flag marking the current legal/registered seat (domicile), not the operating HQ; it retires on 2027-02-05. Read a current association[].role of domicile for the legal seat, and match enrichment.headquartersAddressId to enrichment.address[].id for the operating headquarters.","deprecated":true},"isPrimary":{"type":["boolean","null"],"description":"Deprecated legacy flag marking the current operating headquarters (dominant); it retires on 2027-02-05. Match enrichment.headquartersAddressId to enrichment.address[].id, or read a current association[].role of dominant.","deprecated":true},"latitude":{"type":["number","null"],"format":"double"},"longitude":{"type":["number","null"],"format":"double"},"postalCode":{"type":["string","null"],"description":"Canonical postal or ZIP code."},"state":{"oneOf":[{"$ref":"#/components/schemas/AddressState"},{"type":"null"}],"description":"State or region reference"},"stateAbbrev":{"type":["string","null"],"description":"Canonical state or region abbreviation."},"street":{"type":["string","null"]},"updatedAt":{"type":["string","null"],"format":"date-time"}},"description":"A postal address of an entity or person.","title":"Address"},"ClassificationJoinRegistry":{"type":"string","description":"Which kind of entity classification an id belongs to, editorial or standardized; needed on paths where the two kinds can share the same id number.","title":"ClassificationJoinRegistry"},"EntityTag":{"type":"object","properties":{"isCurrent":{"type":["boolean","null"],"description":"In catalog and search results, whether the tag is active; in entity classification responses, whether the classification is current for the entity."},"isPrimary":{"type":["boolean","null"],"description":"Whether this is the entity's primary classification in its bucket; null in catalog and search results."},"name":{"type":"string","minLength":0,"maxLength":255,"description":"Name"},"registry":{"$ref":"#/components/schemas/ClassificationJoinRegistry","description":"Join registry this classification belongs to; pass it as registry when reading or changing the join by classificationId."},"bucket":{"type":["string","null"],"description":"Classification bucket key; tag search and the classification catalog accept this value as `type`."},"classificationId":{"type":["integer","null"],"description":"Id of this classification on the entity; null in catalog and search results."},"createdAt":{"type":["string","null"],"format":"date-time","description":"Tag creation timestamp, not the time the entity received this tag."},"id":{"type":"integer","description":"Classification tag id."},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Slug"},"type":{"type":"string","description":"Canonical tag classification type"},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Tag update timestamp, not the time the entity's classification changed."}},"required":["name","registry","id","type"],"description":"Classification tag. Catalog and search responses describe the tag itself; entity classification responses also carry classificationId and the entity's current and primary flags.","title":"EntityTag"},"StandardizedClassification":{"type":"object","properties":{"category":{"type":"string","description":"Standardized category token."},"classificationId":{"type":["integer","null"],"description":"Id of this classification on the entity; null in catalog and search results."},"code":{"type":["integer","null"],"description":"Legacy numeric standardized code when present; does not establish codeText or edition."},"codeText":{"type":["string","null"],"maxLength":255,"description":"Exact source-stated code text; null is unrecorded, never reconstructed from code."},"createdAt":{"type":["string","null"],"format":"date-time","description":"Registry row creation timestamp."},"edition":{"type":["string","null"],"maxLength":128,"description":"Source-stated codebook edition; null is unknown, never an assumed current edition."},"id":{"type":"integer","description":"Standardized classification id."},"isCurrent":{"type":["boolean","null"],"description":"Whether the entity's classification join is current; false retains historical context. Catalog and search reference rows are current by definition."},"isPrimary":{"type":["boolean","null"],"description":"Whether this is the entity's primary classification in this category."},"level":{"type":["integer","null"],"description":"Hierarchy level when present."},"name":{"type":"string","minLength":0,"maxLength":255,"description":"Name"},"registry":{"$ref":"#/components/schemas/ClassificationJoinRegistry","description":"Join registry this classification belongs to; pass it as registry when reading or changing the join by classificationId."},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Registry row update timestamp."}},"required":["category","id","name","registry"],"description":"Industry or ownership classification from a standard taxonomy such as NAICS, SIC, or ISIC, with its category, code, and hierarchy level.","title":"StandardizedClassification"},"EntityClassification":{"type":"object","properties":{"geoLocationExposure":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Geographic markets where the entity earns revenue and serves customers (e.g. North America, EMEA, APAC). This is the sales/market footprint classification — NOT the HQ or office location. HQ and office locations belong on the address record (enrichment.address), not this bucket. A London-headquartered company selling globally should have North America and EMEA here, not United Kingdom."},"industry":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Industry filter values"},"mainProduct":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Main product filter values"},"standardizedClassification":{"type":"array","items":{"$ref":"#/components/schemas/StandardizedClassification"},"default":"[]","description":"Standardized taxonomy classifications such as NAICS, SIC, or ISIC codes, with category and code metadata."},"tag":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Tag filter values"},"typeCustomer":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Type customer filter values"},"typeModel":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Type model filter values"},"typeOwnership":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Type ownership filter values"},"typeRevenue":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Type revenue filter values"},"typeTechnologyUsed":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"default":"[]","description":"Type technology used filter values"}},"description":"Entity classifications grouped by bucket. Reads return current classifications by default; includeInactive=true adds inactive and historical ones.","title":"EntityClassification"},"FundingApplicability":{"type":"string","enum":["UNKNOWN","NOT_APPLICABLE","RECORDED"],"description":"Whether financing amounts are recorded, unknown, or inapplicable.","title":"FundingApplicability"},"ValuationType":{"type":"string","enum":["preMoney","postMoney","reported"],"description":"Which side of the pre/post relationship the source declared.","title":"ValuationType"},"EntityValuationSource":{"type":"string","enum":["fundraiseRound","researchDetail"],"description":"Where the point came from: a research detail or a funding round.","title":"EntityValuationSource"},"EntityValuation":{"type":"object","properties":{"amount":{"type":"string","pattern":"^-?[0-9]+(\\.[0-9]+)?$","description":"Native source amount as a plain decimal JSON string, preserving stored precision without JSON-number rounding or Long truncation."},"asOfDate":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-effective year, month, day or timestamp; null when the observation is undated."},"basis":{"oneOf":[{"$ref":"#/components/schemas/ValuationType"},{"type":"null"}],"description":"Source-stated basis; null when legacy evidence did not state one. Reported is not silently post-money."},"currency":{"type":["string","null"],"description":"The observation's own ISO currency. Null means unknown, never the entity currency or USD."},"postMoneyUsd":{"type":["string","null"],"pattern":"^-?[0-9]+(\\.[0-9]+)?$","description":"Post-money amount in USD as a plain decimal JSON string under the existing ECB/World Bank conversion policy; derived only from same-source pre-money plus raised when needed; null for pre-money-only without raised, unknown currency, or unavailable foreign-currency date/rate. Never substitutes an older observation."},"referenceValue":{"type":["string","null"],"description":"Original research qualifier, retained without interpreting a fiscal/forecast period as currency."},"source":{"$ref":"#/components/schemas/EntityValuationSource"},"sourceRef":{"type":"string"}},"required":["amount","source","sourceRef"],"description":"Current eligible valuation with its own amount, basis, currency and source date.","title":"EntityValuation"},"FundingStage":{"type":"string","description":"Funding stage only, emitted by the entity fundraise rollup. The record headline is profileStatus.headline; the entity-type and operating-status members are deprecated as a headline and retire in a later contract change. Transaction classifications such as Debt, IPO, and Acquisition are not entity stages.","title":"FundingStage"},"EntityFundingDetail":{"type":"object","properties":{"applicability":{"oneOf":[{"$ref":"#/components/schemas/FundingApplicability"},{"type":"null"}],"description":"RECORDED when an eligible financing amount, including an explicit zero, exists. Otherwise UNKNOWN for a company, investment firm, or unestablished kind; NOT_APPLICABLE for a fund, nonprofit, government, business line, product, or service with no recorded financing amount. Recorded financing history is preserved for every kind. Null or absent means this contract was not supplied, not that financing is unknown. totalRaised retains its legacy numeric type."},"currency":{"type":["string","null"],"description":"ISO 4217 currency of totalRaised, latestValuation, and mostRecentAmount: the one currency every round uses, else the entity's own currency when rounds carry none. Null when rounds use more than one currency or no fundraise rollup exists, so these amounts have no single currency."},"currentValuation":{"oneOf":[{"$ref":"#/components/schemas/EntityValuation"},{"type":"null"}],"description":"Selected eligible valuation with its own currency/basis/date, including standalone research evidence. Optional on older servers; absence is not zero."},"disclosedStage":{"type":["string","null"],"description":"Latest explicitly recorded equity ladder label retained in a transaction's source round field, not calculatedRoundLabel or a Late Stage Private inference. Null when no canonical disclosed ladder label is recorded; does not assert market standing."},"disclosedStageTransactionId":{"type":["string","null"],"format":"uuid","description":"Transaction retaining disclosedStage; read its history/source, not a current listing assertion."},"fundingRoundCount":{"type":"integer","description":"Recorded round count, including rounds with no recorded amount."},"investorCount":{"type":"integer"},"latestValuation":{"type":["number","null"],"format":"double","description":"Legacy latest-transaction valuation; not a current observation or USD value. Use currentValuation."},"mostRecentAmount":{"type":["number","null"],"format":"double"},"mostRecentDate":{"type":["string","null"],"format":"date"},"stage":{"oneOf":[{"$ref":"#/components/schemas/FundingStage"},{"type":"null"}]},"totalRaised":{"type":"number","format":"double","description":"Sum of recorded round amounts in their original currencies, excluding rounds with no amount; not a complete lifetime total when amounts are missing. Use totalRaisedUsd for a USD aggregate; totalRaised has no single currency when currency is null. Legacy numeric projection: zero also represents unknown or inapplicable financing; read applicability before displaying it. This field remains numeric until all supported readers accept nullable totals."},"totalRaisedAmountRoundCount":{"type":["integer","null"],"description":"Eligible totalRaisedUsd rounds with a recorded amount, including an explicit zero. Subtract from totalRaisedRoundCount for undisclosed amounts. Null means unknown coverage."},"totalRaisedRoundCount":{"type":["integer","null"],"description":"Deduplicated rounds eligible for totalRaisedUsd, including undisclosed amounts. Uses exactly that total's acquisition/bankruptcy exclusions; unlike fundingRoundCount, this is the coverage denominator. Null until coverage is available."},"totalRaisedUsd":{"type":["number","null"],"format":"double","description":"USD aggregate at enrichment.fundingDetail.totalRaisedUsd: sums only recorded round amounts with an announcement-date ECB/World Bank rate. Excludes rounds with no amount or no rate, so do not report it as a complete lifetime total when either is missing. Null when no eligible amount converts or coverage is not available; a converted recorded zero remains zero. Use totalRaisedRoundCount, totalRaisedAmountRoundCount and totalRaisedUsdRoundCount for coverage of this same deduplicated eligible set, never fundingRoundCount as its denominator."},"totalRaisedUsdRoundCount":{"type":["integer","null"],"description":"Eligible totalRaisedUsd rounds whose recorded amount has a USD conversion, including converted zero. Subtract from totalRaisedAmountRoundCount for missing FX. Null means unknown coverage; zero means no converted amount is known."},"unconvertedRoundCount":{"type":"integer","description":"Rounds with an amount but no announcement-date USD rate, excluded from totalRaisedUsd. Does not count rounds with no recorded amount; zero does not prove the total is complete."}},"required":["fundingRoundCount","investorCount","totalRaised","unconvertedRoundCount"],"description":"Aggregate view of an entity's fundraising activity","title":"EntityFundingDetail"},"EntityTextBundle":{"type":"object","properties":{"expanded":{"type":["string","null"],"description":"Expanded summary text"},"generatedDescription":{"type":["string","null"],"description":"Generated SEO meta description text"},"short":{"type":["string","null"],"description":"Short summary text"}},"description":"Grouped entity/person text content","title":"EntityTextBundle"},"EntityUrlCrawlCdnProvider":{"type":"string","enum":["cloudflare","akamai","fastly","awsCloudfront","vercel","netlify","sucuri","incapsula","bunny","keycdn","cdn77","gcore","cdnetworks","azureCdn","leaseweb","digitalocean","stackpath","googlecloudCdn","none","unknown"],"description":"CDN or hosting provider fronting a web URL.","title":"EntityUrlCrawlCdnProvider"},"EntityUrlCrawlRenderMode":{"type":"string","enum":["static","jsRequired","jsEnhanced"],"description":"JavaScript rendering requirement for crawl checks.","title":"EntityUrlCrawlRenderMode"},"EntityPersonOwner":{"type":"object","properties":{"entityId":{"type":["string","null"],"format":"uuid","description":"Owning entity id; set only when personId is absent."},"personId":{"type":["string","null"],"format":"uuid","description":"Owning person id; set only when entityId is absent."}},"description":"Exactly one of entityId or personId is set; ids only, no name fields. Resolve display names with GET /v1/entities/detail or GET /v1/people/{personId}.","title":"EntityPersonOwner"},"EntityUrlType":{"type":"string","description":"Canonical URL platform type such as website, linkedin, twitter, or github. Lifecycle facts belong on link flags such as isCurrent and isPrimary.","title":"EntityUrlType"},"EntityUrlLink":{"type":"object","properties":{"crawlCdnProvider":{"oneOf":[{"$ref":"#/components/schemas/EntityUrlCrawlCdnProvider"},{"type":"null"}],"description":"CDN provider from the latest URL probe."},"crawlRenderMode":{"oneOf":[{"$ref":"#/components/schemas/EntityUrlCrawlRenderMode"},{"type":"null"}],"description":"Render mode from the latest URL probe."},"createdAt":{"type":["string","null"],"format":"date-time"},"id":{"type":["integer","null"]},"isCurrent":{"type":["boolean","null"],"description":"`true` = owner currently uses this URL; `false` = historical/former (rebrand source domain, deprecated platform handle). The lifecycle state lives here, NEVER in the `urlType` discriminator."},"isPrimary":{"type":["boolean","null"],"description":"`true` = canonical/primary URL of this `urlType` for this owner. Only one row per (owner, urlType) may be `isCurrent=true` AND `isPrimary=true`. Retired rows are always non-primary, including when a write requests otherwise."},"owner":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonOwner"},{"type":"null"}],"description":"Owning record, nested ids only: owner.entityId or owner.personId — exactly one is set, and no name fields. Writes are scoped by the owning entity/person route; owner is never a write field."},"sourceId":{"type":["string","null"]},"status":{"type":["string","null"],"description":"Latest URL status observation; a later probe may replace the submitted status."},"statusChecked":{"type":["string","null"],"format":"date-time","description":"Time of the latest URL status observation."},"updatedAt":{"type":["string","null"],"format":"date-time"},"url":{"type":"string","format":"uri","description":"Absolute URL as stored, with the host normalized to the form the live site uses."},"urlType":{"$ref":"#/components/schemas/EntityUrlType"}},"required":["url","urlType"],"description":"A URL linked to an entity or person, with its status, crawl results, and source. Lifecycle state (current vs former, primary vs secondary) is encoded by `isCurrent` and `isPrimary` — `urlType` names only the platform (website, linkedin, and so on), and its write values come from GET /v1/url-types. Readers accept new platform types as deployments evolve. To record a rebrand or domain migration, retain the prior URL with the same `urlType` (typically `website`) and set `isCurrent=false, isPrimary=false`; never encode lifecycle in the platform type.","title":"EntityUrlLink"},"EntityEnrichment":{"type":"object","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/Address"},"description":"Current addresses. List rows carry bounded current locations for named roles, identification evidence, and card display, not every office or association history. Single-detail reads retain all current locations and their association history. Full-detail search carries only the headquarters row (headquartersAddressId); GET /v1/entities/{entityId}/addresses lists every row."},"classification":{"$ref":"#/components/schemas/EntityClassification","description":"Entity classifications. Single-detail and full-detail batch reads include history; list, default batch, and similar-entity reads may return only current classifications. Use GET /v1/entities/{entityId}/classifications?includeInactive=true for the full history."},"fundingDetail":{"oneOf":[{"$ref":"#/components/schemas/EntityFundingDetail"},{"type":"null"}],"description":"Funding aggregate: enrichment.fundingDetail.totalRaisedUsd is the USD sum of recorded round amounts with available FX rates, not a complete lifetime total when round amounts or rates are missing."},"headquartersAddressId":{"type":["integer","null"],"description":"Operating headquarters address id: match enrichment.headquartersAddressId to enrichment.address[].id. Absent when no current dominant (operating) address is on record, even when a domicile (legal seat) exists. Deprecated isHq marks the legal seat, not the operating HQ."},"headquartersRemoteAsOf":{"type":["string","null"],"format":"date-time","description":"When aVenture last verified that this entity runs no operating headquarters (a remote company); absent while a current operating headquarters is on record or no unexpired verification exists."},"publicControllingParentId":{"type":["string","null"],"format":"uuid","description":"Unique publicly readable current primary controlling parent with current Public eligibility, for a Business Line only; null when not proven. Derived from the current parent or acquirer relationship, never a listing or Public ownership claim on this entity."},"text":{"$ref":"#/components/schemas/EntityTextBundle"},"urlLink":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"URL link filter values"}},"required":["address","classification","text","urlLink"],"description":"Supplemental entity data — addresses, classification tags, funding, text content, and URL links","title":"EntityEnrichment"},"FundraiseDataConfidence":{"type":"string","enum":["High","Medium","Low","Verified"],"description":"Fundraise data confidence label","title":"FundraiseDataConfidence"},"EntityFundraiseTransactionEntity":{"type":"object","properties":{"acquirer":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Public buyer of the newest completed acquisition; null for announced or non-public buyers."},"core":{"$ref":"#/components/schemas/Entity"},"fundingDetail":{"oneOf":[{"$ref":"#/components/schemas/EntityFundingDetail"},{"type":"null"}]}},"required":["core"],"description":"Basic entity fields shown inside a funding round.","title":"EntityFundraiseTransactionEntity"},"FundraiseFinancialInstrumentType":{"type":"string","enum":["SAFE","Convertible Note","Preferred Stock","Common Stock","Other Equity","Bond","Loan","Other Debt","Grant","Token"],"description":"Fundraise financial instrument type — the vehicle a round or investor join used","title":"FundraiseFinancialInstrumentType"},"EntityResearchPublicSource":{"type":"object","properties":{"lastFetchedAt":{"type":["string","null"],"format":"date-time","description":"When aVenture last fetched this page; absent when no stored capture of it exists."},"publishedAt":{"type":["string","null"],"format":"date-time","description":"When the page was published, from aVenture's news record for the same URL; absent when the page is not a known news article."},"recordedAt":{"type":"string","format":"date-time","description":"When aVenture recorded the value from this page."},"sourceDetail":{"type":"string","format":"uri","description":"URL of the published page supporting the value."}},"required":["recordedAt","sourceDetail"],"description":"Published page behind a research value, read from the provenance event that wrote the value. Absent for internal sources and for privacy, terms, or other legal pages.","title":"EntityResearchPublicSource"},"EntityFundraiseInvestorJoin":{"type":"object","properties":{"amountInvested":{"type":["number","null"],"format":"double","description":"Investor-level attributed amount invested in the fundraise transaction currency. Serialized as a plain JSON number such as 220000 or 123456.78; no currency sign, currency code, comma grouping, or abbreviated amount text is valid."},"createdAt":{"type":"string","format":"date-time","description":"Created timestamp"},"financialInstrumentType":{"oneOf":[{"$ref":"#/components/schemas/FundraiseFinancialInstrumentType"},{"type":"null"}],"description":"Financial instrument/vehicle for this investor's participation in the round (e.g. SAFE, Preferred Stock, Convertible Note). Distinct from the round-level financialInstrumentType: a single round can record different vehicles per investor join — e.g. an accelerator batch holding a capped SAFE and an uncapped-MFN SAFE as two joins."},"id":{"type":"string","format":"uuid","description":"Fundraise investor join identifier"},"investor":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Investor identity, nested: investor.entityId for a firm/fund investor or investor.personId for an angel — exactly one is set. investorName and investorSlug on this row name that investor; never read each id separately."},"investorName":{"type":["string","null"],"description":"Investor display name, read from the investor's own entity record (brand name, else legal name) or person record (full name). Omitted when that record holds no name."},"investorSlug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Investor profile slug, read from the investor's own entity or person record; open the profile with it instead of resolving investor ids one by one."},"leadInvestor":{"type":"boolean","description":"Recorded lead/anchor flag. True records a lead role; historical false values may mean either non-lead or unrecorded leadership evidence. A false flag alone does not establish confirmed non-lead participation."},"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page that supports this investor's participation, from the join's latest value write. Omitted when no published source is recorded."},"transactionId":{"type":"string","format":"uuid","description":"Fundraise transaction identifier"},"updatedAt":{"type":"string","format":"date-time","description":"Updated timestamp"}},"required":["createdAt","id","investor","leadInvestor","transactionId","updatedAt"],"description":"One investor's participation in one funding round.","title":"EntityFundraiseInvestorJoin"},"FundraiseInvestmentAttributionType":{"type":"string","enum":["direct","managedFund"],"description":"How a fundraise investor attribution row was selected for an investor view.","title":"FundraiseInvestmentAttributionType"},"RoundLabel":{"type":"object","properties":{"round":{"type":"string"}},"required":["round"],"description":"Round participation label - shared by entity and person investor participation","title":"RoundLabel"},"FundraiseInvestmentAttribution":{"type":"object","properties":{"amountInvested":{"type":["number","null"],"format":"double","description":"Investor-level attributed amount invested in the fundraise transaction currency: the investor's joins on the round summed for an investment, or one join's amount in source attribution. Serialized as a plain JSON number such as 220000 or 123456.78; no currency sign, currency code, comma grouping, or abbreviated amount text is valid."},"attributionType":{"$ref":"#/components/schemas/FundraiseInvestmentAttributionType","description":"How this attribution row participates in the investor view."},"beneficialEntityId":{"type":["string","null"],"format":"uuid","description":"Investment firm entity receiving the rollup attribution."},"fundManagerRelationshipId":{"type":["integer","null"],"description":"Fund-manager relationship id when the attribution rolls up through a managed fund."},"joinId":{"type":"string","format":"uuid","description":"Fundraise investor join identifier; for a summed investment, one of the joins it sums"},"leadInvestor":{"type":"boolean","description":"Recorded lead flag. Historical false values may mean non-lead or unrecorded leadership evidence; false alone is not confirmation of a non-lead role."},"recordedEntityId":{"type":["string","null"],"format":"uuid","description":"Entity recorded directly on the fundraise investor join."},"round":{"oneOf":[{"$ref":"#/components/schemas/RoundLabel"},{"type":"null"}],"description":"Round label for the attributed participation"},"transactionId":{"type":"string","format":"uuid","description":"Fundraise transaction identifier"}},"required":["attributionType","joinId","leadInvestor","transactionId"],"description":"Investor-specific attribution: an investor's investment in one round (its joins there, one per vehicle, summed) or, in source attribution, one investor join","title":"FundraiseInvestmentAttribution"},"FundraiseRoundField":{"type":"string","enum":["round","roundType","financialInstrumentType","investorCount","amountRaised","currency","dateAnnounced","dateFundingComplete","valuationPostMoney","valuationPreMoney","dateInvestorExit","status"],"description":"A funding round field a write asserted that its cited source did not support.","title":"FundraiseRoundField"},"EntityFundraiseTransaction":{"type":"object","properties":{"amountRaised":{"type":["integer","null"],"format":"int64"},"createdAt":{"type":["string","null"],"format":"date-time"},"currency":{"type":["string","null"]},"dataConfidence":{"oneOf":[{"$ref":"#/components/schemas/FundraiseDataConfidence"},{"type":"null"}],"description":"Data confidence level"},"dateAnnounced":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Occurrence date for the round when known; null when unknown. Use the announcement date, otherwise the earliest source publication date announcing the round, preserving source precision."},"dateFundingComplete":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated funding completion date or instant, preserving source precision."},"dateInvestorExit":{"type":["string","null"],"format":"date-time"},"entity":{"oneOf":[{"$ref":"#/components/schemas/EntityFundraiseTransactionEntity"},{"type":"null"}]},"financialInstrumentType":{"oneOf":[{"$ref":"#/components/schemas/FundraiseFinancialInstrumentType"},{"type":"null"}],"description":"Source-reported financial instrument persisted for this round."},"id":{"type":"string","format":"uuid","description":"Funding round id (UUID)"},"investor":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityFundraiseInvestorJoin"}},"investorAttribution":{"oneOf":[{"$ref":"#/components/schemas/FundraiseInvestmentAttribution"},{"type":"null"}],"description":"Investor-specific attribution when returned from investor-perspective investment views. amountInvested is not added to amountRaised; it is the selected investor's whole investment in this round: its joins here (one per vehicle, such as a CEA and a SAFE) summed. joinId names one of those joins."},"investorCount":{"type":["integer","null"],"description":"Greater of source and distinct-investor counts; null if both are unknown."},"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page supporting this round, from its latest economic value write."},"rawInvestorCount":{"type":["integer","null"],"description":"Stored source-reported investor count; null when unknown."},"rawRoundLabel":{"type":["string","null"],"description":"Stored source round label, before display derivation."},"round":{"type":["string","null"],"description":"Display round label derived from the stored round label, round type, and financial instrument type (an 'Initial Public Offering' round of type IPO reads as IPO); it can differ from the round label written."},"roundType":{"type":["string","null"],"description":"Source-reported classification persisted for this round (e.g. Public for a SPAC Merger); it is not derived from the round label."},"sourceAttribution":{"type":"array","items":{"$ref":"#/components/schemas/FundraiseInvestmentAttribution"}},"unsupportedField":{"type":"array","items":{"$ref":"#/components/schemas/FundraiseRoundField"},"description":"Proposed fields not admitted from the cited source, including dependent fields withheld to keep retained values consistent. Stored values for these fields are unchanged; do not resend the whole round."},"updatedAt":{"type":["string","null"],"format":"date-time"},"valuationPostMoney":{"type":["integer","null"],"format":"int64"},"valuationPreMoney":{"type":["integer","null"],"format":"int64"}},"required":["id","sourceAttribution"],"description":"One funding round. ONE row per discrete round. An entity that raised pre-seed, seed, and Series A is THREE rows. Combined or rolled-up totals are never modeled here — total raised is a sum across rows.","title":"EntityFundraiseTransaction"},"NewsMatchStatus":{"type":"string","enum":["auto-match","needs-review","approved","rejected"],"description":"auto-match = linked by the matcher; needs-review = awaiting a reviewer; approved; rejected","title":"NewsMatchStatus"},"NewsResolvedEntityLink":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"entityId":{"type":"string","format":"uuid","description":"Entity id (UUID)"},"href":{"type":["string","null"]},"internal":{"type":"boolean","description":"True when href links to this entity's aVenture page; false when the entity has no page to link to."},"matchStatus":{"oneOf":[{"$ref":"#/components/schemas/NewsMatchStatus"},{"type":"null"}]},"mention":{"type":["string","null"]},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"typeRecord":{"oneOf":[{"$ref":"#/components/schemas/EntityType"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","entityId","internal","updatedAt"],"description":"Resolved entity mention in news content - hyperlink to an entity detected in article text","title":"NewsResolvedEntityLink"},"NewsResolvedPersonLink":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"href":{"type":["string","null"]},"matchStatus":{"oneOf":[{"$ref":"#/components/schemas/NewsMatchStatus"},{"type":"null"}]},"mention":{"type":["string","null"]},"personId":{"type":"string","format":"uuid","description":"Person id (UUID)"},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","personId","updatedAt"],"description":"Resolved person mention in news content - hyperlink to a person detected in article text","title":"NewsResolvedPersonLink"},"NewsTitleMention":{"type":"object","properties":{"end":{"type":"integer","minimum":1,"description":"Exclusive UTF-16 end offset into News.title."},"entity":{"oneOf":[{"$ref":"#/components/schemas/NewsResolvedEntityLink"},{"type":"null"}]},"person":{"oneOf":[{"$ref":"#/components/schemas/NewsResolvedPersonLink"},{"type":"null"}]},"start":{"type":"integer","minimum":0,"description":"Inclusive UTF-16 start offset into News.title."}},"required":["end","start"],"description":"A linked record's current name in the exact article title; exactly one record is set.","title":"NewsTitleMention"},"News":{"type":"object","properties":{"author":{"type":["string","null"]},"category":{"type":["string","null"]},"createdAt":{"type":["string","null"],"format":"date-time"},"excerpt":{"type":["string","null"],"description":"Article summary from the source publication feed; null means the feed supplied no description (expected absence, not an error) — full text is NewsDetail.content"},"externalNewsArticle":{"type":["boolean","null"]},"id":{"type":"integer","description":"Identifier of a news article"},"newsImageThumbnail":{"type":["string","null"]},"newsUrlOriginal":{"type":["string","null"],"description":"Canonical article URL after host and tracking-parameter normalization."},"publication":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"format":"date-time"},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"title":{"type":"string","description":"Article headline; the headline field is title"},"titleMention":{"type":"array","items":{"$ref":"#/components/schemas/NewsTitleMention"},"description":"Sorted, non-overlapping UTF-16 ranges of linked public records' current names in title; empty when none match."},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","title"],"description":"A news article, as returned by news lists and the entity.news.published webhook.","title":"News"},"PersonImage":{"type":"object","properties":{"isMonogram":{"type":"boolean","description":"Whether person image monogram"},"picture":{"type":["string","null"]},"pictureVariant":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ImageVariant"},"description":"Verified variants of picture's exact final master path; null means unknown, an empty array means known-empty. Use the master when absent or empty."}},"required":["isMonogram"],"description":"A person's image fields, as returned in detail and list responses.","title":"PersonImage"},"EntityPersonAssociation":{"type":"object","properties":{"associationId":{"type":"integer","description":"Integer person-entity association join row id, not a person or entity UUID"},"endDate":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Association period end, preserving source precision; any value means the association ended and isCurrent is false. Absent only while not terminated"},"entityAddress":{"type":"array","items":{"$ref":"#/components/schemas/Address"},"description":"The entity's addresses. Person detail includes at most one: the entity's current headquarters, else its most recently updated current address; GET /v1/entities/{entityId}/addresses lists them all"},"entityId":{"type":"string","format":"uuid","description":"Associated entity id"},"entityIsPublic":{"type":["boolean","null"],"description":"Whether the employer page is readable; false: show name unlinked"},"entityLogo":{"$ref":"#/components/schemas/EntityImage","description":"The entity's logo fields."},"entityName":{"type":["string","null"]},"entityOperatingStatus":{"type":["string","null"]},"entitySlug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"entityType":{"oneOf":[{"$ref":"#/components/schemas/EntityType"},{"type":"null"}],"description":"Entity type classification"},"entityUrlLink":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"The entity's URL links."},"isCurrent":{"type":["boolean","null"],"description":"True only while the association has no endDate; any endDate means it ended"},"personAddress":{"type":"array","items":{"$ref":"#/components/schemas/Address"},"description":"The person's addresses."},"personId":{"type":"string","format":"uuid","description":"Associated person id"},"personImage":{"$ref":"#/components/schemas/PersonImage","description":"The person's image fields."},"personName":{"type":"string"},"personSlug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"personUrlLink":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"The person's URL links."},"score":{"type":["integer","null"]},"startDate":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Association period start, preserving source precision"},"titleFunction":{"type":["string","null"],"description":"Job function of the title (read-only)."},"titleId":{"type":["integer","null"],"description":"Corporate title id for the association row"},"titleLevel":{"type":["string","null"],"description":"Seniority level of the title (read-only)."},"titleName":{"type":["string","null"],"description":"Job title text for this role (read-only)."}},"required":["associationId","entityAddress","entityId","entityLogo","entitySlug","entityUrlLink","personAddress","personId","personImage","personName","personSlug","personUrlLink"],"description":"One entity↔person association, naming both sides","title":"EntityPersonAssociation"},"BlogPostType":{"type":"string","enum":["aventureBlog","personalBlog","employerBlog","linkedin","xTwitter","medium","substack","other"],"description":"Where a collected blog post came from","title":"BlogPostType"},"BlogPost":{"type":"object","properties":{"author":{"type":["string","null"],"description":"Blog-post author when discovered by ingest"},"createdAt":{"type":"string","format":"date-time"},"externalId":{"type":["string","null"],"description":"Stable external feed/item identifier when available"},"id":{"type":"string","format":"uuid","description":"UUID of a link to an external blog article collected during research"},"isCurrent":{"type":"boolean"},"lastFetchedAt":{"type":["string","null"],"format":"date-time","description":"Last time ingest fetched or summarized this blog-post URL"},"mentionedEntityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Entities mentioned in the blog-post body, excluding the owner"},"mentionedPersonId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"People mentioned in the blog-post body, excluding the owner"},"owner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Owning record, nested ids only: owner.entityId or owner.personId — exactly one is set."},"publishedAt":{"type":["string","null"],"format":"date-time"},"summary":{"type":["string","null"],"description":"LLM-generated blog-post summary from blog-post-ingest"},"summaryGeneratedAt":{"type":["string","null"],"format":"date-time","description":"Timestamp when summary was last generated"},"title":{"type":["string","null"]},"topic":{"type":["string","null"],"description":"Nullable Library topic key the article classifier assigned: funding, product, partnership, acquisition, leadership, legal, research, financials, careers, blog, or press. Rows classified before that classifier may still carry a web-crawl section key."},"type":{"$ref":"#/components/schemas/BlogPostType"},"updatedAt":{"type":"string","format":"date-time"},"url":{"type":"string"}},"required":["createdAt","id","isCurrent","mentionedEntityId","mentionedPersonId","owner","type","updatedAt","url"],"description":"A blog post published by exactly one entity or person and collected during research. It is not an aVenture blog article.","title":"BlogPost"},"PersonAliasType":{"type":"string","enum":["maidenName","formerName","stageName"],"description":"Alias types for person NameAlias","title":"PersonAliasType"},"EntityNameAliasPersonAliasType":{"type":"object","properties":{"displayable":{"type":["boolean","null"],"description":"Show this alias in public name displays."},"name":{"type":"string","description":"Alternate name text"},"type":{"oneOf":[{"$ref":"#/components/schemas/PersonAliasType"},{"type":"null"}],"description":"Alias type classification"}},"required":["name"],"description":"Alternate name used for search and display","title":"EntityNameAliasPersonAliasType"},"ContentSourceType":{"type":"string","description":"Kind of content a similarity match came from; new kinds may be added.","title":"ContentSourceType"},"ContentEmbeddingMatch":{"type":"object","properties":{"computedAt":{"type":"string","format":"date-time","description":"Timestamp when the embedding row was computed."},"cosineDistance":{"type":"number","format":"double","description":"pgvector cosine distance where lower is closer."},"cosineScore":{"type":"number","format":"double","description":"Cosine similarity score where higher is closer."},"modelVersion":{"type":"string","description":"Embedding model/profile version for this row."},"rank":{"type":"integer","description":"Rank by meaning similarity among the nearest-neighbor candidates returned, starting at 1."},"sourceHash":{"type":"string","description":"SHA-256 hash of the source content."},"sourceId":{"type":"string","description":"Content embedding source identifier."},"sourceType":{"$ref":"#/components/schemas/ContentSourceType","description":"Kind of content that matched."}},"required":["computedAt","cosineDistance","cosineScore","modelVersion","rank","sourceHash","sourceId","sourceType"],"description":"Why content matched a meaning-based (semantic) search.","title":"ContentEmbeddingMatch"},"Person":{"type":"object","properties":{"createdAt":{"type":["string","null"],"format":"date-time","description":"Record creation timestamp"},"gender":{"type":["string","null"]},"id":{"type":"string","format":"uuid","description":"Person id (UUID)"},"image":{"$ref":"#/components/schemas/PersonImage"},"lastModifiedAt":{"type":["string","null"],"format":"date-time","description":"Provenance-grounded last-modified watermark (schema.org dateModified): the latest effective time across all writes attributed to this person."},"nameAlias":{"type":"array","items":{"$ref":"#/components/schemas/EntityNameAliasPersonAliasType"},"description":"Display and search aliases for this person"},"nameDisplay":{"type":"string","description":"Name to display: nameFull with the nickname in parentheses after the given name (`William (Bill) Alan Callahan`). Equals nameFull when the person has no nickname or nameFull already shows it; match and search on nameFull, never on this."},"nameFirst":{"type":["string","null"]},"nameFull":{"type":"string"},"nameLast":{"type":["string","null"]},"nameMiddle":{"type":["string","null"],"description":"Middle name as stored after name normalization"},"nickname":{"type":["string","null"]},"publicId":{"type":["string","null"],"pattern":"^p[0-9A-Za-z]{12}$","description":"Stable, immutable public handle (e.g. `pV1StGXR8Z5ab`). Never changes once assigned, unlike the slug. Null on responses that do not include it and on older records not yet given a handle."},"semanticMatch":{"oneOf":[{"$ref":"#/components/schemas/ContentEmbeddingMatch"},{"type":"null"}],"description":"Why this person matched a meaning-based (semantic) search; set only on semantic searches."},"slug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"suffix":{"type":["string","null"]},"text":{"$ref":"#/components/schemas/EntityTextBundle","description":"Always empty: people carry no biography text."},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Last modification timestamp"},"urlLink":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"Current URLs on keyword list/search pages with includeUrl; else absent."}},"required":["id","image","nameAlias","nameDisplay","nameFull","slug","text"],"description":"A person's core profile fields.","title":"Person"},"PersonEnrichment":{"type":"object","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/Address"},"description":"Addresses associated with the person"},"urlLink":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"External and social URL links associated with the person"}},"required":["address","urlLink"],"description":"Supplemental person data — addresses and URL links","title":"PersonEnrichment"},"PersonGraphMember":{"type":"object","properties":{"isCurrent":{"type":["boolean","null"]},"personId":{"type":"string","format":"uuid","description":"Associated person id"},"personImage":{"$ref":"#/components/schemas/PersonImage","description":"The person's image fields."},"personName":{"type":"string","description":"Person display name"},"personSlug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."},"titleName":{"type":["string","null"],"description":"Job title text for this role (read-only)."}},"required":["personId","personImage","personName","personSlug"],"description":"Short person card with the person's title at the entity","title":"PersonGraphMember"},"EntityValuationDataConfidence":{"type":"string","enum":["low","medium","high"],"description":"Confidence tier for this data point.","title":"EntityValuationDataConfidence"},"EntityResearchValueType":{"type":"string","enum":["text","numeric","monetary","percentage","date"],"description":"Kind of value a research detail holds","title":"EntityResearchValueType"},"EntityResearchFactValue":{"type":"object","properties":{"asOfDate":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Date the research fact applies to, preserving the source's calendar or timestamp precision."},"currentEligible":{"type":["boolean","null"],"description":"Whether this fact counts as current, taken from its research detail."},"dataConfidence":{"oneOf":[{"$ref":"#/components/schemas/EntityValuationDataConfidence"},{"type":"null"}]},"dateValue":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Date-valued research fact, preserving the source's year, month, day, or timestamp precision."},"decimalValue":{"type":["string","null"],"description":"Lossless monetary decimal string; numericValue is only its legacy approximation. Absent for legacy-only numbers."},"measurementBasis":{"type":["string","null"],"description":"Source-stated measurement/accounting basis; null means unknown."},"numericValue":{"type":["number","null"],"format":"double"},"referenceValue":{"type":["string","null"]},"reportingScope":{"type":["string","null"],"description":"Source-stated reporting scope; null means unknown."},"source":{"type":["string","null"]},"textValue":{"type":["string","null"]},"updatedAt":{"type":["string","null"],"format":"date-time"},"valueType":{"$ref":"#/components/schemas/EntityResearchValueType"}},"required":["valueType"],"description":"A typed research fact value, nested under the entity's research fields","title":"EntityResearchFactValue"},"EmployeeCount":{"type":"object","properties":{"asOfDate":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Date the employee count applies to, preserving the available calendar or timestamp precision."},"fact":{"$ref":"#/components/schemas/EntityResearchFactValue"},"id":{"type":"string"}},"required":["fact","id"],"description":"Employee-count time-series point for an entity","title":"EmployeeCount"},"PersonGraphSimilarEntity":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityFundraiseTransactionEntity","description":"Entity card: core identity plus total funding"},"keyPerson":{"type":"array","items":{"$ref":"#/components/schemas/PersonGraphMember"},"description":"Top-ranked current people at the similar entity"}},"required":["entity","keyPerson"],"description":"Similar-entity card with its key people","title":"PersonGraphSimilarEntity"},"PersonGraphCareerContext":{"type":"object","properties":{"colleague":{"type":"array","items":{"$ref":"#/components/schemas/PersonGraphMember"},"description":"People associated with the same entity, excluding the subject person, ranked by currency and recency"},"employeeCount":{"oneOf":[{"$ref":"#/components/schemas/EmployeeCount"},{"type":"null"}],"description":"Most recent employee-count research fact when one is recorded"},"entity":{"$ref":"#/components/schemas/EntityFundraiseTransactionEntity","description":"Entity card: core identity plus total funding"},"primaryAddress":{"oneOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}],"description":"Primary address of the entity when one is recorded"},"recentNews":{"type":"array","items":{"$ref":"#/components/schemas/News"},"description":"Most recent news linked to the entity, newest first"},"similarEntity":{"type":"array","items":{"$ref":"#/components/schemas/PersonGraphSimilarEntity"},"description":"Entities similar to this entity, from aVenture's similar-entity lists"}},"required":["colleague","entity","recentNews","similarEntity"],"description":"Entity facts, recent news, colleagues, and similar entities for one associated entity","title":"PersonGraphCareerContext"},"PersonGraphCoInvestor":{"type":"object","properties":{"overlapCount":{"type":"integer","description":"Number of shared fundraise transactions between the two people"},"person":{"$ref":"#/components/schemas/PersonGraphMember","description":"The co-investor's person card"},"round":{"type":["string","null"],"description":"Round label of the shared fundraise transaction"},"sharedEntity":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Entity whose funding round both people participated in"},"transactionId":{"type":["string","null"],"format":"uuid","description":"Shared fundraise transaction id"}},"required":["overlapCount","person"],"description":"Person who co-invested with the subject, with the shared context","title":"PersonGraphCoInvestor"},"PersonGraph":{"type":"object","properties":{"careerContext":{"type":"array","items":{"$ref":"#/components/schemas/PersonGraphCareerContext"},"description":"One entry per entity the person holds or held an association with, current first"},"coInvestor":{"type":"array","items":{"$ref":"#/components/schemas/PersonGraphCoInvestor"},"description":"People who participated in the same fundraise transactions or invested in the same companies, ranked by overlap count and recency"},"computedAt":{"type":["string","null"],"format":"date-time","description":"Instant the document was materialized; null only when no document exists yet and an asynchronous recompute has been requested"}},"required":["careerContext","coInvestor"],"description":"\n        Precomputed professional-graph document for one person: career context per associated\n        entity (entity facts, recent news, colleagues, similar entities with key people), plus\n        co-investors. Lists are capped and pre-ranked server-side; the response is the display\n        order. The graph is computed ahead of time; member names, images, and slugs are filled in\n        from current person records when you read it. computedAt is null only when the graph has\n        not been computed yet.\n        ","title":"PersonGraph"},"PersonInvestedCompany":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Entity"},"headquartersCity":{"type":["string","null"],"description":"Headquarters city of the investee at read time, when known"},"headquartersCountry":{"type":["string","null"],"description":"Headquarters country of the investee, when known"},"headquartersRegion":{"type":["string","null"],"description":"Headquarters region (state or province) of the investee, when known"},"industry":{"type":["string","null"],"description":"Primary industry classification of the investee, when known"}},"required":["entity"],"description":"Company metadata associated with a person investment","title":"PersonInvestedCompany"},"EntityFundraise":{"type":"object","properties":{"amountRaised":{"type":["number","null"],"format":"double"},"dateAnnounced":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Announced date of the fundraise round; null when unknown. Preserves the source's calendar or timestamp precision."},"id":{"type":"string","format":"uuid","description":"Funding round id (UUID)"},"image":{"$ref":"#/components/schemas/EntityImage"},"investorCount":{"type":["integer","null"]},"nameBrand":{"type":"string"},"round":{"type":["string","null"]},"status":{"type":["string","null"]},"valuationPostMoney":{"type":["number","null"],"format":"double"}},"required":["id","image","nameBrand"],"description":"Fundraise transaction metadata linked to a person investment","title":"EntityFundraise"},"PersonInvestment":{"type":"object","properties":{"amount":{"type":["number","null"],"format":"double"},"company":{"$ref":"#/components/schemas/PersonInvestedCompany"},"date":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Announced date of the fundraise round. Use this field for when the investment happened; null when the round date is unknown."},"fundraiseTransaction":{"oneOf":[{"$ref":"#/components/schemas/EntityFundraise"},{"type":"null"}]},"fundraiseTransactionId":{"type":"string","format":"uuid","description":"Funding round id (UUID)"},"id":{"type":"string"},"investmentDate":{"type":"string","format":"date-time","description":"When aVenture recorded this person's participation in the round. It is not the investment date: imported portfolios share their import date. Use date for when the round happened."},"investorAttribution":{"oneOf":[{"$ref":"#/components/schemas/FundraiseInvestmentAttribution"},{"type":"null"}],"description":"Investor-specific attribution for this person's participation in the fundraise round. amountInvested is a plain decimal number in the fundraise transaction currency and is not added to amount."},"round":{"type":["string","null"]}},"required":["company","fundraiseTransactionId","id","investmentDate"],"description":"A person's investment in an entity's funding round","title":"PersonInvestment"},"InvestorPortfolioOutcome":{"type":"string","description":"Observed recipient status, with closed taking precedence over acquired, then public, then operating. UNKNOWN means no supported current-status bucket. Acquired and public are not dated exits; closed is not a proved investor write-off.","title":"InvestorPortfolioOutcome"},"InvestorPortfolioRecipient":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Entity"},"funding":{"$ref":"#/components/schemas/EntityFundingDetail"}},"required":["entity","funding"],"description":"A portfolio recipient and the funding aVenture has recorded for it.","title":"InvestorPortfolioRecipient"},"SortObject":{"type":"object","properties":{"empty":{"type":"boolean"},"sorted":{"type":"boolean"},"unsorted":{"type":"boolean"}},"title":"SortObject"},"PageableObject":{"type":"object","properties":{"offset":{"type":"integer","format":"int64"},"pageNumber":{"type":"integer"},"pageSize":{"type":"integer"},"paged":{"type":"boolean"},"sort":{"$ref":"#/components/schemas/SortObject"},"unpaged":{"type":"boolean"}},"title":"PageableObject"},"PageInvestorPortfolioRecipient":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/InvestorPortfolioRecipient"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageInvestorPortfolioRecipient"},"InvestorPortfolioSector":{"type":"object","properties":{"industry":{"$ref":"#/components/schemas/EntityTag"},"recipientCount":{"type":"integer"}},"required":["industry","recipientCount"],"description":"One exclusive primary editorial industry group.","title":"InvestorPortfolioSector"},"PageInvestorPortfolioSector":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/InvestorPortfolioSector"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageInvestorPortfolioSector"},"InvestorPortfolio":{"type":"object","properties":{"ambiguousSectorCount":{"type":"integer","description":"Recipients with more than one distinct current primary industry."},"classifiedRecipientCount":{"type":"integer","description":"Recipients with exactly one current primary editorial industry."},"observedAt":{"type":"string","format":"date-time","description":"Database snapshot read time; not the date of an exit, closure or investment."},"outcome":{"$ref":"#/components/schemas/InvestorPortfolioOutcome"},"rankableRecipientCount":{"type":"integer","description":"Recipients with a recorded USD capital-raised aggregate. Its round/amount/FX coverage remains on each recipient's funding object. Not a count of known returns."},"recipient":{"$ref":"#/components/schemas/PageInvestorPortfolioRecipient","description":"Complete selected recipient population, paged in descending recorded funding.totalRaisedUsd order (unknown last), then entity id. Capital raised is only a declared ordering proxy, not exit consideration or investor success. Funding coverage and missing values must remain visible. Closed/inactive recipients do not establish a realized loss, cause of failure or historical rate."},"recipientCount":{"type":"integer"},"sector":{"$ref":"#/components/schemas/PageInvestorPortfolioSector","description":"Exclusive single-primary editorial industry groups, ordered by recipient count descending then canonical industry id. Missing and ambiguous industries are counted separately, never assigned the first tag. Page totalElements counts groups."},"unknownSectorCount":{"type":"integer","description":"Recipients with no current primary editorial industry."}},"required":["ambiguousSectorCount","classifiedRecipientCount","observedAt","outcome","rankableRecipientCount","recipient","recipientCount","sector","unknownSectorCount"],"description":"Current public-detail-visible recipients of this investor's direct and current primary managed-fund participations, excluding bankruptcy proceedings and funds without public-detail visibility. Counts are distinct recipients in the selected current-status cohort, not investor holdings, dated exits, realized returns or losses. Both pages use the requested page and size independently; their totals and coverage describe the complete cohort.","title":"InvestorPortfolio"},"StageFrequency":{"type":"object","properties":{"count":{"type":"integer"},"stage":{"type":"string"}},"required":["count","stage"],"description":"Equity stage computed from each round's calculatedRoundLabel, with how many deals reached it, most frequent first.","title":"StageFrequency"},"EntityFundraiseInvestorActivity":{"type":"object","properties":{"acquiredRecipientCount":{"type":["integer","null"],"description":"Distinct recorded recipients currently Acquired or Acquired Subsidiary; not investor exits. Null until the status breakdown has been calculated."},"attributedInvestmentCount":{"type":"integer","description":"Count of participations with a USD-attributed investor-level amount — the coverage denominator behind totalAmountInvestedUsd, averageAmountInvestedUsd, largestAmountInvestedUsd, and smallestAmountInvestedUsd."},"averageAmountInvestedUsd":{"type":["number","null"],"format":"double","description":"Average investor-level attributed amount per participation, restricted to rounds whose transaction functional currency is USD. Null when no USD-attributed amounts exist for this investor."},"closedRecipientCount":{"type":["integer","null"],"description":"Distinct recorded recipients currently Closed, Closed (Acquihire), or Inactive; not investor write-offs. Null until the status breakdown has been calculated."},"currentPortfolioCount":{"type":"integer","description":"Legacy Operating-status recipient count, including public recipients; not current holdings. Use operatingRecipientCount.","deprecated":true},"largestAmountInvestedUsd":{"type":["number","null"],"format":"double","description":"Largest single investor-level attributed amount, restricted to rounds whose transaction functional currency is USD. Null when no USD-attributed amounts exist for this investor."},"operatingRecipientCount":{"type":["integer","null"],"description":"Distinct recorded recipients currently Operating, excluding the public bucket; not current holdings. Null until the status breakdown has been calculated."},"portfolio":{"oneOf":[{"$ref":"#/components/schemas/InvestorPortfolio"},{"type":"null"}],"description":"Selected fresh public recipient cohort and paged sector/recipient evidence. Null when portfolioOutcome was not requested or this capability is unavailable. Its visibility and snapshot differ from the legacy stored activity totals."},"portfolioCompanyCount":{"type":"integer","description":"Distinct recorded recipients this investor has participated in, across all recipient operating statuses. Counts recipients, whereas totalInvestment counts distinct fundraise transactions."},"publicRecipientCount":{"type":["integer","null"],"description":"Distinct recorded recipients with current unconflicted Public ownership, or legacy Public status, excluding acquired/closed recipients; not exits. Unknown statuses are not inferred from funding. Null until the status breakdown has been calculated."},"smallestAmountInvestedUsd":{"type":["number","null"],"format":"double","description":"Smallest single investor-level attributed amount, restricted to rounds whose transaction functional currency is USD. Null when no USD-attributed amounts exist for this investor."},"topInvestmentStage":{"type":"array","items":{"$ref":"#/components/schemas/StageFrequency"}},"totalAmountInvestedUsd":{"type":["number","null"],"format":"double","description":"Sum of investor-level attributed amounts (amount_invested) restricted to rounds whose transaction functional currency is USD. Null when no USD-attributed amounts exist for this investor."},"totalInvestment":{"type":"integer","description":"Recorded round participations, including acquisitions and grants; not holdings."},"totalPortfolioExit":{"type":"integer","description":"Legacy acquired-status recipient count; not investor exits. Use acquiredRecipientCount.","deprecated":true},"totalWriteOff":{"type":"integer","description":"Legacy closed-status recipient count; not investor write-offs. Use closedRecipientCount.","deprecated":true}},"required":["attributedInvestmentCount","currentPortfolioCount","portfolioCompanyCount","topInvestmentStage","totalInvestment","totalPortfolioExit","totalWriteOff"],"description":"Investor-perspective activity aggregate for entity and person investors.","title":"EntityFundraiseInvestorActivity"},"PersonSimilarityOrigin":{"type":"string","enum":["precomputed","live"],"description":"Provenance origin for a similar-person result row.","title":"PersonSimilarityOrigin"},"PersonSimilarityContext":{"type":"object","properties":{"compositeScore":{"type":["number","null"],"format":"double","description":"Composite section-fusion similarity score."},"cosineScore":{"type":["number","null"],"format":"double","description":"Cosine similarity score where higher is closer."},"matchedSectionWeight":{"type":["number","null"],"format":"double","description":"Total normalized source-section weight matched."},"origin":{"$ref":"#/components/schemas/PersonSimilarityOrigin"},"rank":{"type":"integer","description":"1-based position in the merged result page"},"sharedSectionCount":{"type":["integer","null"],"description":"Number of source/target sections compared."}},"required":["origin","rank"],"description":"Per-row provenance for a similar-person result.","title":"PersonSimilarityContext"},"PersonSimilarityResult":{"type":"object","properties":{"currentRole":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonAssociation"},{"type":"null"}],"description":"Current titled association for the similar-person card; null when no current titled role is available."},"person":{"$ref":"#/components/schemas/Person"},"similarity":{"$ref":"#/components/schemas/PersonSimilarityContext"}},"required":["person","similarity"],"description":"Similar person list row with the provenance that explains why it appears. Rows carry the canonical Person projection; load full detail through the person detail endpoints.","title":"PersonSimilarityResult"},"PersonDetail":{"type":"object","properties":{"articleCount":{"type":["integer","null"]},"association":{"type":"array","items":{"$ref":"#/components/schemas/EntityPersonAssociation"},"description":"Entity associations for this person"},"blogPost":{"type":["array","null"],"items":{"$ref":"#/components/schemas/BlogPost"},"description":"Newest active blog posts first; present only when include names blogPost"},"core":{"$ref":"#/components/schemas/Person"},"coveringRunId":{"type":["string","null"],"format":"uuid","description":"The queued or running full-research run covering this record; null when none, and always null on people embedded in another record."},"enrichment":{"$ref":"#/components/schemas/PersonEnrichment"},"graph":{"oneOf":[{"$ref":"#/components/schemas/PersonGraph"},{"type":"null"}],"description":"Precomputed person graph; present only when include names graph"},"investment":{"type":"array","items":{"$ref":"#/components/schemas/PersonInvestment"},"description":"Investments associated with this person. When include names investment, these are newest first, the same rows as GET /v1/people/{personId}/investments?sort=date,desc&size=200 page 0: fewer than 200 rows is the whole list, otherwise continue at page=1 with the same sort and size."},"investorActivity":{"oneOf":[{"$ref":"#/components/schemas/EntityFundraiseInvestorActivity"},{"type":"null"}],"description":"Investor activity rollup; present only when include names investorActivity"},"nameAlias":{"type":"array","items":{"$ref":"#/components/schemas/EntityNameAliasPersonAliasType"},"description":"Display and search aliases for this person"},"similar":{"type":["array","null"],"items":{"$ref":"#/components/schemas/PersonSimilarityResult"},"description":"Most similar people, highest score first; present only when include names similar"}},"required":["association","core","enrichment","investment","nameAlias"],"description":"Full person detail: core identity, additional data, associations, and investments. Core fields are under core (for example .core.slug or .core.nameFull).","title":"PersonDetail"},"EntityProfileHeadline":{"type":"string","description":"Profile headline derived from record kind, current market-standing ownership (Public or Private only), a Business Line's proven public controlling parent, and operating status. Never a funding stage. Render an unrecognized value verbatim.","title":"EntityProfileHeadline"},"EntityProfileStatus":{"type":"object","properties":{"headline":{"$ref":"#/components/schemas/EntityProfileHeadline","description":"Headline label for this record."},"isAcquired":{"type":["boolean","null"],"description":"Operating status records an acquisition; null when no status is established."},"isClosed":{"type":["boolean","null"],"description":"Stopped operating with no surviving business; null when no status is established."},"isTerminal":{"type":["boolean","null"],"description":"Operating status is terminal; null when no status is established."}},"required":["headline"],"description":"Read-only profile status derived from stored kind, ownership, operating status, and a Business Line's proven public controlling parent. Funding stage stays on enrichment.fundingDetail.stage.","title":"EntityProfileStatus"},"EntityProviderRelationshipType":{"type":"string","enum":["fundManagerFirm","productService"],"description":"Relationship linking the subject to this provider.","title":"EntityProviderRelationshipType"},"EntityProvider":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Entity","description":"Provider core. Its image is the provider's own logo, else the logo of the provider's current parent entity."},"headquarters":{"oneOf":[{"$ref":"#/components/schemas/Address"},{"type":"null"}],"description":"The provider's current headquarters address."},"relationshipType":{"$ref":"#/components/schemas/EntityProviderRelationshipType","description":"Relationship linking the subject to this provider."}},"required":["entity","relationshipType"],"description":"\n        The current entity a fund or product/service is offered by: a fund's manager organization, a\n        product/service's provider, through its current primary relationship to a live, publicly\n        listed provider.\n        Null on every other entity type.\n        ","title":"EntityProvider"},"EntityComparisonSignals":{"type":"object","properties":{"acquirer":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Public buyer of the newest completed acquisition; null for announced or non-public buyers."},"disclosedStage":{"type":["string","null"],"description":"Disclosed equity ladder label from fundingDetail.disclosedStage; financing history, not the provider operating status or current market standing."},"fundingStage":{"oneOf":[{"$ref":"#/components/schemas/FundingStage"},{"type":"null"}],"description":"Latest funding stage when known"},"ownership":{"type":"array","items":{"type":"string"},"description":"Provider ownership from current tags and current primary parent or acquirer relationships"},"pricingModel":{"type":"array","items":{"type":"string"},"description":"Provider pricing/revenue model (current typeRevenue tags)"},"profileStatus":{"$ref":"#/components/schemas/EntityProfileStatus","description":"Derived profile status of the provider"},"sellsTo":{"type":"array","items":{"type":"string"},"description":"Customer types the provider sells to (current typeCustomer tags)"},"totalRaised":{"type":["number","null"],"format":"double","description":"Total capital raised in USD, each round converted at its announcement-date rate; null when no round converts to USD or no funding is known"},"website":{"type":["string","null"],"format":"uri","description":"Provider website URL when known"}},"required":["ownership","pricingModel","sellsTo"],"description":"Competitive comparison signals for a provider entity — sells-to customers, pricing model, ownership, funding stage, total raised, and website. Taken from the entity's additional data for side-by-side comparison; the founding year is in the entity's core fields.","title":"EntityComparisonSignals"},"EntityRelationship":{"type":"object","properties":{"asOf":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated effective date, preserving stored precision"},"comparisonSignals":{"oneOf":[{"$ref":"#/components/schemas/EntityComparisonSignals"},{"type":"null"}],"description":"Competitive comparison signals for the joined entity when it is a product/service provider — sells-to, pricing model, ownership, funding, and website. Null for every other joined entity. Lets comparison surfaces render provider columns without a second per-provider fetch."},"createdAt":{"type":["string","null"],"format":"date-time"},"detail":{"type":["string","null"],"description":"Relationship-specific detail. acceleratorParticipant rows use `batch=<label>`, or `program=<name>; batch=<label>` only for a distinct sub-program. program= never repeats the accelerator name or the batch, and batch= never contains the accelerator name — the row already points to the accelerator entity."},"entity":{"$ref":"#/components/schemas/Entity","description":"Joined entity on the other side of this relationship — read-only display projection. Writes name one endpoint in the URL path and the other in targetEntityId; the relationship type determines stored orientation."},"id":{"type":["integer","null"],"description":"Integer id of the relationship record, not an entity UUID"},"isCurrent":{"type":["boolean","null"],"description":"Whether this relationship is current. Default relationship reads return only rows where isCurrent=true and isPrimary=true."},"isPrimary":{"type":["boolean","null"],"description":"Whether this relationship is the primary one shown. isCurrent=false or isPrimary=false hides the row from default relationship reads."},"profileStatus":{"oneOf":[{"$ref":"#/components/schemas/EntityProfileStatus"},{"type":"null"}],"description":"Derived profile status of the joined entity, as its list and detail reads report it; absent on write responses, nested rows, and identity-only reads."},"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page behind this relationship, read from the provenance event that wrote it; absent for internal sources."},"relationship":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelationship"},"description":"Nested relationships for the joined entity"},"relationshipType":{"type":"string","description":"Canonical relationship type, one of: acceleratorParticipant, acquirer, affinity, calculated, competingProductService, competitor, customer, fundManagerFirm, parent, productService, serviceProvider, similarCompany, spinOffFrom, successor. Similarity endpoint rows use the stored relationship type when one exists and calculated when the row comes from similarity alone."},"sourceEntityId":{"type":["string","null"],"format":"uuid","description":"Canonical source entity UUID stored on the relationship row. Compare with the requested entity id and `/v1/entities/relationships/types` sourceRole/targetRole to orient directional relationships such as parent."},"targetEntityId":{"type":["string","null"],"format":"uuid","description":"Canonical target entity UUID stored on the relationship row. Compare with the requested entity id and `/v1/entities/relationships/types` sourceRole/targetRole to orient directional relationships such as parent."},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["entity","relationship","relationshipType"],"description":"A relationship between two entities, described from the requested entity toward the related one","title":"EntityRelationship"},"EntityAcceleratorParticipation":{"type":"object","properties":{"accelerator":{"$ref":"#/components/schemas/Entity","description":"The accelerator's basic entity record, from the acceleratorParticipant relationship"},"acceleratorName":{"type":"string","description":"Full accelerator participation name, including program detail"},"asOfDate":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated participation effective date or instant"},"batch":{"type":["string","null"],"description":"Accelerator batch or cohort"},"id":{"type":"string","description":"Stable id of this participation, tied to the acceleratorParticipant relationship it comes from"},"program":{"type":["string","null"],"description":"Accelerator program name, when the source distinguishes one"},"status":{"type":["string","null"],"description":"Accelerator participation status"}},"required":["accelerator","acceleratorName","asOfDate","id"],"description":"One accelerator program the entity took part in, from its acceleratorParticipant relationship, with the accelerator's own entity record.","title":"EntityAcceleratorParticipation"},"ResearchDerivedBucket":{"type":"string","enum":["pastDue","withinThreeMonths","threeToSixMonths","sixToTwelveMonths","twelveToTwentyFourMonths","beyondTwoYears"],"description":"Bucket computed from now() to the target date with inclusive boundaries at 0, 3, 6, 12, and 24 months","title":"ResearchDerivedBucket"},"ResearchDerivedRange":{"type":"object","properties":{"asOfDate":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Observation date from the source detail row"},"bucket":{"$ref":"#/components/schemas/ResearchDerivedBucket","description":"Derived bucket using inclusive 0, 3, 6, 12, and 24 month boundaries"},"monthsFromNow":{"type":"integer","description":"Whole months from now() to targetDate"},"targetDate":{"type":"string","format":"date-time","description":"Absolute target date stored for a targetDateAbsolute detail row"}},"required":["asOfDate","bucket","monthsFromNow","targetDate"],"description":"Read-only time range computed for targetDateAbsolute research details","title":"ResearchDerivedRange"},"EntityResearchDetail":{"type":"object","properties":{"asOfDate":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Date the research detail applies to, preserving the source's calendar or timestamp precision."},"currentEligible":{"type":["boolean","null"],"description":"Eligibility as a current fact at response time; multiple rows may be eligible. Select the first eligible row in the returned authoritative order."},"decimalValue":{"type":["string","null"],"description":"Exact monetary amount as a plain decimal string. Absent on legacy Double-only facts; never reconstruct exactness from discreteValue."},"derivedRange":{"oneOf":[{"$ref":"#/components/schemas/ResearchDerivedRange"},{"type":"null"}],"description":"Read-only range derived only for targetDateAbsolute detail rows"},"discreteValue":{"type":["number","null"],"format":"double"},"entityId":{"type":"string","format":"uuid","description":"Entity id (UUID)"},"id":{"type":"integer"},"measurementBasis":{"type":["string","null"],"description":"Source-stated measurement/accounting basis; null means unknown."},"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page behind this value, read from the provenance event that wrote it; absent for internal sources."},"reportingScope":{"type":["string","null"],"description":"Source-stated reporting scope; null means unknown."},"textValue":{"type":["string","null"]},"typeResearchDetail":{"type":"string"},"updatedAt":{"type":["string","null"],"format":"date-time"},"valueResearchDetail":{"type":["string","null"]},"valueType":{"$ref":"#/components/schemas/EntityResearchValueType"}},"required":["entityId","id","typeResearchDetail","valueType"],"description":"Research detail record for an entity.","title":"EntityResearchDetail"},"EntityFinancial":{"type":"object","properties":{"currency":{"type":["string","null"],"description":"Stored revenue currency, when known"},"entityId":{"type":"string","format":"uuid","description":"Entity that owns this financial row"},"functionalCurrency":{"type":["string","null"],"description":"Stored functional currency, independent of revenue currency"},"id":{"type":"integer","description":"Financial row ID for the existing private provenance read"},"period":{"type":"string","maxLength":6,"description":"Exact stored period token"},"revenue":{"type":["string","null"],"description":"Exact stored integer revenue as text; no FX or scale adjustment"},"year":{"type":"integer","description":"Stored reporting year"}},"required":["currency","entityId","functionalCurrency","id","period","revenue","year"],"description":"Stored financial facts for one exact year and period","title":"EntityFinancial"},"ContentCompliance":{"type":"object","properties":{"characterCount":{"type":"integer","description":"Character count of the row text (UTF-16 units)."},"meetsRequirements":{"type":"boolean","description":"Whether the text meets every length and paragraph rule for its type."},"violation":{"type":"array","items":{"type":"string"},"description":"One human-readable reason per unmet rule; empty when compliant."},"wordCount":{"type":"integer","description":"Word count of the row text (whitespace-separated tokens)."}},"required":["characterCount","meetsRequirements","violation","wordCount"],"description":"Character and word counts for the text, and whether it meets its text type's rules (word and character limits and paragraph shape). violation lists each unmet rule and is empty when the text meets them all.","title":"ContentCompliance"},"EntityResearchSnippet":{"type":"object","properties":{"compliance":{"oneOf":[{"$ref":"#/components/schemas/ContentCompliance"},{"type":"null"}],"description":"Character and word counts for this snippet and whether it meets its type's length and paragraph rules; null when not checked."},"entityId":{"type":"string","format":"uuid","description":"Entity id (UUID)"},"id":{"type":"integer"},"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page behind this value, read from the provenance event that wrote it; absent for internal sources."},"text":{"type":"string"},"textType":{"type":"string"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["entityId","id","text","textType"],"description":"Persisted research snippet row for one entity.","title":"EntityResearchSnippet"},"EntityResearch":{"type":"object","properties":{"acceleratorParticipation":{"type":"array","items":{"$ref":"#/components/schemas/EntityAcceleratorParticipation"},"description":"Accelerator programs the entity took part in, derived from its accelerator research records"},"detail":{"type":"array","items":{"$ref":"#/components/schemas/EntityResearchDetail"},"description":"Structured research details the caller is allowed to see"},"financial":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityFinancial"},"description":"Stored financial facts selected by financialYear and financialPeriod; omitted when not selected, empty when no matching row exists. Includes no private provenance."},"snippet":{"type":"array","items":{"$ref":"#/components/schemas/EntityResearchSnippet"},"description":"Research text snippets for this entity"}},"required":["acceleratorParticipation","detail","snippet"],"description":"Research findings for an entity: structured research details, written research snippets, and accelerator participation.","title":"EntityResearch"},"UniqueIdType":{"type":"string","description":"External identifier type that maps an owner to a well-known registry id.","title":"UniqueIdType"},"UniqueIdListingStanding":{"type":"string","description":"Source-reported standing of a ticker assignment, not the entity's operating or ownership state.","title":"UniqueIdListingStanding"},"UniqueId":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","description":"Row creation timestamp."},"effectiveFrom":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated beginning of this ticker assignment at supplied precision."},"effectiveTo":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated end of this assignment; null does not mean current."},"id":{"type":"integer","description":"Unique-id row id."},"idType":{"$ref":"#/components/schemas/UniqueIdType","description":"Identifier type."},"identifier":{"type":"string","description":"Identifier value as issued by the registry (normalized per type)."},"listingStanding":{"oneOf":[{"$ref":"#/components/schemas/UniqueIdListingStanding"},{"type":"null"}],"description":"Listing-specific source assertion, not entity ownership or operating status."},"owner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Owning entity or person id; exactly one nested id is present."},"shareClass":{"type":["string","null"],"description":"Source-stated ticker share class; unknown absent."},"source":{"type":["string","null"],"description":"Attribution source label for the mapping, when recorded."},"standingAsOf":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Date from which the source says this listing standing applies, at the precision supplied."},"updatedAt":{"type":"string","format":"date-time","description":"Row update timestamp."},"venue":{"type":["string","null"],"description":"Source-stated ticker venue; exact spelling, unknown absent."}},"required":["createdAt","id","idType","identifier","owner","updatedAt"],"description":"External identifier mapped to one owner (entity or person): for example a company's EIN, SEC CIK, or ticker symbol. Owner carries exactly one entityId or personId.","title":"UniqueId"},"EntityDetail":{"type":"object","properties":{"acquirer":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Public buyer of the newest completed acquisition; null for announced or non-public buyers."},"comparisonAnswer":{"oneOf":[{"$ref":"#/components/schemas/SearchAnswer"},{"type":"null"}],"description":"Optional cited comparison of this public profile with comparisonEntityId in the requested order. Null when not requested, not entitled, withheld, or unavailable. HEAD and detail streams never compose it; ordinary detail admission is unchanged."},"core":{"$ref":"#/components/schemas/Entity","description":"Core entity identity, naming, status, image, and source metadata."},"coveringRunId":{"type":["string","null"],"format":"uuid","description":"The queued or running full-research run covering this record; null when none, and always null on people embedded in another record."},"enrichment":{"$ref":"#/components/schemas/EntityEnrichment","description":"Entity enrichment: addresses, classification, funding summary, text, and URL links."},"fundraiseRound":{"type":"array","items":{"$ref":"#/components/schemas/EntityFundraiseTransaction"},"description":"Fundraise rounds associated with this entity. When newsArticle or an external source reports a newer round not yet listed here, report both and ask the user whether to request a record update via POST /v1/entities/{entityId}/enrichments (CLI: entities enrichments enrich; MCP: aventure_job enrichEntity)."},"newsArticle":{"type":"array","items":{"$ref":"#/components/schemas/News"},"description":"News articles associated with this entity; full-detail search carries the first few, and GET /v1/news?owner.entityId={entityId} lists them all. Articles whose headline names the entity (brand or alias) and were published within a recent window lead, then newest first; explicit sorts and text search on the list are unchanged. When an indexed article reports a newer funding round, role, or milestone not yet reflected in structured fields, report both and offer to request an update on the record."},"person":{"type":"array","items":{"$ref":"#/components/schemas/PersonDetail"},"description":"People associated with this entity; full-detail search carries the first few, and GET /v1/entities/{entityId}/people lists them all."},"profileStatus":{"$ref":"#/components/schemas/EntityProfileStatus","description":"Derived profile status; read-only."},"provider":{"oneOf":[{"$ref":"#/components/schemas/EntityProvider"},{"type":"null"}],"description":"Fund manager firm or product/service provider; null otherwise."},"publicUrl":{"type":["string","null"],"description":"Absolute canonical public URL when this detail has a renderable public route."},"relationship":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelationship"},"description":"Entity relationships."},"research":{"$ref":"#/components/schemas/EntityResearch","description":"Research findings: structured research details, written research snippets, and accelerator participation."},"sitemap":{"$ref":"#/components/schemas/EntitySitemap","description":"Which of the entity's profile pages exist and are listed in the sitemap."},"uniqueId":{"type":"array","items":{"$ref":"#/components/schemas/UniqueId"},"description":"External registry identifiers associated with this entity."}},"required":["core","enrichment","fundraiseRound","newsArticle","person","relationship","research","sitemap","uniqueId"],"description":"\n        Full entity detail: core fields, additional data, research, relationships, external\n        identifiers, fundraising, news, people, and which profile pages exist. Identity and name\n        fields are under core.\n        ","title":"EntityDetail"},"PageEntityDetail":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityDetail"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityDetail"},"ResearchAllowanceType":{"type":"string","description":"Metered allowance. `COMPANY` and `PERSON` meter research runs on company and person-profile targets; `ENTITY_VIEW`, `ENTITY_BRAND`, and `PERSON_VIEW` meter profile and brand reads. Directory exports share `ENTITY_VIEW` for company and investor rows and `PERSON_VIEW` for person rows, once per record per UTC month with detail views; `WEB_SEARCH` meters web searches.","title":"ResearchAllowanceType"},"IdentificationCampusRefusal":{"type":"string","description":"The unmet campus identity proof; supply that evidence before retrying.","title":"IdentificationCampusRefusal"},"SlugResource":{"type":"string","enum":["entity","person","news","blog","content"],"description":"Resource type whose slug is being changed","title":"SlugResource"},"CurrentSlugOwner":{"type":"object","properties":{"deletedAt":{"type":["string","null"],"format":"date-time"},"id":{"type":"string"},"isHidden":{"type":"boolean"},"nameBrand":{"type":["string","null"]},"resourceType":{"$ref":"#/components/schemas/SlugResource"},"showOnSitemap":{"type":"boolean"},"slug":{"type":"string"}},"required":["id","isHidden","resourceType","showOnSitemap","slug"],"description":"Record that currently uses this slug","title":"CurrentSlugOwner"},"EntityClassificationInactiveTagOverride":{"type":"string","enum":["REACTIVATE","ATTACH_INACTIVE"],"description":"Caller-chosen handling when the canonical classification value exists but is dormant.","title":"EntityClassificationInactiveTagOverride"},"DomainConflictType":{"type":"string","description":"Conflict kind that identifies which details shape a 409 response carries.","title":"DomainConflictType"},"SearchDuplicateCandidateScore":{"type":"object","properties":{"externalId":{"type":["string","null"],"description":"Matched external identifier when duplicate scoring used one."},"id":{"type":"string","format":"uuid","description":"Candidate id to read or update when this candidate is the requested record."},"name":{"type":["string","null"],"description":"Candidate display name from the existing record."},"operatingStatus":{"type":["string","null"],"description":"Current operating status for entity candidates."},"publicPath":{"type":["string","null"],"description":"Public API/UI path for the candidate when available."},"reason":{"type":"array","items":{"type":"string"},"description":"Match reasons such as name-exact, slug-exact, url-match, url-current, url-type, or precomputed-similarity. url-match proves the supplied URL/domain matched; url-current additionally proves the candidate still holds that address today, so a candidate with url-match but no url-current matched only through a URL it no longer uses, such as an acquisition redirect. url-type only means the candidate has the same URL category and is review context, not URL identity evidence."},"score":{"type":"integer","description":"Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended record when reason/name/slug/typeRecord match."},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Candidate slug from the existing record."},"typeRecord":{"oneOf":[{"$ref":"#/components/schemas/EntityType"},{"type":"null"}],"description":"Candidate entity type from the existing record."}},"required":["id","reason"],"description":"Duplicate candidate scoring result. Use id/name/slug/typeRecord/reason to decide whether the candidate is the requested record. score ranks review priority; it does not prove absence.","title":"SearchDuplicateCandidateScore"},"NewsCandidateScore":{"type":"object","properties":{"externalId":{"type":["string","null"],"description":"Matched external article identifier when duplicate scoring used one."},"id":{"type":"integer","description":"News article id to read or update when this candidate is the requested article."},"publicationScore":{"type":"integer","description":"Portion of score contributed by the publication match alone; 0 when the publication did not match. A candidate whose score minus publicationScore falls below the review threshold matched only on its outlet, not its story."},"reason":{"type":"array","items":{"type":"string"},"description":"Match reasons for reviewing the candidate. Exact reasons are decision signals regardless of whether score crosses the review threshold."},"score":{"type":"integer","description":"Ranking score for duplicate review. It is not an absence proof; a low score can still be the intended article when reason/slug/externalId match."},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Candidate article slug from the existing record."}},"required":["id","publicationScore","reason","score"],"description":"Duplicate candidate scoring result for news articles. Use id/slug/externalId/reason to decide whether the candidate is the requested article. score ranks review priority; it does not prove absence.","title":"NewsCandidateScore"},"UrlDuplicateJoin":{"type":"object","properties":{"owner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Owner of the URL: either entityId or personId is populated depending on the owner kind. Use the populated id to read or update the owner's URL."},"urlId":{"type":"integer","description":"Identifier of the existing URL record that already holds this address."}},"required":["owner","urlId"],"description":"Entity or person that currently has this URL (after normalization).","title":"UrlDuplicateJoin"},"DomainConflictDetails":{"oneOf":[{"type":"object","properties":{"conflictType":{"$ref":"#/components/schemas/DomainConflictType","description":"Conflict kind that identifies this details shape."},"availableOverrides":{"type":"array","items":{"$ref":"#/components/schemas/EntityClassificationInactiveTagOverride"},"description":"Allowed inactiveTagOverride values for this conflict"},"slug":{"type":"string","description":"Existing dormant value slug or lookup key"},"tagId":{"type":"integer","description":"Existing tag id"}},"required":["conflictType","availableOverrides","slug","tagId"],"description":"ProblemDetail.details for HTTP 409 when a classification value exists but is inactive."},{"type":"object","properties":{"conflictType":{"$ref":"#/components/schemas/DomainConflictType","description":"Conflict kind that identifies this details shape."},"candidate":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SearchDuplicateCandidateScore"},"description":"Entity/person candidates returned by lookup or create duplicate review. If a candidate is the requested record, read/update that candidate by id. Create with duplicate override only after every candidate is reviewed as distinct."},"newsCandidate":{"type":["array","null"],"items":{"$ref":"#/components/schemas/NewsCandidateScore"},"description":"News candidates returned by lookup or create duplicate review. If a candidate is the requested article, read/update that article by id. Otherwise block until source evidence proves a distinct article."},"overridePath":{"type":["string","null"],"description":"Create endpoint to retry only after reviewing the returned candidates and supplying overrideGate=duplicate and overrideReason as query parameters. Null for detail lookup ambiguity, where the next action is review/update/block."},"threshold":{"type":"integer","description":"Review threshold used by duplicate scoring. Scores below this value can still be useful candidate context; this value does not prove absence or authorize create."}},"required":["conflictType","threshold"],"description":"Candidate-review conflict details returned in ProblemDetail.details for create gates and deterministic lookup ambiguity. The returned candidates are the decision surface: update the matching candidate, create with duplicate override only when every candidate is distinct from the source-backed target, or block when identity is unresolved. score and threshold rank review priority; they are not proof that the requested record is absent."},{"type":"object","properties":{"conflictType":{"$ref":"#/components/schemas/DomainConflictType","description":"Conflict kind that identifies this details shape."},"conflictingArticleId":{"type":"integer","description":"Id of the existing article that already has this publication and URL."},"conflictingArticleSlug":{"type":"string","description":"Existing article slug, or empty string when the existing article has no slug. Use with GET /v1/news/lookup?slug= to fetch the conflicting article."},"conflictingArticleTitle":{"type":"string","description":"Existing article title for human-readable diagnostics."}},"required":["conflictType","conflictingArticleId","conflictingArticleSlug","conflictingArticleTitle"],"description":"Typed extension on ProblemDetail.details for HTTP 409 when a news mutation's publication + newsUrlOriginal pair already belongs to another article. The returned fields identify the existing article so the caller can read/update it instead of creating a duplicate."},{"type":"object","properties":{"conflictType":{"$ref":"#/components/schemas/DomainConflictType","description":"Conflict kind that identifies this details shape."},"candidateEntityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Every entity id that currently owns the normalized URL. May be empty when the conflict is between persons; combined with candidatePersonId always > 1."},"candidatePersonId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Every person id that currently owns the normalized URL. May be empty when the conflict is between entities; combined with candidateEntityId always > 1."},"hint":{"type":"string","description":"Human-readable hint describing which disambiguating query parameters to add."},"normalizedUrl":{"type":["string","null"],"description":"Normalized URL match key the lookup resolved against. Null when normalization could not produce a stable key."},"url":{"type":"string","description":"Raw URL the caller queried."},"urlType":{"type":["string","null"],"description":"URL type the caller specified, or null if the lookup did not constrain by urlType."}},"required":["conflictType","candidateEntityId","candidatePersonId","hint","url"],"description":"Typed extension on ProblemDetail.details for HTTP 409 when a strict URL lookup (GET /v1/entities/lookup-exact?url=...) resolves to more than one current owner. The candidate lists return every current owner that matches the normalized URL key; the caller must add disambiguating signals (urlType, typeRecord, slug) to resolve to a single owner."},{"type":"object","properties":{"conflictType":{"$ref":"#/components/schemas/DomainConflictType","description":"Conflict kind that identifies this details shape."},"existingJoin":{"type":"array","items":{"$ref":"#/components/schemas/UrlDuplicateJoin"},"description":"Every entity or person that already has this URL (after normalization) with this urlType. Non-empty when this conflict is emitted."},"fragmentIgnored":{"type":"boolean","description":"True when URL fragment differences were ignored during duplicate matching (i.e., the conflict ignores everything after '#')."},"guidance":{"type":"string","description":"Human-readable guidance on how to resolve the conflict. Defaults to the standard identity and URL ownership checks."},"normalizedUrl":{"type":["string","null"],"description":"Normalized URL match key used for duplicate detection. Null when normalization could not produce a stable key (e.g., malformed input)."},"requestedOwner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Entity or person you tried to add the URL to."},"url":{"type":"string","description":"Raw URL as submitted by the caller (pre-normalization)."},"urlType":{"type":"string","description":"URL type submitted by the caller (e.g., 'website', 'twitter'). The conflict applies only within this urlType."}},"required":["conflictType","existingJoin","fragmentIgnored","guidance","requestedOwner","url","urlType"],"description":"Typed extension on ProblemDetail.details for HTTP 409 when a create/update attempts to set a URL with urlType=website (or another exclusive urlType) that is already a current URL on a different entity or person. The existingJoin list names every current owner of the normalized URL; inspect its identity before changing ownership. A person holds one current LinkedIn person profile (/in/<slug>): a different one answers this conflict with existingJoin naming the person's own held row. An offering sharing its provider's homepage uses the provider relationship without a duplicate URL row."}],"discriminator":{"propertyName":"conflictType"},"description":"Details of an HTTP 409 conflict. conflictType names the shape: URL_DUPLICATE when the URL is already a current URL on another record; STRICT_URL_LOOKUP when an exact URL lookup matches more than one record; DUPLICATE_CREATE_REVIEW when a create or lookup returns candidate records to review; CLASSIFICATION_INACTIVE_TAG when a classification value exists but is inactive; NEWS_SOURCE_URL when another article already has the same publication and URL.","title":"DomainConflictDetails"},"ProblemDetailDisposition":{"type":"string","enum":["TRANSIENT","TERMINAL"],"description":"Whether this classified failure can be retried.","title":"ProblemDetailDisposition"},"RedirectSlugPath":{"type":"object","properties":{"newUrl":{"type":["string","null"]},"oldUrl":{"type":"string"},"targetCurrentSlug":{"type":["string","null"]},"targetId":{"type":["string","null"]},"targetResourceType":{"oneOf":[{"$ref":"#/components/schemas/SlugResource"},{"type":"null"}]}},"required":["oldUrl"],"description":"Redirect slug path","title":"RedirectSlugPath"},"ProseProblem":{"type":"string","description":"Why a sentence or paragraph of entity text or a research snippet was rejected.","title":"ProseProblem"},"ProseViolation":{"type":"object","properties":{"overridable":{"type":"boolean","description":"Whether proseOverrideReason can accept this problem; ProblemDetail.hint says when an override is allowed."},"passage":{"type":"string","description":"The rejected sentence or paragraph, the whole text for a global text-contract violation, or the source URL for a legal-page source."},"problem":{"$ref":"#/components/schemas/ProseProblem","description":"The problem this passage shows."},"reason":{"type":"string","description":"Why the passage was rejected and how to fix it."},"supportedWording":{"type":["string","null"],"description":"Present only on a writerBrief grounding refusal with unsupportedSpan: the passage without those clauses, which its cited quotes support. Absent when that remaining wording is still refused."},"unsupportedSpan":{"type":["array","null"],"items":{"type":"string"},"description":"Present only on a writerBrief grounding refusal of a statement with several clauses: the clauses its cited quotes do not support. Absent when every clause or none is refused."}},"required":["overridable","passage","problem","reason"],"description":"One rejected passage and one problem it shows; a passage with several problems appears once per problem.","title":"ProseViolation"},"ProblemResolutionAction":{"type":"string","enum":["setField","setParameter","removeParameter","useEndpoint","reviewCandidates","authenticate"],"description":"Next action category for the client or agent.","title":"ProblemResolutionAction"},"ProblemResolution":{"type":"object","properties":{"acceptedValue":{"type":["array","null"],"items":{"type":"string"},"description":"Accepted values for the field or parameter, when enumerable."},"action":{"$ref":"#/components/schemas/ProblemResolutionAction","description":"Next action category for the client or agent."},"endpoint":{"type":["string","null"],"description":"Endpoint to call for the next action, when applicable."},"fieldPath":{"type":["string","null"],"description":"Request-body field path that needs attention, when applicable."},"parameter":{"type":["string","null"],"description":"Query or path parameter that needs attention, when applicable."},"retryable":{"type":["boolean","null"],"description":"Whether the same logical request can be retried after the next action."}},"required":["action"],"description":"Machine-readable next action for an aVenture ProblemDetail. For reviewCandidates, inspect ProblemDetail.details candidates and decide update, create-with-override, or block from those returned records.","title":"ProblemResolution"},"ProblemDetail":{"type":"object","properties":{"allowanceType":{"oneOf":[{"$ref":"#/components/schemas/ResearchAllowanceType"},{"type":"null"}],"description":"Which monthly allowance a BILLING_ALLOWANCE refusal exhausted."},"campusProofRefusal":{"oneOf":[{"$ref":"#/components/schemas/IdentificationCampusRefusal"},{"type":"null"}],"description":"For a school campus lookup (NCES records), the evidence from the campus's own website that is still missing; absent for other failures."},"circuitBreaker":{"type":["string","null"]},"code":{"type":["string","null"],"maxLength":128,"description":"Machine-readable secondary code on ProblemDetail.code. Agents should branch on this value when the HTTP status alone does not identify the recovery path. Many codes describe server-side conditions a caller cannot fix: surface them and stop."},"conflictingRecord":{"oneOf":[{"$ref":"#/components/schemas/CurrentSlugOwner"},{"type":"null"}]},"coveringRunId":{"type":["string","null"],"format":"uuid","description":"The caller's own queued or running research request that already covers the record on a harness-run-already-requested problem; absent when another requester or aVenture filed it, and for every other problem."},"detail":{"type":"string"},"details":{"oneOf":[{"$ref":"#/components/schemas/DomainConflictDetails"},{"type":"null"}],"description":"Structured conflict details. A possible duplicate or an ambiguous lookup returns its candidate records; score and threshold rank the candidates and do not prove that the requested record is absent."},"disposition":{"$ref":"#/components/schemas/ProblemDetailDisposition","description":"Whether this classified failure can be retried."},"error":{"type":["object","null"],"additionalProperties":{"type":"string"}},"existingRecordId":{"type":["string","null"],"description":"On a duplicate 409, the id of the stored record the request collided with; read or update that record instead of creating it again. Absent when the conflict names no single stored record."},"existingRedirect":{"oneOf":[{"$ref":"#/components/schemas/RedirectSlugPath"},{"type":"null"}]},"feId":{"type":["string","null"]},"field":{"type":["string","null"],"description":"Rejected input field. With type validation-failed, nameBrand/nameLegal/nameAlias means entity-name or identity admission refused the requested record mutation before its write transaction. Other field and type combinations make no such promise."},"filedRunId":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Research request ids a batch filed or reused for its other records before returning this error; absent for every other error."},"hammingDistance":{"type":["integer","null"],"format":"int64"},"hint":{"type":["string","null"]},"instance":{"type":"string","format":"uri"},"limit":{"type":["integer","null"],"format":"int64","description":"Cap the limitType meter allows for its current period."},"limitType":{"type":["string","null"],"description":"Which meter refused the request; names what limit/used/remaining count."},"matchedBlocklistKey":{"type":["string","null"]},"mediaType":{"type":["string","null"]},"moderationReason":{"type":["string","null"]},"mutationNotApplied":{"type":["boolean","null"],"description":"True only when the operation owner proves that none of the requested record mutations committed. Preparation may have stored source documents or temporary assets. Absent when the mutation outcome is unknown; disposition alone makes no such promise."},"path":{"type":["string","null"]},"properties":{"type":"object","additionalProperties":{"description":"Any type"}},"proseViolation":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ProseViolation"},"description":"Every rejected passage of a PROSE_REJECTED write, once per problem it shows; absent for every other problem."},"remaining":{"type":["integer","null"],"format":"int64","description":"Cap minus used for the limitType meter, never negative."},"requiredRole":{"type":["string","null"]},"resetAt":{"type":["string","null"],"format":"date-time","description":"When the limitType meter refills and the request can succeed again."},"resolution":{"oneOf":[{"$ref":"#/components/schemas/ProblemResolution"},{"type":"null"}]},"retryAfterSeconds":{"type":["integer","null"],"format":"int64","description":"Seconds to wait before the same request can succeed. A BILLING_ALLOWANCE meter resets at the UTC month boundary, so this reaches weeks: read limitType before treating it as a burst backoff."},"spanId":{"type":["string","null"]},"status":{"type":"integer"},"suggestion":{"type":["string","null"]},"suggestions":{"type":["object","null"],"additionalProperties":{"type":"string"}},"suspectedFragment":{"type":["string","null"]},"title":{"type":"string"},"traceId":{"type":["string","null"]},"type":{"type":"string","format":"uri"},"unknownParameters":{"type":["array","null"],"items":{"type":"string"}},"unmetGateId":{"type":["array","null"],"items":{"type":"string"},"description":"On a task-completion 409, the ids of the completion checks that did not pass; absent for every other problem."},"used":{"type":["integer","null"],"format":"int64","description":"Requests already charged against the limitType meter this period."},"validParameters":{"type":["array","null"],"items":{"type":"string"}},"value":{"type":["string","null"]},"windowSeconds":{"type":["integer","null"],"format":"int64","description":"Length of a rolling throttle window; absent for period meters."}},"description":"RFC 9457 problem response with aVenture extensions.","title":"ProblemDetail"},"EntityResolutionInputType":{"type":"string","enum":["ID","SLUG","URL"],"description":"Which identifier kind this row was queried by.","title":"EntityResolutionInputType"},"EntityResolutionStatus":{"type":"string","enum":["MATCHED","AMBIGUOUS","MISSING"],"description":"Resolution outcome for this input.","title":"EntityResolutionStatus"},"EntityResolution":{"type":"object","properties":{"candidateEntityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Entity ids that all currently own the queried URL when status is AMBIGUOUS; empty otherwise. Re-query a single id to disambiguate."},"detail":{"oneOf":[{"$ref":"#/components/schemas/EntityDetail"},{"type":"null"}],"description":"Full entity detail when status is MATCHED; absent otherwise."},"input":{"type":"string","description":"Raw identifier exactly as queried (UUID string, slug, or URL)."},"inputType":{"$ref":"#/components/schemas/EntityResolutionInputType","description":"Which identifier kind this row was queried by."},"status":{"$ref":"#/components/schemas/EntityResolutionStatus","description":"Resolution outcome for this input."}},"required":["candidateEntityId","input","inputType","status"],"description":"Resolution of one queried identifier (id, slug, or current joined URL) to its current entity. Echoes the raw input; matched rows carry the full detail, ambiguous rows carry the conflicting candidate ids, missing rows carry neither.","title":"EntityResolution"},"EntityBrand":{"type":"object","properties":{"classification":{"$ref":"#/components/schemas/EntityClassification","description":"Current classification tags, industries, and standardized classifications."},"core":{"$ref":"#/components/schemas/Entity","description":"Core identity: id, slug, nameBrand, nameLegal, nameAlias, type, status, and image (logo, logoSquare, isMonogram)."},"publicUrl":{"type":["string","null"],"description":"Absolute canonical aVenture page URL, when the entity has one."},"urlLink":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"Current URL links: websites first, the primary one leading, then social and other profiles."}},"required":["classification","core","urlLink"],"description":"Company brand summary: names and logos under core, current website and social URLs, and current classification tags.","title":"EntityBrand"},"EmployeeCountMatchMode":{"type":"string","description":"How the requested bounds match the selected current workforce observation.","title":"EmployeeCountMatchMode"},"EmployeeCountRange":{"type":"object","properties":{"matchMode":{"oneOf":[{"$ref":"#/components/schemas/EmployeeCountMatchMode"},{"type":"null"}],"description":"Omitted or numeric matches only reported numbers, including exact-count estimates. overlap matches any intersection with a reported band; containment requires its whole interval within these bounds. Open upper bands cannot fit a finite maximum. Without either bound this entry is a no-op in every mode."},"max":{"type":["integer","null"],"description":"Inclusive maximum employees."},"min":{"type":["integer","null"],"description":"Inclusive minimum employees."}},"description":"Inclusive range applied to one current workforce observation.","title":"EmployeeCountRange"},"DecimalRange":{"type":"object","properties":{"max":{"type":["number","null"],"format":"double","description":"Inclusive maximum decimal number, such as 220000 or 123456.78."},"min":{"type":["number","null"],"format":"double","description":"Inclusive minimum decimal number, such as 220000 or 123456.78."}},"description":"Decimal range for monetary and numeric filter criteria","title":"DecimalRange"},"DateRange":{"type":"object","properties":{"max":{"type":["string","null"],"format":"date-time","description":"Inclusive latest timestamp."},"min":{"type":["string","null"],"format":"date-time","description":"Inclusive earliest timestamp."}},"description":"ISO-8601 timestamp range for temporal filters.","title":"DateRange"},"IntRange":{"type":"object","properties":{"max":{"type":["integer","null"],"description":"Inclusive maximum integer."},"min":{"type":["integer","null"],"description":"Inclusive minimum integer."}},"description":"Integer range for count-based filter criteria","title":"IntRange"},"InvestorActivityFilter":{"type":"object","properties":{"averageAmountInvestedUsdRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Average USD amount-invested ranges with inclusive bounds."},"largestAmountInvestedUsdRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Largest USD amount-invested ranges with inclusive bounds."},"smallestAmountInvestedUsdRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Smallest USD amount-invested ranges with inclusive bounds."},"totalAmountInvestedUsdRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Total USD amount-invested ranges with inclusive bounds."},"totalInvestmentRange":{"type":"array","items":{"$ref":"#/components/schemas/IntRange"},"description":"Distinct fundraise-deal count ranges for an investor, with inclusive integer bounds."}},"description":"Aggregate investor activity filters from distinct fundraise deals and USD amounts.","title":"InvestorActivityFilter"},"InvestorNameMatchMode":{"type":"string","enum":["any","every"],"description":"How investorName names combine: any (default) returns companies backed by any named investor; every returns companies backed by every named investor, across fundraises.","title":"InvestorNameMatchMode"},"EntityFundraiseFilterCriteria":{"type":"object","properties":{"amountInvestedRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Investor-level check amounts in the transaction currency, not the round's total raise. Use investedAmountRaisedRange for a named portfolio company's round total. Use plain JSON numbers."},"amountRaisedRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Per-round amounts raised by the returned entity itself in USD, not a portfolio company's round total. Use investedAmountRaisedRange for the latter. Use plain JSON numbers."},"dateAnnouncedRange":{"oneOf":[{"$ref":"#/components/schemas/DateRange"},{"type":"null"}],"description":"Inclusive announcement timestamp bounds on the same fundraise transaction as round and amountRaisedRange. Announcement dates do not establish funding completion dates."},"dateFundingCompleteRange":{"oneOf":[{"$ref":"#/components/schemas/DateRange"},{"type":"null"}],"description":"Inclusive funding completion timestamp bounds on the same fundraise transaction as round, amountRaisedRange, and investor constraints. Calendar-only completion dates must fit entirely within the bounds."},"investedAmountRaisedRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Total amounts raised in USD by a named portfolio company's rounds, not an investor's individual check or its own fundraising. Requires nonblank investedCompanyName. Company, investedRound, and this amount match the same portfolio-company transaction."},"investedCompanyName":{"type":"array","items":{"type":"string"},"description":"Portfolio company brand, legal or canonical names, or a bare domain exactly matching a current WEBSITE root URL (not broad host discovery; no URL paths or queries). A bare-domain miss never falls back to a name. Returns their investors with investedRound, when supplied, bound to the same company transaction regardless of its age."},"investedCountry":{"type":"array","items":{"type":"string"},"description":"Countries of the companies an investor backed, as country names or ids; a deal matches when its company's current headquarters is in one of them. Restricts returned entities to investors with such a deal inside the investment-activity horizon; the same deal must match investedIndustry and, when investedCompanyName is empty, investedRound."},"investedIndustry":{"type":"array","items":{"type":"string"},"description":"Industry terms for the companies an investor backed, such as Software, Artificial Intelligence, or Fintech; a term matches a portfolio company whose industry or industry classification name contains it as whole words, case-insensitively. Restricts returned entities to investors with such a deal inside the investment-activity horizon; with investedRound and no investedCompanyName, the same deal must match both."},"investedRound":{"type":"array","items":{"type":"string"},"description":"Round labels of deals an investor joined, such as Seed or Series A; with investedCompanyName matches those companies' transactions regardless of age, otherwise matches deals inside the investment-activity horizon."},"investorActivity":{"$ref":"#/components/schemas/InvestorActivityFilter","description":"Aggregate investor activity filters."},"investorEntityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Investor entity ids. Restricts returned entities to the portfolio the investor's own investments list shows: fundraises it joined directly or through a fund it currently manages as primary manager."},"investorName":{"type":"array","items":{"type":"string"},"description":"Deprecated for organizations: select a firm or fund by investorEntityId. It stays the only selector for an individual (angel) investor, matched by exact full name, until an investor person id filter replaces it. Investor names. Each resolves to at most one investor entity, whose portfolio investorEntityId would select: a live Investment Firm or Fund whose brand or alias equals it ignoring case and punctuation, else the entity with the most recorded investments whose brand, legal name, or alias equals it, else the public entity whose brand the name begins as whole words (\"Sequoia\") holding many times the recorded investments of every other such entity (Sequoia Capital). A name also matches an individual investor's exact full name."},"investorNameMatch":{"oneOf":[{"$ref":"#/components/schemas/InvestorNameMatchMode"},{"type":"null"}],"description":"How investorEntityId ids and investorName names combine: any (default) returns companies one named investor backed; every returns companies every named investor backed, each in any of the company's fundraises."},"lastRoundYearRange":{"type":"array","items":{"$ref":"#/components/schemas/IntRange"},"description":"Last-round-year ranges for each entity's most recent fundraise round."},"rankByInvestmentActivity":{"type":["boolean","null"],"description":"True ranks returned investors by recent deal activity ahead of any sort: each deal matching investedIndustry, investedCountry, and (when investedCompanyName is empty) investedRound adds a weight that decays to zero over the investment-activity horizon, nudged by the investor's known USD check. Restricts returned entities to investors with such a deal."},"round":{"type":"array","items":{"type":"string"},"description":"Fundraise round labels, such as Seed or Series A."},"totalRaisedRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Total-raised ranges across all rounds in USD. Use plain JSON numbers."},"valuationRange":{"type":"array","items":{"$ref":"#/components/schemas/DecimalRange"},"description":"Post-money valuation ranges in USD."}},"description":"Fundraise and investment filters for entity search","title":"EntityFundraiseFilterCriteria"},"EntityFilterLogoOptionSortPriority":{"type":"string","enum":["NONE","ANY_LOGO_FIRST","REAL_LOGO_FIRST"],"description":"Logo sort priority.","title":"EntityFilterLogoOptionSortPriority"},"EntityFilterLogoOption":{"type":"object","properties":{"sortPriority":{"$ref":"#/components/schemas/EntityFilterLogoOptionSortPriority","description":"Logo sort priority."}},"description":"Logo sort priority for entity search","title":"EntityFilterLogoOption"},"EntityOperatingStatus":{"type":"string","enum":["Operating","Acquired","Acquired Subsidiary","Closed","Closed (Acquihire)","Inactive"],"description":"Operating state accepted by entity filters and mutation endpoints. Acquired Subsidiary means the entity was acquired and still operates; Closed (Acquihire) means the entity was acquired for its team and is terminal, rendering like Closed everywhere; Acquired means the entity is terminal, folded into the buyer, or closed.","title":"EntityOperatingStatus"},"EntityListQualityGate":{"type":"string","enum":["NONE","COMPANY_LISTING_READY"],"description":"Extra check on listed entities. COMPANY_LISTING_READY returns only operating companies and business lines that have a real (not generated) logo, a founding year, a current headquarters, and recorded positive funding with a stage; NONE applies no extra check.","title":"EntityListQualityGate"},"StandardizedClassificationFilter":{"type":"object","properties":{"category":{"type":"string","description":"Existing standardized category; no inferred namespace."},"code":{"type":["integer","null"],"description":"Exact legacy numeric code; may match multiple editions unless edition is constrained."},"codeText":{"type":["string","null"],"maxLength":255,"description":"Exact source-stated code text, never reconstructed from numeric code."},"edition":{"type":["string","null"],"maxLength":128,"description":"Exact supplied codebook edition; omitted does not assume the current edition."},"hasEdition":{"type":["boolean","null"],"description":"true selects recorded editions; false selects unknown edition; omit it to match either."}},"required":["category"],"description":"Exact standardized reference tuple. All supplied fields match one reference; no edition filter means any edition, hasEdition=false selects unknown edition.","title":"StandardizedClassificationFilter"},"EntityUniqueIdFilter":{"type":"object","properties":{"idType":{"type":"string","description":"Public identifier type token, for example secCik, ein, or ticker."},"identifier":{"type":["string","null"],"maxLength":255,"description":"Exact identifier in that namespace; omitted matches any recorded value."}},"required":["idType"],"description":"Public-registry identifier predicate: entities holding an identifier in this namespace, or this exact identifier when identifier is supplied. Private namespaces are refused.","title":"EntityUniqueIdFilter"},"UrlMatchMode":{"type":"string","enum":["hostPath","domain"],"description":"URL matching mode for URL-backed filters and duplicate checks.","title":"UrlMatchMode"},"EntityListFilter":{"type":"object","properties":{"acceleratorBrand":{"type":"array","items":{"type":"string"},"description":"Accelerator brand or operator name."},"acceleratorCohort":{"type":"array","items":{"type":"string"},"description":"Accelerator batch or cohort label."},"acceleratorName":{"type":"array","items":{"type":"string"},"description":"Specific accelerator program name."},"acceleratorStatus":{"type":"array","items":{"type":"string"},"description":"Accelerator participation status."},"affinity":{"type":"array","items":{"type":"string"},"description":"Affinity provider organization names accepted by the companies list filter. Affinity rows are member -> provider; use provider names here, not member names."},"closedLast":{"type":"boolean","description":"Rank terminal entities (Acquired, Closed, Closed (Acquihire), Inactive) after every other textSearch or semanticQuery match, ahead of relevance and sort, except that an exact textSearch name, slug, legal-name, or alias match of any status ranks ahead of every weaker match; omitted means true. false ranks them by relevance alone. Filter them out with operatingStatus or suppressNonOperating."},"employeeCountRange":{"type":"array","items":{"$ref":"#/components/schemas/EmployeeCountRange"},"description":"Current workforce ranges; omitted matchMode is numeric-only."},"entityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Restrict results to entity IDs."},"entityName":{"type":"array","items":{"type":"string"},"description":"Exact normalized match against entity brand, legal, or alias names."},"featured":{"type":["boolean","null"],"description":"Filter by featured status."},"fundraiseActivity":{"$ref":"#/components/schemas/EntityFundraiseFilterCriteria","description":"Fundraise activity"},"hasFundraising":{"type":["boolean","null"],"description":"Filter to entities with fundraise activity."},"headquartersCity":{"type":"array","items":{"type":"string"},"description":"Headquarters city values."},"headquartersCountry":{"type":"array","items":{"type":"string"},"description":"Headquarters country values."},"headquartersState":{"type":"array","items":{"type":"string"},"description":"Headquarters state or region values."},"industry":{"type":"array","items":{"type":"string"},"description":"Industry classification values."},"investorPopulation":{"type":["boolean","null"],"description":"Opt in to Firms/Funds, a current source-stated investing mandate, or recorded non-grant direct/current-primary-managed investment participation. Omitted/false keeps legacy scope; explicit typeRecord intersects. Prose, legal form and missing funding establish nothing."},"letter":{"type":["string","null"],"description":"First letter of the display name."},"location":{"type":"array","items":{"type":"string"},"description":"Markets served, not HQ or offices."},"logoOption":{"$ref":"#/components/schemas/EntityFilterLogoOption","description":"Logo sort priority."},"mainProduct":{"type":"array","items":{"type":"string"},"description":"Main product classification values."},"noteworthyOnly":{"type":"boolean","description":"When true, only operating companies or business lines with a real logo, founding year, and current headquarters that had notable activity in the last 48 hours."},"operatingStatus":{"type":"array","items":{"$ref":"#/components/schemas/EntityOperatingStatus"},"description":"Operating states; omit for all."},"originCountry":{"type":"array","items":{"type":"string"},"description":"Countries an entity is from: its headquarters country or the country of its current origin (founding) address, never a legal seat alone. What a nationality adjective (Colombian startups) means; headquartersCountry is only where it is based now."},"person":{"type":"array","items":{"type":"string"},"description":"Associated person, matched by name."},"portfolioHeadquartersCity":{"type":"array","items":{"type":"string"},"description":"Portfolio-company headquarters city values."},"portfolioHeadquartersCountry":{"type":"array","items":{"type":"string"},"description":"Portfolio-company headquarters country values."},"portfolioHeadquartersState":{"type":"array","items":{"type":"string"},"description":"Portfolio-company headquarters state or region values."},"qualityGate":{"$ref":"#/components/schemas/EntityListQualityGate","description":"Extra listing check: COMPANY_LISTING_READY or NONE (default, no check)."},"rankByProminence":{"type":["boolean","null"],"description":"Rank most prominent first (funding, stage, headcount, momentum, recent news, investor breadth), ahead of sort: what best, top, or most promising mean."},"semanticQuery":{"type":["string","null"],"description":"Free-text semantic search phrase, this body's query text (there is no query field), such as \"AI tools for dental clinics\". For an existing-record name read, send this body's entityName field instead, compare the returned candidates' identity fields and evidenced URLs, then read the confirmed id. Search results are candidates, not identity verdicts; an empty result means no visible match for those filters, not permission to file. Use universal lookup (POST /v1/lookup) only when its possible filing effect is intended; it accepts name, not entityName. Executable on POST /v1/entities/search; saved views persist it for replay. A semantic page ranks a bounded nearest-neighbor window: totalElements counts the ranked candidates reachable through continuation, not every matching entity."},"slug":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255},"description":"Restrict results to entity slugs."},"stage":{"type":"array","items":{"type":"string"},"description":"Stage classification values."},"standardizedClassification":{"type":"array","items":{"$ref":"#/components/schemas/StandardizedClassificationFilter"},"description":"Matches any one of these entries; combined with the other filters by AND."},"suppressLateStage":{"type":["boolean","null"],"description":"Exclude public and acquired companies (including acquired subsidiaries); what startup means. Private companies at any round stay, as do companies without a recorded stage or operating status."},"suppressNonOperating":{"type":["boolean","null"],"description":"Suppress entities with terminal operating status."},"suppressZeroTotalRaised":{"type":["boolean","null"],"description":"Suppress entities with zero or unknown USD total raised."},"tag":{"type":"array","items":{"type":"string"},"description":"General classification tag values."},"textSearch":{"type":["string","null"],"description":"Non-blank company-identity search term: it matches only brand names, legal names, slugs, and name aliases (including near spellings of them), never descriptions, products, or topics. A topic, sector, or market word such as \"climate\" or \"corporate card\" returns no rows or name lookalikes here: filter by the industry, tag, mainProduct, or other classification fields, send the phrase as semanticQuery on POST /v1/entities/search, or ask natural search for plain-English or multi-constraint company requests."},"typeCustomer":{"type":"array","items":{"type":"string"},"description":"Customer-type classification values."},"typeModel":{"type":"array","items":{"type":"string"},"description":"Business-model values."},"typeOwnership":{"type":"array","items":{"type":"string"},"description":"Ownership-model values."},"typeRecord":{"type":"array","items":{"$ref":"#/components/schemas/EntityType"},"description":"Entity type filter. Organization expands to Company, Investment Firm, Nonprofit, Government, and Business Line; omit to include every entity type."},"typeRevenue":{"type":"array","items":{"type":"string"},"description":"Revenue-model classification values."},"typeTechnologyUsed":{"type":"array","items":{"type":"string"},"description":"Technology-used values."},"uniqueId":{"type":"array","items":{"$ref":"#/components/schemas/EntityUniqueIdFilter"},"description":"Matches any listed registry identifier; combined with other filters by AND."},"url":{"type":["string","null"],"description":"Current URL to match by normalized host and path."},"urlDomain":{"type":["string","null"],"description":"Current root domain to match when urlMatchMode=domain."},"urlMatchMode":{"oneOf":[{"$ref":"#/components/schemas/UrlMatchMode"},{"type":"null"}],"description":"URL matching mode: hostPath uses host and path; domain uses the root domain. Omitted, it is domain when urlDomain is set, else hostPath."},"urlType":{"oneOf":[{"$ref":"#/components/schemas/EntityUrlType"},{"type":"null"}],"description":"Restrict URL matching to one URL type."},"yearFoundedRange":{"type":"array","items":{"$ref":"#/components/schemas/IntRange"},"description":"Inclusive founding-year ranges."}},"description":"Entity list filters and saved-view query state including semantic entity search. semanticQuery executes on POST /v1/entities/search; saved views persist it for replay. Every other reused EntityFilter surface accepts the base EntityFilter, which omits semanticQuery. There is no query field: send free text describing the companies as semanticQuery, a word of a company's name, legal name, slug, or alias as textSearch, or a known company name as entityName.","title":"EntityListFilter"},"EntityListResearch":{"type":"object","properties":{"acceleratorParticipation":{"type":"array","items":{"$ref":"#/components/schemas/EntityAcceleratorParticipation"},"description":"Accelerator programs the entity took part in, derived from its accelerator research records"},"detail":{"type":"array","items":{"$ref":"#/components/schemas/EntityResearchDetail"},"description":"Structured research details the caller is allowed to see"}},"required":["acceleratorParticipation","detail"],"description":"Research findings included in each entity list row, without snippet text.","title":"EntityListResearch"},"EntityList":{"type":"object","properties":{"acquirer":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Public buyer of the newest completed acquisition; null for announced or non-public buyers."},"core":{"$ref":"#/components/schemas/Entity","description":"Core fields of the entity: identity, names, status, image, and source details"},"coveringRunId":{"type":["string","null"],"format":"uuid","description":"The queued or running full-research run covering this record, whoever filed it; set only on federated search result and subject rows, null when none and on every other list read."},"enrichment":{"$ref":"#/components/schemas/EntityEnrichment","description":"Supplemental entity data — addresses, classification tags, funding, text content, and URL links"},"fundraiseRound":{"type":"array","items":{"$ref":"#/components/schemas/EntityFundraiseTransaction"},"description":"Fundraise rounds associated with this entity"},"profileStatus":{"$ref":"#/components/schemas/EntityProfileStatus","description":"Derived profile status; read-only."},"provider":{"oneOf":[{"$ref":"#/components/schemas/EntityProvider"},{"type":"null"}],"description":"Fund manager firm or product/service provider; null otherwise."},"research":{"$ref":"#/components/schemas/EntityListResearch","description":"Research findings for list rows, without the written snippets"},"semanticMatch":{"oneOf":[{"$ref":"#/components/schemas/ContentEmbeddingMatch"},{"type":"null"}],"description":"Why this row matched a meaning-based (semantic) search; set only on semantic searches."}},"required":["core","enrichment","fundraiseRound","research"],"description":"\n        Entity row returned by list and batch-list reads. It includes core identity, additional\n        data, research details, accelerator participation, and funding rounds, but not the\n        relationship, newsArticle, person, sitemap, and research snippet sections that detail\n        reads return.\n         List rows show only current classifications; to see past ones, call the entity\n         classifications endpoint with includeInactive=true.\n         Addresses are a few current locations, not every office; use the entity addresses\n         endpoint to list every office and association.\n        ","title":"EntityList"},"PageEntityList":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityList"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityList"},"Entities_searchEntities_Response_200":{"oneOf":[{"$ref":"#/components/schemas/PageEntityList"},{"$ref":"#/components/schemas/PageEntityDetail"}],"title":"Entities_searchEntities_Response_200"},"EntityTypeGroup":{"type":"string","enum":["Organization","Investor"],"description":"Groups of entity types, such as Organization, that a filter can select at once.","title":"EntityTypeGroup"},"ChartBucket":{"type":"object","properties":{"amount":{"type":"integer","format":"int64","description":"Amount"},"end":{"type":"integer","format":"int64","description":"Exclusive bucket end value"},"start":{"type":"integer","format":"int64","description":"Inclusive bucket start value"}},"required":["amount","end","start"],"description":"Typed bucket for range histogram charts","title":"ChartBucket"},"EntityFilterScope":{"type":"object","properties":{"max":{"type":["integer","null"],"format":"int64","description":"Maximum scope value"},"min":{"type":["integer","null"],"format":"int64","description":"Minimum scope value"}},"description":"Numeric min/max bounds for range filter values","title":"EntityFilterScope"},"EntityFilterChoice":{"type":"object","properties":{"label":{"type":"string","description":"Display label for the option"},"scope":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterScope"},{"type":"null"}],"description":"Optional numeric scope for the option"},"value":{"type":"string","description":"Canonical option value"}},"required":["label","value"],"description":"Filter choice payload served by filter endpoints","title":"EntityFilterChoice"},"EntityFilterControlType":{"type":"string","enum":["checkbox","range","currencyRange","dateRange"],"description":"Kind of control to draw for this filter","title":"EntityFilterControlType"},"EntityFilterRequestValueShape":{"type":"string","description":"Kind of value this filter property takes in the request body.","title":"EntityFilterRequestValueShape"},"EntityFilterRequestBinding":{"type":"object","properties":{"path":{"type":"array","items":{"type":"string"},"description":"Ordered property names from EntityFilter to the value to replace or clear."},"rangeBound":{"type":"array","items":{"type":"string"},"description":"Inclusive range-bound property names, minimum then maximum; empty for non-ranges."},"valueShape":{"$ref":"#/components/schemas/EntityFilterRequestValueShape","description":"Shape of the value at path; ranges are arrays of inclusive bound objects."}},"required":["path","rangeBound","valueShape"],"description":"Property path and value shape in the canonical EntityFilter JSON body.","title":"EntityFilterRequestBinding"},"EntityFilterHeadquartersStateCity":{"type":"object","properties":{"city":{"type":"array","items":{"type":"string"},"description":"Cities within the state; empty when only states were requested"},"state":{"type":"string","description":"State name"}},"required":["city","state"],"description":"City within a state","title":"EntityFilterHeadquartersStateCity"},"EntityFilterHeadquartersCountry":{"type":"object","properties":{"country":{"type":"string","description":"Country name"},"state":{"type":"array","items":{"$ref":"#/components/schemas/EntityFilterHeadquartersStateCity"},"description":"States within the country"}},"required":["country","state"],"description":"Country with its states (and optionally cities)","title":"EntityFilterHeadquartersCountry"},"EntityFilterHeadquartersOptionSet":{"type":"object","properties":{"country":{"type":"array","items":{"$ref":"#/components/schemas/EntityFilterHeadquartersCountry"},"description":"Countries with their states and cities"}},"required":["country"],"description":"Headquarters option hierarchy","title":"EntityFilterHeadquartersOptionSet"},"EntityFilterUiMeta":{"type":"object","properties":{"headquartersOption":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterHeadquartersOptionSet"},{"type":"null"}]}},"description":"UI-only metadata used for rendering entity filter panels","title":"EntityFilterUiMeta"},"EntityFilterMeta":{"type":"object","properties":{"applicableTypeRecord":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityType"},"description":"Concrete entity kinds supported by this facet, not a claim that each has recorded values."},"requestBinding":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterRequestBinding"},{"type":"null"}],"description":"Where this filter goes in the EntityFilter request body; absent on older servers."},"ui":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterUiMeta"},{"type":"null"}],"description":"UI metadata for rendering entity filter controls"}},"description":"Entity filter metadata","title":"EntityFilterMeta"},"EntityFilterEntry":{"type":"object","properties":{"chart":{"type":"array","items":{"$ref":"#/components/schemas/ChartBucket"},"description":"Chart filter values"},"choiceOption":{"type":"array","items":{"$ref":"#/components/schemas/EntityFilterChoice"},"description":"Choice option filter values"},"choiceOptionTotal":{"type":["integer","null"],"description":"Total eligible choice option values for this filter"},"choiceOptionTruncated":{"type":["boolean","null"],"description":"Whether additional eligible choices exist beyond choiceOption"},"controlType":{"$ref":"#/components/schemas/EntityFilterControlType","description":"Control type used to render the filter"},"filterKey":{"type":"string","description":"Canonical filter key"},"filterMeta":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterMeta"},{"type":"null"}],"description":"Optional entity-specific filter metadata"},"label":{"type":"string","description":"Display label for the filter"},"scope":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterScope"},{"type":"null"}],"description":"Optional numeric scope for the filter"}},"required":["chart","choiceOption","controlType","filterKey","label"],"description":"Filter entry payload served by list filter endpoints","title":"EntityFilterEntry"},"EntityFilterOptionMode":{"type":"string","enum":["TOP_RESULTS","FULL_RESULTS"],"description":"Filter option mode","title":"EntityFilterOptionMode"},"EntityTypeGroupMembership":{"type":"object","properties":{"typeGroup":{"$ref":"#/components/schemas/EntityTypeGroup"},"typeRecord":{"type":"array","items":{"$ref":"#/components/schemas/EntityType"}}},"required":["typeGroup","typeRecord"],"description":"Entity types included in one entity type group.","title":"EntityTypeGroupMembership"},"EntityFilterOptionSetMeta":{"type":"object","properties":{"defaultOptionLimit":{"type":"integer","description":"Default maximum option count"},"defaultTypeGroup":{"$ref":"#/components/schemas/EntityTypeGroup","description":"Default type group"},"distributionKey":{"type":"array","items":{"type":"string"},"description":"Filter keys that include distribution data"},"generatedAt":{"type":"string","format":"date-time","description":"Generation timestamp"},"includeDistribution":{"type":"boolean","description":"Whether distribution data is included"},"includePrivate":{"type":"boolean","description":"Whether private filter options are included"},"includedTypeRecord":{"type":"array","items":{"type":"string"},"description":"Entity type records included in the filter payload"},"optionMode":{"$ref":"#/components/schemas/EntityFilterOptionMode","description":"Option mode used to generate option lists"},"requestedTypeGroup":{"type":"string","description":"Requested entity type group"},"typeGroupMembership":{"type":"array","items":{"$ref":"#/components/schemas/EntityTypeGroupMembership"},"description":"Type group membership filter values"}},"required":["defaultOptionLimit","distributionKey","generatedAt","includeDistribution","includePrivate","includedTypeRecord","optionMode","requestedTypeGroup"],"description":"Information about how this filter's option list was generated","title":"EntityFilterOptionSetMeta"},"EntityFilterOptionSet":{"type":"object","properties":{"arrayFilterEntry":{"type":"array","items":{"$ref":"#/components/schemas/EntityFilterEntry"},"description":"Array filter entries"},"filtersMeta":{"oneOf":[{"$ref":"#/components/schemas/EntityFilterOptionSetMeta"},{"type":"null"}],"description":"Metadata for the generated filter option set"},"rangeFilterEntry":{"type":"array","items":{"$ref":"#/components/schemas/EntityFilterEntry"},"description":"Range filter entries"}},"required":["arrayFilterEntry","rangeFilterEntry"],"description":"Available filter options for list endpoints","title":"EntityFilterOptionSet"},"EntityFilter":{"type":"object","properties":{"acceleratorBrand":{"type":"array","items":{"type":"string"},"description":"Accelerator brand or operator name."},"acceleratorCohort":{"type":"array","items":{"type":"string"},"description":"Accelerator batch or cohort label."},"acceleratorName":{"type":"array","items":{"type":"string"},"description":"Specific accelerator program name."},"acceleratorStatus":{"type":"array","items":{"type":"string"},"description":"Accelerator participation status."},"affinity":{"type":"array","items":{"type":"string"},"description":"Affinity provider organization names accepted by the companies list filter. Affinity rows are member -> provider; use provider names here, not member names."},"closedLast":{"type":"boolean","description":"Rank terminal entities (Acquired, Closed, Closed (Acquihire), Inactive) after every other textSearch or semanticQuery match, ahead of relevance and sort, except that an exact textSearch name, slug, legal-name, or alias match of any status ranks ahead of every weaker match; omitted means true. false ranks them by relevance alone. Filter them out with operatingStatus or suppressNonOperating."},"employeeCountRange":{"type":"array","items":{"$ref":"#/components/schemas/EmployeeCountRange"},"description":"Current workforce ranges; omitted matchMode is numeric-only."},"entityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Restrict results to entity IDs."},"entityName":{"type":"array","items":{"type":"string"},"description":"Exact normalized match against entity brand, legal, or alias names."},"featured":{"type":["boolean","null"],"description":"Filter by featured status."},"fundraiseActivity":{"$ref":"#/components/schemas/EntityFundraiseFilterCriteria","description":"Fundraise activity"},"hasFundraising":{"type":["boolean","null"],"description":"Filter to entities with fundraise activity."},"headquartersCity":{"type":"array","items":{"type":"string"},"description":"Headquarters city values."},"headquartersCountry":{"type":"array","items":{"type":"string"},"description":"Headquarters country values."},"headquartersState":{"type":"array","items":{"type":"string"},"description":"Headquarters state or region values."},"industry":{"type":"array","items":{"type":"string"},"description":"Industry classification values."},"investorPopulation":{"type":["boolean","null"],"description":"Opt in to Firms/Funds, a current source-stated investing mandate, or recorded non-grant direct/current-primary-managed investment participation. Omitted/false keeps legacy scope; explicit typeRecord intersects. Prose, legal form and missing funding establish nothing."},"letter":{"type":["string","null"],"description":"First letter of the display name."},"location":{"type":"array","items":{"type":"string"},"description":"Markets served, not HQ or offices."},"logoOption":{"$ref":"#/components/schemas/EntityFilterLogoOption","description":"Logo sort priority."},"mainProduct":{"type":"array","items":{"type":"string"},"description":"Main product classification values."},"noteworthyOnly":{"type":"boolean","description":"When true, only operating companies or business lines with a real logo, founding year, and current headquarters that had notable activity in the last 48 hours."},"operatingStatus":{"type":"array","items":{"$ref":"#/components/schemas/EntityOperatingStatus"},"description":"Operating states; omit for all."},"originCountry":{"type":"array","items":{"type":"string"},"description":"Countries an entity is from: its headquarters country or the country of its current origin (founding) address, never a legal seat alone. What a nationality adjective (Colombian startups) means; headquartersCountry is only where it is based now."},"person":{"type":"array","items":{"type":"string"},"description":"Associated person, matched by name."},"portfolioHeadquartersCity":{"type":"array","items":{"type":"string"},"description":"Portfolio-company headquarters city values."},"portfolioHeadquartersCountry":{"type":"array","items":{"type":"string"},"description":"Portfolio-company headquarters country values."},"portfolioHeadquartersState":{"type":"array","items":{"type":"string"},"description":"Portfolio-company headquarters state or region values."},"qualityGate":{"$ref":"#/components/schemas/EntityListQualityGate","description":"Extra listing check: COMPANY_LISTING_READY or NONE (default, no check)."},"rankByProminence":{"type":["boolean","null"],"description":"Rank most prominent first (funding, stage, headcount, momentum, recent news, investor breadth), ahead of sort: what best, top, or most promising mean."},"slug":{"type":"array","items":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255},"description":"Restrict results to entity slugs."},"stage":{"type":"array","items":{"type":"string"},"description":"Stage classification values."},"standardizedClassification":{"type":"array","items":{"$ref":"#/components/schemas/StandardizedClassificationFilter"},"description":"Matches any one of these entries; combined with the other filters by AND."},"suppressLateStage":{"type":["boolean","null"],"description":"Exclude public and acquired companies (including acquired subsidiaries); what startup means. Private companies at any round stay, as do companies without a recorded stage or operating status."},"suppressNonOperating":{"type":["boolean","null"],"description":"Suppress entities with terminal operating status."},"suppressZeroTotalRaised":{"type":["boolean","null"],"description":"Suppress entities with zero or unknown USD total raised."},"tag":{"type":"array","items":{"type":"string"},"description":"General classification tag values."},"textSearch":{"type":["string","null"],"description":"Non-blank company-identity search term: it matches only brand names, legal names, slugs, and name aliases (including near spellings of them), never descriptions, products, or topics. A topic, sector, or market word such as \"climate\" or \"corporate card\" returns no rows or name lookalikes here: filter by the industry, tag, mainProduct, or other classification fields, send the phrase as semanticQuery on POST /v1/entities/search, or ask natural search for plain-English or multi-constraint company requests."},"typeCustomer":{"type":"array","items":{"type":"string"},"description":"Customer-type classification values."},"typeModel":{"type":"array","items":{"type":"string"},"description":"Business-model values."},"typeOwnership":{"type":"array","items":{"type":"string"},"description":"Ownership-model values."},"typeRecord":{"type":"array","items":{"$ref":"#/components/schemas/EntityType"},"description":"Entity type filter. Organization expands to Company, Investment Firm, Nonprofit, Government, and Business Line; omit to include every entity type."},"typeRevenue":{"type":"array","items":{"type":"string"},"description":"Revenue-model classification values."},"typeTechnologyUsed":{"type":"array","items":{"type":"string"},"description":"Technology-used values."},"uniqueId":{"type":"array","items":{"$ref":"#/components/schemas/EntityUniqueIdFilter"},"description":"Matches any listed registry identifier; combined with other filters by AND."},"url":{"type":["string","null"],"description":"Current URL to match by normalized host and path."},"urlDomain":{"type":["string","null"],"description":"Current root domain to match when urlMatchMode=domain."},"urlMatchMode":{"oneOf":[{"$ref":"#/components/schemas/UrlMatchMode"},{"type":"null"}],"description":"URL matching mode: hostPath uses host and path; domain uses the root domain. Omitted, it is domain when urlDomain is set, else hostPath."},"urlType":{"oneOf":[{"$ref":"#/components/schemas/EntityUrlType"},{"type":"null"}],"description":"Restrict URL matching to one URL type."},"yearFoundedRange":{"type":"array","items":{"$ref":"#/components/schemas/IntRange"},"description":"Inclusive founding-year ranges."}},"description":"Entity list and search filters. GET flattens these fields as query parameters; POST accepts the same shape as JSON.","title":"EntityFilter"},"RefinementMeta":{"type":"object","properties":{"degraded":{"type":"boolean","description":"Whether retrying may improve scoped choice totals"},"limit":{"type":"integer","description":"Maximum entities sampled for displayed choices."},"page":{"type":"integer","description":"Zero-based result page used to build the refinement."},"total":{"type":["integer","null"],"description":"Total entities matching the active filter; null when unavailable."}},"required":["degraded","limit","page"],"description":"Meta","title":"RefinementMeta"},"EntityFilterRefinedFilters":{"type":"object","properties":{"filter":{"type":"array","items":{"$ref":"#/components/schemas/EntityFilterEntry"},"description":"Canonical filter entries for the active entity scope."},"meta":{"$ref":"#/components/schemas/RefinementMeta","description":"Pagination and degradation state for this refinement."}},"required":["filter","meta"],"description":"Refined filters","title":"EntityFilterRefinedFilters"},"EntityFilterSearch":{"type":"object","properties":{"filterKey":{"type":"string","minLength":1,"description":"Filter key"},"limit":{"type":"integer","minimum":1,"default":20,"description":"Maximum number of search results; omit for 20, or the filter's own limit when that is smaller. A larger value returns the filter's limit."},"query":{"type":"string","minLength":1,"description":"Query"},"scopeFilter":{"$ref":"#/components/schemas/EntityFilter","description":"Entity filter scope applied to the option search. Omit to search every eligible entity."}},"required":["filterKey","query"],"description":"Record representing a filter search request","title":"EntityFilterSearch"},"EntityFilterSearchResult":{"type":"object","properties":{"filterKey":{"type":"string","description":"Canonical filter key searched"},"result":{"type":"array","items":{"type":"string"},"description":"Matching option values"}},"required":["filterKey","result"],"description":"Typeahead search result pairing a filter key with matching option values","title":"EntityFilterSearchResult"},"PageEntityFundraiseInvestorJoin":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityFundraiseInvestorJoin"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityFundraiseInvestorJoin"},"PageEntityFundraiseTransaction":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityFundraiseTransaction"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityFundraiseTransaction"},"EntityInvestorParticipation":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityDetail"},"investorAttribution":{"type":"array","items":{"$ref":"#/components/schemas/FundraiseInvestmentAttribution"}},"round":{"type":"array","items":{"$ref":"#/components/schemas/RoundLabel"}},"roundCount":{"type":"integer"}},"required":["entity","investorAttribution","round","roundCount"],"description":"Entity investor with round participation and enrichment data (addresses, URLs)","title":"EntityInvestorParticipation"},"PageEntityInvestorParticipation":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityInvestorParticipation"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityInvestorParticipation"},"PersonInvestorParticipation":{"type":"object","properties":{"investorAttribution":{"type":"array","items":{"$ref":"#/components/schemas/FundraiseInvestmentAttribution"}},"person":{"$ref":"#/components/schemas/PersonDetail"},"round":{"type":"array","items":{"$ref":"#/components/schemas/RoundLabel"}},"roundCount":{"type":"integer"}},"required":["investorAttribution","person","round","roundCount"],"description":"Person investor with round participation labels and count","title":"PersonInvestorParticipation"},"PagePersonInvestorParticipation":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/PersonInvestorParticipation"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PagePersonInvestorParticipation"},"EntityValuationDerivation":{"type":"string","enum":["stored","derivedFromPreAndRaised","derivedFromPostMinusRaised","reportedAssumedPost"],"description":"How the point's valuationPostMoney and valuationPreMoney were obtained.","title":"EntityValuationDerivation"},"EntityValuationTimeSeriesPoint":{"type":"object","properties":{"amountRaised":{"type":["integer","null"],"format":"int64","description":"Amount raised in the same currency, only for fundraise rows."},"asOfDate":{"type":"string","pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated effective date for this valuation datapoint."},"confidence":{"$ref":"#/components/schemas/EntityValuationDataConfidence","description":"Confidence tier for this datapoint."},"currency":{"type":"string","description":"ISO 4217 currency code."},"decimalValue":{"type":["string","null"],"description":"Valuation of a research detail exactly as the source states it, as a decimal string; the older whole-number value is only an approximation of it."},"declaredBasis":{"$ref":"#/components/schemas/ValuationType","description":"Basis declared by the original source."},"derivation":{"$ref":"#/components/schemas/EntityValuationDerivation","description":"How pre-money and post-money fields were obtained."},"detailId":{"type":["integer","null"],"description":"Research detail id for stated valuation rows. Null for fundraise-derived rows, which cannot be updated or deleted on this valuation surface."},"label":{"type":["string","null"],"description":"Fundraise round label or legacy detail display text, when present."},"measurementBasis":{"type":["string","null"],"description":"Source-stated measurement basis."},"reportingScope":{"type":["string","null"],"description":"Source-stated reporting scope."},"source":{"$ref":"#/components/schemas/EntityValuationSource","description":"Where the point came from: a research detail or a funding round."},"sourceRef":{"type":"string","description":"`detail-<id>` or `fundraise-<transactionId>` display reference."},"valuationPostMoney":{"type":["integer","null"],"format":"int64","description":"Post-money valuation in full currency units, when known."},"valuationPreMoney":{"type":["integer","null"],"format":"int64","description":"Pre-money valuation in full currency units, when known."}},"required":["asOfDate","confidence","currency","declaredBasis","derivation","source","sourceRef"],"description":"A single valuation datapoint. `valuationPostMoney` is the canonical charted value; filled when directly recorded or safely derivable from pre-money + amount raised (same currency only). `derivation` explains whether the value was stored or inferred. Only `researchDetail` points have a `detailId` and can be changed here; `fundraiseRound` points are changed through fundraise-round commands.","title":"EntityValuationTimeSeriesPoint"},"PageEntityValuationTimeSeriesPoint":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityValuationTimeSeriesPoint"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityValuationTimeSeriesPoint"},"PageEntityPersonAssociation":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityPersonAssociation"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityPersonAssociation"},"RelationshipDirection":{"type":"string","enum":["symmetric","typeOriented","directional"],"description":"How entities relationships create interprets sourceEntityId and targetEntityId.","title":"RelationshipDirection"},"EntityRelationshipTypeOption":{"type":"object","properties":{"acquisitionManaged":{"type":"boolean","description":"Whether this type must be written through acquisition endpoints."},"alias":{"type":"array","items":{"type":"string"},"description":"Other spellings accepted for this relationship type."},"canonical":{"type":"string","description":"Canonical relationship type token used in reads and writes."},"description":{"type":"string","description":"Human-readable catalog meaning and placement guidance."},"direction":{"$ref":"#/components/schemas/RelationshipDirection","description":"How to interpret sourceEntityId and targetEntityId. DIRECTIONAL means sourceRole and targetRole are authoritative."},"exclusiveRelationshipType":{"type":"array","items":{"type":"string"},"description":"Relationship types that cannot coexist for one unordered pair."},"joinable":{"type":"boolean","description":"Whether generic relationship join/write endpoints accept this type."},"pairRule":{"type":"string","description":"Which entity types may be on each side of this relationship; writes that break it are rejected."},"readOnly":{"type":"boolean","description":"Whether this type is emitted by reads only and rejected on writes."},"sourceRole":{"type":["string","null"],"description":"Role of sourceEntityId for directional/type-oriented rows. For affinity this is member."},"targetRole":{"type":["string","null"],"description":"Role of targetEntityId for directional/type-oriented rows. For affinity this is provider."}},"required":["acquisitionManaged","alias","canonical","description","direction","exclusiveRelationshipType","joinable","pairRule","readOnly"],"description":"Published relationship catalog row. Directional values use sourceRole and targetRole to name sourceEntityId and targetEntityId.","title":"EntityRelationshipTypeOption"},"CompetitorDegree":{"type":"string","enum":["direct","secondOrder"],"description":"direct lists the subject's curated competitors; secondOrder lists records that compete with at least one of those direct competitors, which need not compete with the subject, ranked by how many direct competitors they share.","title":"CompetitorDegree"},"PageEntityRelationship":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityRelationship"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityRelationship"},"EntityAcquisitionRole":{"type":"string","enum":["acquired","acquirer","all"],"description":"Role of the path entity in the acquisition. Defaults to acquired (the company that was bought). Pass acquirer to list acquisitions made by the path entity, or all to list both sides in one page.","title":"EntityAcquisitionRole"},"EntityAcquisitionEvidence":{"type":"object","properties":{"fundraiseInvestorJoin":{"type":"boolean"},"fundraiseTransaction":{"type":"boolean"},"operatingStatus":{"type":"boolean"},"relationship":{"type":"boolean"}},"required":["fundraiseInvestorJoin","fundraiseTransaction","operatingStatus","relationship"],"description":"Booleans confirming each managed row written by the acquisition endpoint.","title":"EntityAcquisitionEvidence"},"EntityAcquisitionStage":{"type":"string","enum":["Acquisition","Acquired","Acquired Subsidiary"],"description":"Acquisition stage/status values used by acquisition APIs and fundraise rollups. Acquisition is neutral before operating-status change; Acquired Subsidiary is completed and still operating; Acquired is terminal or folded, including Closed (Acquihire).","title":"EntityAcquisitionStage"},"FundraiseTransactionStatus":{"type":"string","enum":["Announced","Announced; subject to approvals and closing conditions","Active","Closed","Completed","In Progress","Open"],"description":"Fundraise transaction status label","title":"FundraiseTransactionStatus"},"EntityAcquisition":{"type":"object","properties":{"acquiredEntity":{"$ref":"#/components/schemas/Entity","description":"The acquired company (the entity in the request path); read-only."},"acquirerEntity":{"$ref":"#/components/schemas/Entity","description":"The buyer; read-only. Mutations identify the buyer only via the flat acquirerEntityId UUID, never a nested entity object."},"amount":{"type":["integer","null"],"format":"int64"},"announcedAt":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Acquisition announcement date or instant, retaining its stored precision."},"asOf":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Effective acquisition date the server derives on write: announcedAt, else completedAt, else the submitted asOf, as a calendar day; it can differ from the asOf written."},"completedAt":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Acquisition completion date or instant, retaining its stored precision."},"createdAt":{"type":["string","null"],"format":"date-time"},"currency":{"type":["string","null"]},"dataConfidence":{"oneOf":[{"$ref":"#/components/schemas/FundraiseDataConfidence"},{"type":"null"}]},"evidence":{"$ref":"#/components/schemas/EntityAcquisitionEvidence"},"fundraiseTransactionId":{"type":["string","null"],"format":"uuid","description":"Funding round id (UUID)"},"investorJoinId":{"type":["string","null"],"format":"uuid","description":"Identifier of one investor's participation in a funding round"},"isCurrent":{"type":["boolean","null"],"description":"Whether the buyer still owns the acquired company, not whether the company is operating. False retains the prior ownership event on this relationship."},"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page behind this acquisition, read from the provenance event that wrote it; absent for internal sources."},"relationshipId":{"type":"integer"},"status":{"$ref":"#/components/schemas/EntityAcquisitionStage","description":"Acquisition stage of the acquired entity, not the deal's transactionStatus"},"transactionStatus":{"oneOf":[{"$ref":"#/components/schemas/FundraiseTransactionStatus"},{"type":"null"}]},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["acquiredEntity","acquirerEntity","evidence","relationshipId","status"],"description":"Canonical acquisition event: scoped entity is acquired, acquirerEntity is buyer.","title":"EntityAcquisition"},"PageEntityAcquisition":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityAcquisition"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityAcquisition"},"EntityClassificationSuggestionClassification":{"oneOf":[{"$ref":"#/components/schemas/EntityTag"},{"$ref":"#/components/schemas/StandardizedClassification"}],"description":"Suggested classification tag or standardized classification code.","title":"EntityClassificationSuggestionClassification"},"EntityClassificationSuggestion":{"type":"object","properties":{"alreadyJoined":{"type":"boolean","description":"True when the entity already has this classification, current or historical."},"classification":{"$ref":"#/components/schemas/EntityClassificationSuggestionClassification","description":"Suggested classification tag or standardized classification code."},"rank":{"type":"integer","description":"One-based rank within this suggestion response."},"score":{"type":"number","format":"double","description":"Composite embedding similarity score; larger values rank higher."}},"required":["alreadyJoined","classification","rank","score"],"description":"Ranked classification suggestion derived from the entity profile and classification embeddings.","title":"EntityClassificationSuggestion"},"AddressLink":{"type":"object","properties":{"id":{"type":"integer","description":"Association join id, scoped to the entity or person owner kind"},"owner":{"$ref":"#/components/schemas/EntityPersonOwner"},"role":{"oneOf":[{"$ref":"#/components/schemas/AddressAssociationRole"},{"type":"null"}],"description":"Association role; null means unclassified"}},"required":["id","owner"],"description":"One current or historical owner association to an address","title":"AddressLink"},"CursorSliceAddressLink":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/AddressLink"}},"nextCursor":{"type":["string","null"]}},"required":["content"],"title":"CursorSliceAddressLink"},"ContactDetailContactType":{"type":"string","enum":["EMAIL","PHONE"],"description":"Kind of contact value: an email address or a phone number.","title":"ContactDetailContactType"},"ContactDetailContactUsage":{"type":"string","enum":["PERSONAL","WORK","UNDETERMINED"],"description":"Whether a contact reaches its owner personally or at work. PERSONAL: a personal mailbox or phone, always for a public email service domain (gmail.com, outlook.com, icloud.com, ...). WORK: an address at a business, government, or non-profit domain, always for a government domain, by default for a company's website domain. UNDETERMINED: stated only after checking the domain and finding no evidence either way, never as a shortcut. The server applies PERSONAL and WORK itself when its rule decides.","title":"ContactDetailContactUsage"},"ContactDetail":{"type":"object","properties":{"contactType":{"$ref":"#/components/schemas/ContactDetailContactType","description":"Kind of contact value: an email address or a phone number."},"contactUsage":{"$ref":"#/components/schemas/ContactDetailContactUsage","description":"Whether a contact reaches its owner personally or at work. PERSONAL: a personal mailbox or phone, always for a public email service domain (gmail.com, outlook.com, icloud.com, ...). WORK: an address at a business, government, or non-profit domain, always for a government domain, by default for a company's website domain. UNDETERMINED: stated only after checking the domain and finding no evidence either way, never as a shortcut. The server applies PERSONAL and WORK itself when its rule decides."},"contactValue":{"type":"string","description":"Stored value: an email trimmed and lower-cased, or a phone reduced to digits with an optional leading +."},"createdAt":{"type":"string","format":"date-time"},"id":{"type":"integer","description":"Contact detail id."},"isPrimary":{"type":"boolean","description":"Whether this is the owner's primary contact of its type."},"owner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"The company or person this contact reaches."},"suppressed":{"type":"boolean","description":"True when the email is on the sales-lead opt-out list: never contact it for outreach or marketing. Read live from the opt-out list, so an opt-out applies at once. Always false for a phone."},"updatedAt":{"type":"string","format":"date-time"}},"required":["contactType","contactUsage","contactValue","createdAt","id","isPrimary","owner","suppressed","updatedAt"],"description":"One email address or phone number of a company or person. A signed-in subscriber reads the contacts of a publicly visible record through the metered list routes; a caller who may edit the owner also sees opted-out (suppressed) rows.","title":"ContactDetail"},"EntityLogoType":{"type":"string","enum":["SQUARE","STANDARD"],"description":"Entity logo slot: SQUARE is the square icon read back as `core.image.logoSquare`; STANDARD is the horizontal wordmark read back as `core.image.logo`.","title":"EntityLogoType"},"LogoAccuracyMethod":{"type":"string","description":"How a logo-accuracy outcome was reached","title":"LogoAccuracyMethod"},"LogoAccuracyOutcome":{"type":"string","enum":["MATCH","MISMATCH","INSUFFICIENT"],"description":"Whether the candidate mark matches the target's own brand","title":"LogoAccuracyOutcome"},"LogoAccuracyReference":{"type":"object","properties":{"hammingDistance":{"type":"integer","description":"Perceptual-hash distance between the candidate and this reference"},"url":{"type":"string","description":"Direct URL of the reference mark fetched from the target's surface"}},"required":["hammingDistance","url"],"description":"A reference mark from the target's own surface and its distance to the candidate","title":"LogoAccuracyReference"},"LogoAccuracy":{"type":"object","properties":{"candidateObserved":{"type":["string","null"],"description":"Literal visible description of the candidate mark, when assessed by vision"},"confidence":{"$ref":"#/components/schemas/Confidence","description":"Confidence in the outcome"},"method":{"$ref":"#/components/schemas/LogoAccuracyMethod","description":"How the outcome was reached"},"outcome":{"$ref":"#/components/schemas/LogoAccuracyOutcome","description":"Whether the candidate mark matches the target's own brand"},"reference":{"type":"array","items":{"$ref":"#/components/schemas/LogoAccuracyReference"},"description":"Reference marks fetched from the target's own surfaces, each with its perceptual-hash distance to the candidate. The deciding deterministic distance is the smallest entry"},"referenceObserved":{"type":["string","null"],"description":"Literal visible description of the reference mark, when assessed by vision"},"sharedFeature":{"type":["string","null"],"description":"The specific visible feature shared by candidate and reference that supports a match (shared name text, symbol, or distinctive palette); null when not a match"}},"required":["confidence","method","outcome","reference"],"description":"Read-only assessment of whether a stored logo/photo depicts the target's own brand, decided from visible features of the stored mark versus the target's own reference marks","title":"LogoAccuracy"},"MediaObjectType":{"type":"string","enum":["ENTITY","PERSON","NEWS","BLOG"],"description":"Target domain for media operations (logos, pictures, thumbnails)","title":"MediaObjectType"},"MediaUpload":{"type":"object","properties":{"accuracy":{"oneOf":[{"$ref":"#/components/schemas/LogoAccuracy"},{"type":"null"}],"description":"Entity logo writes only: the brand-match verdict the write's gate computed on these bytes, including the VISION MISMATCH a brand-match override admits; absent on reads, photos, and thumbnails."},"cdnUrl":{"type":"string","description":"Resolved API CDN URL"},"firstUploadedAt":{"type":["string","null"],"format":"date-time","description":"Earliest time this company, person, or news item received an image in this slot."},"mediaType":{"$ref":"#/components/schemas/MediaObjectType","description":"Target media domain"},"path":{"type":"string","description":"Attached managed storage path; never an external image URL"},"squareOriginalValidated":{"type":["boolean","null"],"description":"True only when this read fetched and validated the stored entity SQUARE original; absent on ordinary metadata reads and other media slots."},"targetId":{"type":["string","null"],"description":"Attached entity/person/news target id, when known"}},"required":["cdnUrl","mediaType","path"],"description":"Managed media asset reference with resolved CDN URL and target metadata","title":"MediaUpload"},"ResearchValueRange":{"type":"object","properties":{"max":{"type":"number","format":"double"},"min":{"type":"number","format":"double"}},"required":["max","min"],"title":"ResearchValueRange"},"ResearchValueShapeType":{"type":"string","enum":["acceleratorParticipation","enumeratedToken","freeText","isoCurrencyCode","monetaryFlow","monetaryFlowOverPeriod","monetaryStock","numericCount","numericCountOrRange","numericGrowthRate","numericRatio","numericScore","targetDateAbsolute"],"description":"Closed write-time value shape token. Shape, not valueType, selects which write fields and validation rules apply.","title":"ResearchValueShapeType"},"ResearchDetailType":{"type":"object","properties":{"allowedToken":{"type":["array","null"],"items":{"type":"string"},"description":"Allowed valueResearchDetail tokens, or textValue categories when valueShape is freeText."},"appliesToType":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityType"},"description":"Effective concrete entity kinds for this detail, including inherited section applicability; absent only on older servers. Path prefixes do not override this leaf rule."},"curated":{"type":"boolean"},"label":{"type":"string"},"range":{"oneOf":[{"$ref":"#/components/schemas/ResearchValueRange"},{"type":"null"}],"description":"Inclusive numeric bounds for monetary and numericRatio, numericScore, and numericGrowthRate values. numericGrowthRate uses percentage points: 80 means 80%, not 0.8."},"targetPath":{"type":"string"},"timeSeries":{"type":"boolean","description":"Whether rows are dated history; true means add current observations and keep believable old rows."},"typeValue":{"type":"string"},"valueShape":{"$ref":"#/components/schemas/ResearchValueShapeType","description":"Write-time value shape token. For numericCountOrRange details, send either discreteValue for an exact count or textValue for an employee range."},"valueType":{"$ref":"#/components/schemas/EntityResearchValueType","description":"Value kind on reads; pick write fields from valueShape."},"writeHint":{"type":"string","description":"How to encode a write for this valueShape: which of valueResearchDetail, discreteValue, textValue, and asOfDate to send, with an example."}},"required":["curated","label","targetPath","timeSeries","typeValue","valueShape","valueType","writeHint"],"description":"Research detail type published for API, CLI, and MCP help","title":"ResearchDetailType"},"ResearchParagraphShape":{"type":"object","properties":{"maxChars":{"type":"integer","description":"Maximum characters per paragraph (inclusive)."},"maxClaimWords":{"type":["integer","null"],"description":"Maximum words across the statements of the claims one planned writer paragraph states (paragraph.claim); null means unbounded."},"maxParagraphs":{"type":["integer","null"],"description":"Maximum paragraph count (inclusive); null means unbounded."},"maxSentences":{"type":"integer","description":"Maximum sentences per paragraph (inclusive)."},"minChars":{"type":"integer","description":"Minimum characters per paragraph (inclusive)."},"minParagraphs":{"type":"integer","description":"Minimum paragraph count (inclusive)."},"minSentences":{"type":"integer","description":"Minimum sentences per paragraph (inclusive)."}},"required":["maxChars","maxSentences","minChars","minParagraphs","minSentences"],"description":"Paragraph rules that text must meet when written. Paragraphs split on `\\n\\n` (one blank line). Each paragraph must satisfy minChars..maxChars and minSentences..maxSentences; whole body must satisfy minParagraphs..maxParagraphs (null maxParagraphs = unbounded). Sentence boundaries follow Unicode rules (java.text.BreakIterator), so 'Inc.' and 'U.S.' do not split a sentence. Each paragraph ends in terminal punctuation (. ! ? or the CJK full stop, exclamation, and question marks), optionally followed by a closing quote, parenthesis, bracket, or guillemet.","title":"ResearchParagraphShape"},"ResearchSnippetType":{"type":"object","properties":{"analysisRenderable":{"type":"boolean","description":"Whether curated rows of this snippet type can make the public company Analysis page eligible."},"analysisSectionLabel":{"type":"array","items":{"type":"string"},"description":"Ordered headings for the fixed paragraphs of a framework analysis. Empty means ordinary prose; preserve legacy prose when its paragraph count differs."},"appliesToType":{"type":"array","items":{"$ref":"#/components/schemas/EntityType"},"description":"Entity types for which this snippet is meaningful; empty means every type."},"curated":{"type":"boolean","description":"Whether the type is curated; with analysisRenderable this gates public Analysis-page eligibility. It does not gate snippet display — every type listed here is recognized and defaults to visible, and the row-level visible flag controls display."},"defaultVisible":{"type":"boolean","description":"Default visible flag when a write omits visible; true for recognized snippet types even when curated=false."},"label":{"type":"string","description":"Human-readable label."},"minLength":{"type":["integer","null"],"description":"Minimum total text length in characters; null = no minimum."},"paragraphShape":{"oneOf":[{"$ref":"#/components/schemas/ResearchParagraphShape"},{"type":"null"}],"description":"Per-paragraph shape rule that write requests must satisfy; null = no paragraph rule."},"readerQuestion":{"type":"string","description":"One reader-facing question the analysis answers, shown where readers choose an analysis."},"recognized":{"type":"boolean","description":"Whether aVenture recognizes this text type; true for every row this endpoint returns."},"targetPath":{"type":"string","description":"Dotted research section path the snippet attaches to."},"typeValue":{"type":"string","description":"Snippet type value used in requests and responses."},"writeHint":{"type":"string","description":"The strategic question this snippet type answers and how to shape it. Snippets are point-in-time strategic analysis of the company's position against its market and named alternatives: open with the judgment and give dated details only as evidence for it, never as a fact list."}},"required":["analysisRenderable","appliesToType","curated","defaultVisible","label","readerQuestion","recognized","targetPath","typeValue","writeHint"],"description":"A research snippet type and the rules text written to it must meet.","title":"ResearchSnippetType"},"SecListingProspectus":{"type":"object","properties":{"accessionNumber":{"type":"string","description":"SEC accession number."},"documentUrl":{"type":"string","description":"SEC EDGAR Archives URL of the prospectus document."},"filingDate":{"type":"string","format":"date","description":"Date SEC received the prospectus."},"form":{"type":"string","description":"SEC form type of the prospectus."}},"required":["accessionNumber","documentUrl","filingDate","form"],"description":"The final IPO prospectus a registrant filed on SEC EDGAR.","title":"SecListingProspectus"},"SecCompanyMatchedVia":{"type":"string","enum":["TICKER","NAME"],"description":"How the query resolved to this registrant. TICKER includes a delisted ticker that only the registrant's past filings carry.","title":"SecCompanyMatchedVia"},"SecCompany":{"type":"object","properties":{"cik":{"type":"string","description":"SEC Central Index Key, 10 digits with leading zeros. It stays the same across SEC data syncs."},"edgarCompanyUrl":{"type":"string","description":"SEC EDGAR company page listing this registrant's filings; cite it as the thirdPartyWebsite sourceDetail for a fact this lookup supplied."},"ein":{"type":["string","null"],"description":"Employer Identification Number (tax id), when SEC supplies one."},"entityType":{"type":["string","null"],"description":"SEC entity type. `operating` marks a real operating company; `other` marks a SPAC, trust, holding, or shell filing vehicle."},"exchange":{"type":"array","items":{"type":"string"},"description":"Listing exchange(s)."},"filerCategory":{"type":["string","null"],"description":"SEC filer size category."},"filingHistoryStart":{"type":["string","null"],"format":"date","description":"Date of the registrant's earliest EDGAR filing. EDGAR filing became mandatory for all registrants in May 1996, so a listing before this date predates the electronic record."},"fiscalYearEnd":{"type":["string","null"],"description":"Fiscal year-end as MMDD."},"headquartersCity":{"type":["string","null"],"description":"Headquarters city from the SEC business address."},"headquartersCountry":{"type":["string","null"],"description":"Headquarters country code; often null for US filers."},"headquartersPostalCode":{"type":["string","null"],"description":"Headquarters postal/ZIP code."},"headquartersState":{"type":["string","null"],"description":"Headquarters state or country from the SEC business address."},"headquartersStreet":{"type":["string","null"],"description":"Headquarters street address from the SEC business address."},"isOperating":{"type":"boolean","description":"True when SEC classifies this registrant as an operating company, false for a SPAC/trust/holding/shell vehicle."},"listingProspectus":{"oneOf":[{"$ref":"#/components/schemas/SecListingProspectus"},{"type":"null"}],"description":"The registrant's IPO prospectus: its first final prospectus (Form 424B4 or 424B1), reported only when an offering registration statement (S-1, F-1, SB-2, S-11) precedes it and no annual or quarterly report does. Null when EDGAR shows no such prospectus, including every company that listed before its EDGAR history starts and every follow-on offering."},"matchedVia":{"$ref":"#/components/schemas/SecCompanyMatchedVia","description":"How the query resolved to this registrant. TICKER includes a delisted ticker that only the registrant's past filings carry."},"nameAlias":{"type":"array","items":{"type":"string"},"description":"Former registered legal names from SEC `formerNames`, most recent first."},"nameLegal":{"type":"string","description":"Registered legal name from SEC filings."},"otherCandidate":{"type":"array","items":{"type":"string"},"description":"Other registrants whose title also contains the name query (legal names) beside the exact title match that bound. Empty for a ticker resolution."},"phone":{"type":["string","null"],"description":"Business phone from SEC filings."},"sicCode":{"type":["string","null"],"description":"SIC industry code."},"sicDescription":{"type":["string","null"],"description":"SIC industry description."},"stateOfIncorporation":{"type":["string","null"],"description":"State or country of incorporation (SEC code)."},"ticker":{"type":"array","items":{"type":"string"},"description":"Trading ticker symbol(s)."}},"required":["cik","exchange","isOperating","matchedVia","nameAlias","nameLegal","otherCandidate","ticker"],"description":"Public-company identity facts from SEC EDGAR (legal name, former names, ticker, exchange, industry, incorporation, headquarters). SEC supplies no brand name, website, or summary text — those stay enrichment-owned and are not part of this shape.","title":"SecCompany"},"HarnessRunEvent":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","description":"Append timestamp"},"id":{"type":"integer","format":"int64","description":"Monotonic event id"},"payload":{"type":"string","description":"The full stream event as a JSON string"},"runId":{"type":"string","format":"uuid","description":"Owning run id"},"seq":{"type":"integer","description":"Per-run ordering sequence"},"type":{"type":"string","description":"Stream part type"}},"required":["createdAt","id","payload","runId","seq","type"],"description":"One ordered run stream-log entry","title":"HarnessRunEvent"},"EntityAnalysisReplay":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid","description":"Company the replayed session researched."},"entityName":{"type":"string","description":"Brand name of that company."},"entitySlug":{"type":"string","description":"Profile slug of that company."},"event":{"type":"array","items":{"$ref":"#/components/schemas/HarnessRunEvent"},"description":"Retained legacy field, always empty. Conversation is withheld; publishedSection is a result, not a reply."},"publishedSection":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchSnippet"},{"type":"null"}],"description":"The accepted, current, visible snippet, with only its public source details."},"section":{"type":"array","items":{"type":"string"},"description":"The single snippet type displayed by this public example."}},"required":["entityId","entityName","entitySlug","event","section"],"description":"One accepted current published result shown read-only beside the Research tab's paywall. The same global example is selected independently of the requested profile.","title":"EntityAnalysisReplay"},"PageEmployeeCount":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EmployeeCount"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEmployeeCount"},"PageEntityResearchDetail":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityResearchDetail"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityResearchDetail"},"PageEntityResearchSnippet":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityResearchSnippet"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityResearchSnippet"},"EntitySimilarityOrigin":{"type":"string","enum":["curated","semantic","precomputed","derived","computed"],"description":"Provenance origin for a similar-entity result row.","title":"EntitySimilarityOrigin"},"EntitySimilarityContext":{"type":"object","properties":{"compositeScore":{"type":["number","null"],"format":"double","description":"Composite (section-fusion) score. Populated only when origin=precomputed."},"cosineScore":{"type":["number","null"],"format":"double","description":"Cosine similarity when origin=precomputed"},"curatedAsOf":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Curated source-stated as-of date when origin=curated"},"curatedRelationshipType":{"type":["string","null"],"description":"Curated relationship type when origin=curated"},"curatedSource":{"type":["string","null"],"description":"Curated source URL/note when origin=curated"},"derivedFromEntityId":{"type":["string","null"],"format":"uuid","description":"Curated peer id that produced this row when origin=derived"},"matchedSectionWeight":{"type":["number","null"],"format":"double","description":"Total normalized source-section weight matched when origin=precomputed"},"origin":{"$ref":"#/components/schemas/EntitySimilarityOrigin"},"rank":{"type":"integer","description":"1-based position in the merged result page"},"sharedSectionCount":{"type":["integer","null"],"description":"Number of source/target sections compared when origin=precomputed"}},"required":["origin","rank"],"description":"Per-row provenance for a similar-entity result","title":"EntitySimilarityContext"},"EntitySimilarityResult":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityList"},"similarity":{"$ref":"#/components/schemas/EntitySimilarityContext"}},"required":["entity","similarity"],"description":"Similar entity list row with the provenance that explains why it appears. Rows carry the EntityList projection; load full detail through the entity detail endpoints.","title":"EntitySimilarityResult"},"PageEntitySimilarityResult":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntitySimilarityResult"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntitySimilarityResult"},"EntitySimilaritySummary":{"type":"object","properties":{"core":{"$ref":"#/components/schemas/Entity"},"fundingDetail":{"oneOf":[{"$ref":"#/components/schemas/EntityFundingDetail"},{"type":"null"}],"description":"Funding totals, so similar companies compare without one read each"},"similarity":{"$ref":"#/components/schemas/EntitySimilarityContext"},"urlLink":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"},"description":"Current primary URL links, one per URL type"}},"required":["core","similarity","urlLink"],"description":"Short similar-entity card: core identity, current URL links, funding totals, and why it counts as similar. Use EntitySimilarityResult for full EntityList rows.","title":"EntitySimilaritySummary"},"PageEntitySimilaritySummary":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntitySimilaritySummary"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntitySimilaritySummary"},"EntityTypeAlias":{"type":"object","properties":{"alias":{"type":"array","items":{"type":"string"},"description":"Other spellings accepted for this entity type (case-insensitive)."},"canOwnPublicProductServiceRoute":{"type":"boolean","description":"Whether this EntityType can provide the parent route for a public Product/Service."},"canonical":{"type":"string","description":"Canonical EntityType value (e.g. \"Company\", \"Investment Firm\")."},"description":{"type":"string","description":"Human-facing meaning of this EntityType."},"productServiceRouteSegment":{"type":"string","description":"Nested public route segment shared by Product and Service records."},"publicPathPrefix":{"type":"string","description":"Published website family prefix. Product and Service retain the legacy `/companies/products-services` family metadata, not a standalone route; their pages require `{providerPrefix}/{providerSlug}/products-services/{slug}`."}},"required":["alias","canOwnPublicProductServiceRoute","canonical","description","productServiceRouteSegment","publicPathPrefix"],"description":"An entity type, its accepted alternative spellings, and how its public pages are addressed.","title":"EntityTypeAlias"},"PersonLookupBatch":{"type":"object","properties":{"hasImageFirst":{"type":"boolean","default":false,"description":"Sort results by image presence"},"includeAddress":{"type":"boolean","default":true,"description":"Include address values"},"includeAssociation":{"type":"boolean","default":true,"description":"Include association values"},"includeUrl":{"type":"boolean","default":true,"description":"Include URL links"},"maxAssociations":{"type":"integer","default":40,"description":"Max association values per person"},"permitMonogram":{"type":"boolean","default":true,"description":"Permit monogram fallbacks"},"personId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Person UUID values"},"slug":{"type":"array","items":{"type":"string","pattern":"^[\\t-\\r\\u0020\\u00A0\\u1680\\u2000-\\u200A\\u2028-\\u2029\\u202F\\u205F\\u3000]*(?:[A-Za-z0-9_\\u212A-]{1,255}[\\t-\\r\\u0020\\u00A0\\u1680\\u2000-\\u200A\\u2028-\\u2029\\u202F\\u205F\\u3000]*)?(?![\\s\\S])"},"description":"Person slug values"},"url":{"type":"array","items":{"type":"string"},"description":"Person URL values"}},"description":"Batch request for person detail enrichment. Each selector array accepts at most 200 values, and at most 200 selectors may be submitted across personId, slug, and url.","title":"PersonLookupBatch"},"PagePersonDetail":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/PersonDetail"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PagePersonDetail"},"PersonDetailInclude":{"type":"string","enum":["graph","investorActivity","similar","blogPost","investment"],"description":"Profile panel to embed in a person detail read: graph, investorActivity, similar, blogPost, or investment.","title":"PersonDetailInclude"},"EntityPersonAssociationFilter":{"type":"object","properties":{"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/EntityFilter"},{"type":"null"}],"description":"Constraints on the associated entity, including its exact names."},"isCurrent":{"type":["boolean","null"],"description":"Filter this association by whether it is current."},"personTitle":{"type":"array","items":{"type":"string"},"description":"Titles on this association."}},"description":"Constraints on one independent entity-person association.","title":"EntityPersonAssociationFilter"},"PersonListArrayFilter":{"type":"object","properties":{"amountInvestedRange":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DecimalRange"}},"amountRaisedRange":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DecimalRange"}},"entityName":{"type":["array","null"],"items":{"type":"string"},"description":"Associated entity names."},"investedCompany":{"type":["array","null"],"items":{"type":"string"},"description":"Invested company names."},"personTitle":{"type":["array","null"],"items":{"type":"string"},"description":"Person titles."},"round":{"type":["array","null"],"items":{"type":"string"},"description":"Fundraise round labels."},"totalInvestmentCount":{"type":["array","null"],"items":{"$ref":"#/components/schemas/IntRange"}},"typeRecord":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityType"},"description":"Associated types; Organization uses EntityFilter expansion."}},"description":"Array and range filters for person list endpoints","title":"PersonListArrayFilter"},"PersonAssociationTenure":{"type":"string","enum":["CURRENT","PAST","ANY"],"description":"Associations to match.","title":"PersonAssociationTenure"},"PersonFilter":{"type":"object","properties":{"additionalAssociation":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonAssociationFilter"},{"type":"null"}],"description":"Require a second, independent association of the same person, AND-ed with the primary association constraints, e.g. a past employer."},"arrayFilter":{"$ref":"#/components/schemas/PersonListArrayFilter","description":"Array and range filters"},"entityFilter":{"$ref":"#/components/schemas/EntityFilter","description":"Constraints on the associated entity, as on POST /v1/search/natural/entities: a person matches when an association (current by default; selectable with tenure) points at an entity matching every field and visible in entity listings, such as yearFoundedRange, hasFundraising, or fundraiseActivity.totalRaisedRange. Omit for no associated-entity constraint."},"entityId":{"type":["string","null"],"format":"uuid","description":"Associated entity UUID."},"entitySlug":{"type":["string","null"],"description":"Associated entity slug."},"firstName":{"type":["string","null"],"description":"Person first name."},"includeAddress":{"type":["boolean","null"],"description":"Include addresses on each person"},"includeUrl":{"type":["boolean","null"],"description":"Include URL links on each person"},"investorActivity":{"$ref":"#/components/schemas/InvestorActivityFilter","description":"Aggregate investor activity filters."},"isCurrent":{"type":["boolean","null"],"description":"Legacy tenure filter; omit when selecting tenure explicitly."},"lastName":{"type":["string","null"],"description":"Person last name."},"letter":{"type":["string","null"],"description":"First-name initial."},"nameQuery":{"type":["string","null"],"description":"Name eligibility independent of search; preserve it on replay."},"personId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Specific person IDs; omit or use [] for no restriction."},"personName":{"type":"array","items":{"type":"string"},"description":"Exact normalized match against a person's full name or slug."},"rankByEmployer":{"type":["boolean","null"],"description":"Rank people who run the most prominent matching employers first, ahead of sort (founders and management, then other operators, then board seats). Applies only when entityId, entitySlug, arrayFilter.entityName, or the entityId, slug, entityName, or fundraiseActivity.investorEntityId or investorName of entityFilter or additionalAssociation.entityFilter names the employers."},"role":{"type":["string","null"],"description":"Associated entity role or title."},"search":{"type":["string","null"],"description":"Search keyword or phrase. Single characters valid; stop words rejected."},"semanticQuery":{"type":["string","null"],"description":"Semantic person search phrase. A semantic page ranks a bounded nearest-neighbor window: totalElements counts the ranked candidates reachable through continuation, not every matching person."},"status":{"type":["string","null"],"description":"Person workflow status."},"tenure":{"oneOf":[{"$ref":"#/components/schemas/PersonAssociationTenure"},{"type":"null"}],"description":"Tenure of the association title and employer match: CURRENT, PAST, or ANY. Omitted, titles match any tenure and employers current; isCurrent must agree."}},"description":"Filters for listing and searching people, used by the GET, POST, and batch people endpoints.","title":"PersonFilter"},"PagePerson":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/Person"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PagePerson"},"PagePersonInvestment":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/PersonInvestment"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PagePersonInvestment"},"PageNews":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/News"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageNews"},"NewsFeedback":{"type":"object","properties":{"comment":{"type":["string","null"],"minLength":0,"maxLength":4000,"description":"Free-form feedback text"},"newsId":{"type":["integer","null"],"description":"News article ID"},"reaction":{"type":["string","null"],"minLength":0,"maxLength":64,"description":"Short reaction (like, dislike, etc.)"},"slug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"News article slug"}},"description":"Feedback submission for a news article","title":"NewsFeedback"},"NewsFeedbackAcknowledgement":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"at":{"type":"string","format":"date-time"},"comment":{"type":["string","null"]},"newsId":{"type":["integer","null"]},"reaction":{"type":["string","null"]},"slug":{"type":["string","null"]}},"required":["acknowledged","at"],"description":"Feedback acknowledgment for news articles - non-mutating response","title":"NewsFeedbackAcknowledgement"},"NewsAnalysisSourceReference":{"type":"object","properties":{"quote":{"type":"string","minLength":1,"maxLength":600,"description":"Verbatim excerpt from the cited source that supports the section."},"sourceDocumentId":{"type":["string","null"],"format":"uuid","description":"Stored source document holding the quote, when one was captured."},"url":{"type":"string","format":"uri","description":"Absolute http or https URL of the cited source."}},"required":["quote","url"],"description":"A source supporting the analysis: its URL and a verbatim quote from it.","title":"NewsAnalysisSourceReference"},"NewsAnalysisSection":{"type":"object","properties":{"reference":{"type":"array","items":{"$ref":"#/components/schemas/NewsAnalysisSourceReference"}},"stepKey":{"type":"string"},"text":{"type":"string"},"title":{"type":"string","description":"Title of the accepted catalog step, set by the server at publication."}},"required":["reference","stepKey","text","title"],"description":"One accepted analysis step and its cited interpretation.","title":"NewsAnalysisSection"},"NewsAnalysis":{"type":"object","properties":{"newsId":{"type":"integer","description":"Identifier of a news article"},"publishedAt":{"type":"string","format":"date-time"},"section":{"type":"array","items":{"$ref":"#/components/schemas/NewsAnalysisSection"}},"version":{"type":"integer"}},"required":["newsId","publishedAt","section","version"],"description":"The current shared, publicly readable article analysis.","title":"NewsAnalysis"},"NewsDetail":{"type":"object","properties":{"analysis":{"oneOf":[{"$ref":"#/components/schemas/NewsAnalysis"},{"type":"null"}],"description":"Current shared article analysis, absent before publication."},"content":{"type":["string","null"]},"core":{"$ref":"#/components/schemas/News"},"entityMentionResolved":{"type":"array","items":{"$ref":"#/components/schemas/NewsResolvedEntityLink"},"description":"Resolved entity mentions — read-only display projections. News mutations attach entities only via flat entityJoinId values, never these nested objects."},"externalId":{"type":["string","null"]},"linkedContent":{"type":["string","null"]},"linkerCompleted":{"type":"boolean","description":"Whether the entity linker completed, including an empty result."},"personMentionResolved":{"type":"array","items":{"$ref":"#/components/schemas/NewsResolvedPersonLink"},"description":"Resolved person mentions — read-only display projections. News mutations attach people only via flat personId/personSlug values, never these nested objects."}},"required":["core","entityMentionResolved","personMentionResolved"],"description":"A news article with all of its detail fields.","title":"NewsDetail"},"NewsSubscriptionDeliveryStatus":{"type":"string","enum":["active","retrying","paused","expired"],"description":"active delivers; retrying backs off after a failure; paused stopped after the maximum consecutive failures until the subscription is refreshed; expired passed refreshBefore and is about to be removed.","title":"NewsSubscriptionDeliveryStatus"},"NewsSubscriptionArguments":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid","description":"Entity whose newly linked public news is delivered."}},"required":["entityId"],"description":"Arguments of the entity.news.published event.","title":"NewsSubscriptionArguments"},"NewsSubscriptionEndpoint":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"description":"Webhook delivery target.","title":"NewsSubscriptionEndpoint"},"NewsSubscriptionEvent":{"type":"string","enum":["entity.news.published"],"description":"Subscribable event name","title":"NewsSubscriptionEvent"},"NewsSubscriptionKey":{"type":"object","properties":{"arguments":{"$ref":"#/components/schemas/NewsSubscriptionArguments"},"delivery":{"$ref":"#/components/schemas/NewsSubscriptionEndpoint"},"name":{"$ref":"#/components/schemas/NewsSubscriptionEvent"}},"required":["arguments","delivery","name"],"description":"Identifies one subscription to remove by its event name, arguments, and url.","title":"NewsSubscriptionKey"},"NewsSubscriptionDetail":{"type":"object","properties":{"consecutiveFailureCount":{"type":"integer","description":"Failed deliveries since the last acknowledged one or refresh."},"createdAt":{"type":"string","format":"date-time"},"cursor":{"type":"string","description":"Opaque watermark the next delivery resumes after."},"id":{"type":"string","description":"Stable subscription id; sent as X-MCP-Subscription-Id."},"lastError":{"type":["string","null"],"description":"Short cause of the latest failed delivery; null after a success."},"nextAttemptAt":{"type":"string","format":"date-time","description":"Earliest time the next delivery attempt runs."},"refreshBefore":{"type":"string","format":"date-time","description":"The subscription expires unless refreshed before this instant."},"status":{"$ref":"#/components/schemas/NewsSubscriptionDeliveryStatus"},"subscription":{"$ref":"#/components/schemas/NewsSubscriptionKey","description":"Event, arguments, and url; the unsubscribe request body."},"updatedAt":{"type":"string","format":"date-time","description":"Latest subscribe, refresh, acknowledged, or failed delivery."},"verifiedAt":{"type":"string","format":"date-time","description":"When the endpoint last answered the verification challenge."}},"required":["consecutiveFailureCount","createdAt","cursor","id","nextAttemptAt","refreshBefore","status","subscription","updatedAt","verifiedAt"],"description":"One of the caller's news subscriptions and its delivery state.","title":"NewsSubscriptionDetail"},"NewsSubscriptionDeliveryMode":{"type":"string","enum":["webhook"],"description":"Event delivery mode","title":"NewsSubscriptionDeliveryMode"},"NewsSubscriptionDelivery":{"type":"object","properties":{"mode":{"$ref":"#/components/schemas/NewsSubscriptionDeliveryMode"},"secret":{"type":"string","format":"password","description":"Standard Webhooks signing secret: whsec_ followed by base64 of 24 to 64 bytes. It is never returned. The CLI reads it only from --from-file, never a flag."},"url":{"type":"string","maxLength":2048,"description":"Public https endpoint that receives signed event POSTs."}},"required":["mode","secret","url"],"description":"Webhook delivery target and secret.","title":"NewsSubscriptionDelivery"},"NewsSubscription":{"type":"object","properties":{"arguments":{"$ref":"#/components/schemas/NewsSubscriptionArguments"},"cursor":{"type":["string","null"],"description":"Opaque watermark from an earlier grant or event to resume after; null starts a new subscription from now and keeps an existing subscription's position."},"delivery":{"$ref":"#/components/schemas/NewsSubscriptionDelivery"},"name":{"$ref":"#/components/schemas/NewsSubscriptionEvent"},"ttlMs":{"type":["integer","null"],"format":"int64","minimum":1,"description":"Requested subscription lifetime in milliseconds; the server caps it."}},"required":["arguments","delivery","name"],"description":"Subscribe or refresh one webhook subscription to news newly linked to an entity. The same caller, delivery url, event name, and arguments always address the same subscription, so repeating the call refreshes it.","title":"NewsSubscription"},"NewsSubscriptionGrant":{"type":"object","properties":{"cursor":{"type":"string","description":"Opaque watermark the subscription delivers after."},"id":{"type":"string","description":"Stable subscription id; sent as X-MCP-Subscription-Id."},"refreshBefore":{"type":"string","format":"date-time","description":"The subscription expires unless refreshed before this instant."},"truncated":{"type":"boolean","description":"Whether events between the requested cursor and now were lost."}},"required":["cursor","id","refreshBefore","truncated"],"description":"Granted news subscription.","title":"NewsSubscriptionGrant"},"NewsSubscriptionTestEvent":{"type":"object","properties":{"acknowledged":{"type":"boolean","description":"Whether the receiver answered 2xx."},"eventId":{"type":"string","description":"The sample's event id, equal to its webhook-id header."},"status":{"type":"integer","description":"HTTP status the receiver answered."}},"required":["acknowledged","eventId","status"],"description":"The receiver's answer to one signed sample entity.news.published event.","title":"NewsSubscriptionTestEvent"},"PublicationType":{"type":"string","enum":["newsArticle","blogPost","externalSocialPost","repositoryOwner","repository","webSite","webPage","researchPaper"],"description":"Public source family for canonical content cards.","title":"PublicationType"},"PublicationRelation":{"type":"string","enum":["by","about"],"description":"How a content card relates to an entity or person owner.","title":"PublicationRelation"},"Publication":{"type":"object","properties":{"canonicalUrl":{"type":["string","null"],"description":"Canonical URL when known."},"contentId":{"type":"string","description":"Stable content id scoped by contentType."},"contentType":{"$ref":"#/components/schemas/PublicationType","description":"Public content source type."},"createdAt":{"type":["string","null"],"format":"date-time","description":"Publication row creation instant when known."},"publishedAt":{"type":["string","null"],"format":"date-time","description":"Publication or source activity instant when known."},"relation":{"oneOf":[{"$ref":"#/components/schemas/PublicationRelation"},{"type":"null"}],"description":"How this content relates to the requested owner."},"sourceDomain":{"type":["string","null"],"description":"Registrable source domain when known."},"sourceName":{"type":["string","null"],"description":"Publication, platform owner, or source label."},"summary":{"type":["string","null"],"description":"Short summary or excerpt when known."},"title":{"type":"string","description":"Human title or best available display label. webPage rows restate the page URL when the crawl captured no label; renderers may humanize that fallback."},"topic":{"type":["string","null"],"description":"Single canonical topic key (web-crawl section or news-event topic) or source category (repository language, or GitHub for a profile or a repository without one); null while the source awaits classification."},"updatedAt":{"type":["string","null"],"format":"date-time","description":"Publication row update instant when known."},"url":{"type":["string","null"],"description":"Primary URL for this content card."},"year":{"type":["integer","null"],"description":"Best-effort content year used by the year filter."}},"required":["contentId","contentType","title"],"description":"Canonical public content card across news, blog posts, social posts, repositories, websites, pages, and research papers.","title":"Publication"},"PagePublication":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/Publication"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PagePublication"},"PublicationFacet":{"type":"object","properties":{"contentType":{"$ref":"#/components/schemas/PublicationType","description":"Public content source type."},"count":{"type":"integer","format":"int64","description":"Content cards with this topic and content type."},"topic":{"type":["string","null"],"description":"Topic key; null when the content carries no topic."}},"required":["contentType","count"],"description":"Number of content cards sharing one topic and content type in an owner's index.","title":"PublicationFacet"},"SearchCacheMode":{"type":"string","enum":["use","bypass","refresh"],"description":"Search-stage cache policy: use reuses completed and in-flight work; bypass computes independently without retaining search outputs; refresh computes independently and replaces the normal cache entry. This setting does not affect cached query embeddings, which never change, or cached record data; both follow their own caching rules.","title":"SearchCacheMode"},"SearchFreshness":{"type":"string","enum":["auto","cached"],"description":"auto refreshes relative/current queries and explicit dates from the last 90 days through tomorrow, using UTC. cached permits normal cache reuse for those queries. Explicit bypass or refresh always wins.","title":"SearchFreshness"},"SearchMode":{"type":"string","description":"Search strategy for a natural-language search request. `auto` keeps the server pipeline (exact-name shortcut first, planner otherwise); `exact` matches entity or person names exactly with no planner and no embedding; `keyword` runs full-text search; `semantic` runs vector similarity; `natural` always runs the language-model planner; `hybrid` fuses keyword and semantic rankings by reciprocal rank. Entity and person natural-search support every mode but `hybrid`; news and federated search accept only `auto` and `keyword`; content search accepts `auto` (topic, type, relation, and year words become filters and any other words rank by full text), `keyword` (the full text of articles, posts, and fetched pages), `semantic` (one entity's or person's library pages by vector similarity of their fetched bodies), and `hybrid` (that owner's keyword and semantic rankings fused; each ranking is cut at the largest page size, so a hybrid search returns at most twice that many items, and it orders by fused rank only, ignoring `sort`).","title":"SearchMode"},"ReasoningEffort":{"type":"string","description":"Reasoning effort level, lowest to highest: `minimal`, `low`, `medium`, `high`, `xhigh`, `max`. A model receives the nearest level it supports.","title":"ReasoningEffort"},"NaturalSearch":{"type":"object","properties":{"answerModel":{"type":["string","null"],"description":"Optional supported model id for the written answer, which also supplies the page heading, title, and description. Leave the field out for the server's model; a value that is not a supported model id answers 422."},"cacheMode":{"$ref":"#/components/schemas/SearchCacheMode","description":"Cache policy. use reuses earlier search work; bypass and refresh compute fresh results and are honored only for accounts with private-data access."},"freshness":{"$ref":"#/components/schemas/SearchFreshness","description":"auto refreshes date-sensitive queries before cache admission; cached permits ordinary cache reuse. Explicit admitted bypass or refresh wins."},"mode":{"$ref":"#/components/schemas/SearchMode","description":"Search strategy to run. Defaults to `auto`: the fast name layer runs first (a single-token query as keyword search, a multiword query as an exact normalized name) and the language-model planner runs only on a miss, so name lookups never pay for planning. Any other value forces exactly that strategy: `exact` and `keyword` skip planner model resolution and its rate limit. Entity and person natural-search take every value but `hybrid`; news and federated search accept only `auto` and `keyword`; content search accepts `auto`, `keyword`, `semantic`, and `hybrid` (`semantic` and `hybrid` only for one entity's or person's content)."},"model":{"type":["string","null"],"description":"Optional supported model id for planning the search. Leave the field out for the server's model; a value that is not a supported model id answers 422."},"modelCatalogRevision":{"type":["integer","null"],"description":"Model catalog revision this search uses for its model defaults and inference policy; null reads the current revision. Callers without private-data access always read the current revision. An unknown revision returns 404."},"query":{"type":"string","minLength":1,"description":"Plain-English search request."},"reasoningEffort":{"oneOf":[{"$ref":"#/components/schemas/ReasoningEffort"},{"type":"null"}],"description":"Optional reasoning effort for every model call this search makes: the query planner and the synthesis answer. Each call sends the nearest level its model supports, the lower one on a tie. Accounts without private-data access are capped at `medium`; higher values are lowered."},"searchCatalogRevision":{"type":["integer","null"],"description":"Search catalog revision this search uses for its global search policy and vocabulary; null reads the current revision. Callers without private-data access always read the current revision. An unknown revision returns 404."},"tenantPolicyRevision":{"type":["integer","null"],"description":"Runtime policy revision this search uses for the serving deployment's execution budgets; null reads that deployment's current revision. Callers without private-data access always read the current revision. An unknown revision returns 404."}},"required":["query"],"description":"Plain-English search request. The server turns the query into a filter and sort for the target record type, then runs that type's standard list search.","title":"NaturalSearch"},"PageBlogPost":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/BlogPost"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageBlogPost"},"TextTypeOption":{"type":"object","properties":{"canonical":{"type":"string","description":"Canonical textType value."},"maxWords":{"type":["integer","null"],"description":"Maximum words allowed for this text type."},"minWords":{"type":["integer","null"],"description":"Minimum words allowed for this text type."},"paragraphShape":{"oneOf":[{"$ref":"#/components/schemas/ResearchParagraphShape"},{"type":"null"}],"description":"Paragraph rules for this text type."},"privateType":{"type":"boolean","description":"Whether the textType requires trusted read visibility."},"rewriteHint":{"type":["string","null"],"description":"Advice for rewriting text that breaks this type's rules."}},"required":["canonical","privateType"],"description":"A text type the text endpoints accept; entity rows include minWords, maxWords, rewriteHint, and paragraphShape when that type has length and paragraph rules.","title":"TextTypeOption"},"EntityText":{"type":"object","properties":{"compliance":{"oneOf":[{"$ref":"#/components/schemas/ContentCompliance"},{"type":"null"}],"description":"Character and word counts for this text and whether it meets its type's length and paragraph rules; null when not checked."},"createdAt":{"type":["string","null"],"format":"date-time"},"expandedText":{"oneOf":[{"$ref":"#/components/schemas/EntityText"},{"type":"null"}],"description":"Expanded row written with this summary by expandedWriterBrief, including its compliance. Null when this response does not represent a paired create."},"expandedTextId":{"type":["integer","null"],"description":"Id of the expanded row a summary create wrote in the same transaction from expandedWriterBrief; read it at GET /v1/entities/{entityId}/texts/{textId}. Null on every other response."},"id":{"type":"integer","description":"Identifier of a text record"},"isCurrent":{"type":["boolean","null"],"description":"Whether this is the owner's current text of its textType; setting it clears the flag on the owner's other texts of that type."},"isPrimary":{"type":["boolean","null"],"description":"Whether this is the owner's primary text of its textType; setting it clears the flag on the owner's other texts of that type."},"language":{"type":["string","null"]},"owner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Owning record, nested ids only: owner.entityId or owner.personId — exactly one is set, and no name fields. Writes are scoped by the owning entity/person route; owner is never a write field."},"text":{"type":"string"},"textName":{"type":["string","null"]},"textType":{"type":"string","description":"Kind of text record"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","owner","text","textType"],"description":"A text record, such as a description, of an entity or person.","title":"EntityText"},"PageEntityText":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityText"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityText"},"PageEntityUrlLink":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityUrlLink"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntityUrlLink"},"UrlTypeAlias":{"type":"object","properties":{"alias":{"type":"array","items":{"type":"string"},"description":"Other spellings accepted for this URL type."},"canonical":{"type":"string","description":"Canonical urlType value."},"hostDomain":{"type":"array","items":{"type":"string"},"description":"Host domains used by URL inference for this urlType."}},"required":["alias","canonical","hostDomain"],"description":"A URL type, its accepted spellings, and the website hosts that identify it.","title":"UrlTypeAlias"},"GithubRepo":{"type":"object","properties":{"createdAt":{"type":["string","null"],"format":"date-time"},"description":{"type":["string","null"]},"forkCount":{"type":"integer"},"githubId":{"type":"integer","format":"int64","description":"GitHub's stable numeric repository id; each sync uses it to match and update the owner's repository record"},"homepageUrl":{"type":["string","null"],"description":"Project homepage URL declared on the repository"},"id":{"type":"integer","format":"int64"},"isArchived":{"type":"boolean","description":"True when the repository is archived on GitHub"},"isFork":{"type":"boolean","description":"True when the repository is a fork of another repository"},"language":{"type":["string","null"],"description":"Primary language reported by GitHub"},"license":{"type":["string","null"],"description":"SPDX license id reported by GitHub"},"name":{"type":"string","description":"Repository name (slug segment after the login)"},"ownerLogin":{"type":"string","description":"GitHub account login (org or user) the repository belongs to"},"repoCreatedAt":{"type":["string","null"],"format":"date-time","description":"GitHub created_at of the repository"},"repoPushedAt":{"type":["string","null"],"format":"date-time","description":"GitHub pushed_at of the repository at last sync"},"stargazerCount":{"type":"integer"},"topic":{"type":"array","items":{"type":"string"},"description":"Repository topics reported by GitHub"},"updatedAt":{"type":["string","null"],"format":"date-time"},"url":{"type":"string","description":"Canonical https GitHub repository page URL"}},"required":["forkCount","githubId","id","isArchived","isFork","name","ownerLogin","stargazerCount","topic","url"],"description":"GitHub repository synced for an entity or person from their current github URL links. githubId is GitHub's stable numeric repository id; rows are replaced per owner on each sync, so counts and timestamps reflect the last sync.","title":"GithubRepo"},"PageGithubRepo":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepo"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageGithubRepo"},"RegistryFilingAddress":{"type":"object","properties":{"addressLine1":{"type":["string","null"],"minLength":0,"maxLength":200,"description":"Street line, such as 6797 Winchester Circle."},"cityName":{"type":["string","null"],"minLength":0,"maxLength":200,"description":"City name."},"postalCode":{"type":["string","null"],"minLength":0,"maxLength":200,"description":"Postal or ZIP code."},"stateAbbrev":{"type":["string","null"],"minLength":0,"maxLength":200,"description":"State or region abbreviation."}},"description":"One address a registry filing states.","title":"RegistryFilingAddress"},"RegistryFilingPerson":{"type":"object","properties":{"executiveOfficer":{"type":"boolean","description":"True when the filing names this person an executive officer."},"nameFirst":{"type":"string","minLength":0,"maxLength":200,"description":"Given name."},"nameLast":{"type":"string","minLength":0,"maxLength":200,"description":"Family name."}},"required":["executiveOfficer","nameFirst","nameLast"],"description":"One person a registry filing names.","title":"RegistryFilingPerson"},"UniqueIdMutation":{"type":"object","properties":{"effectiveFrom":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated beginning of the ticker assignment at supplied precision."},"effectiveTo":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Source-stated end of the ticker assignment; absence does not mean current."},"idType":{"type":["string","null"],"description":"Identifier type token, for example ein, secCik, or ticker."},"identifier":{"type":["string","null"],"description":"Identifier value as issued by the registry."},"listingStanding":{"oneOf":[{"$ref":"#/components/schemas/UniqueIdListingStanding"},{"type":"null"}],"description":"Source-stated listing standing, not entity operating or ownership status."},"shareClass":{"type":["string","null"],"description":"Source-stated ticker share class; never inferred from the symbol."},"source":{"type":["string","null"],"description":"Optional attribution source label for the mapping; at most 100 Unicode code points after trimming surrounding whitespace. Blank labels are stored as null."},"standingAsOf":{"type":["string","null"],"pattern":"^(?!0000)[0-9]{4}(?:-(?:0[1-9]|1[0-2])(?:-(?:0[1-9]|[12][0-9]|3[01])(?:T(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,9})?)?(?:Z|[+-](?:(?:0[0-9]|1[0-7]):[0-5][0-9]|18:00)))?)?)?$","description":"Date from which the source says this listing standing applies, at the precision supplied."},"venue":{"type":["string","null"],"description":"Source-stated ticker venue, retaining exact spelling; unknown is absent."}},"description":"Create or merge-patch an external identifier mapping. Omitted fields preserve existing values; listing qualifiers apply only to entity tickers. A new or changed EIN requires independently verified tax-owner evidence; an unheld number or source label does not establish ownership. Unchanged bindings and label-only patches preserve the existing tax identity.","title":"UniqueIdMutation"},"RegistryFiling":{"type":"object","properties":{"address":{"type":"array","items":{"$ref":"#/components/schemas/RegistryFilingAddress"},"description":"Addresses the filing states: principal office, business, mailing."},"incorporatedYear":{"type":["integer","null"],"description":"Year of incorporation the filing states."},"nameFormer":{"type":"array","items":{"type":"string"},"description":"Earlier names the filing or registry states for this organization; the subject name is its current filed name."},"person":{"type":"array","items":{"$ref":"#/components/schemas/RegistryFilingPerson"},"description":"People the filing names: executive officers, directors, promoters."},"phone":{"type":["array","null"],"items":{"type":"string"},"description":"Phone numbers the filing states, such as a federal contract's vendor phone. A searched website proves the organization's site when one of its pages states the name and the same ten digits."},"uniqueId":{"type":"array","items":{"$ref":"#/components/schemas/UniqueIdMutation"},"description":"Registry ids the filing states, such as secCik, ein, or npi. A record holding the same non-EIN id is strong evidence; an EIN is a reported tax assertion, never independent identity evidence. Filing or claiming a source requires verified tax-owner evidence before any write; unresolved EINs return review. A record holding a different exclusive id of the same type is a different filer."}},"description":"Facts a government registry filing (SEC Form D, IRS, HRSA, NPPES) states about the organization. A lookup weighs each stored record's former names, addresses, team, registry ids, and founded year against them and matches without any model call only at about 220:1 odds. Invalid for a person lookup.","title":"RegistryFiling"},"IdentificationSubjectKind":{"type":"string","enum":["ENTITY","PERSON"],"description":"Kind of record to identify when you know it: ENTITY for companies, funds, and firms (and their products or services); PERSON for people. Only that kind is looked up; typeRecord or productServiceProviderId implies ENTITY.","title":"IdentificationSubjectKind"},"IdentificationSubjectRole":{"type":"string","enum":["INVESTOR"],"description":"Part the subject plays in the source: INVESTOR when the source lists it as an investor. Unlike typeRecord it keeps every record type a candidate, so a Company or Nonprofit that invests can still match. With it, a lookup with no url, filing, or sourceIdentifier binds a same-named Investment Firm or Fund over a record that does not invest; without a sourceNewsId it also answers NEEDS_REVIEW when the bound record shares its name with another live firm, or a visible record of its type family, unless the location's place names only the bound record's address and every namesake stores one. Without it, an Investment Firm or Fund typeRecord applies the firm preference alone. Omit it otherwise.","title":"IdentificationSubjectRole"},"IdentificationSubject":{"type":"object","properties":{"context":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"Specific facts in plain words: product, industry, employer and title, or founder names. Generic words like startup add nothing."},"email":{"type":["string","null"],"description":"Exact email address the record holds as a contact detail. Requires private visibility; when exactly one record of the requested kind holds it, that record matches before names or URLs."},"employer":{"type":"array","items":{"type":"string","maxLength":200},"description":"Companies the subject is known to work at; a person filing accepts a LinkedIn profile only when one of them appears in the profile's employer fields."},"filing":{"oneOf":[{"$ref":"#/components/schemas/RegistryFiling"},{"type":"null"}]},"kind":{"$ref":"#/components/schemas/IdentificationSubjectKind","description":"Kind of record to identify when you know it: ENTITY for companies, funds, and firms (and their products or services); PERSON for people. Only that kind is looked up; typeRecord or productServiceProviderId implies ENTITY."},"location":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"City, region, or country, such as Austin, TX. Tells namesakes apart; not proof on its own."},"name":{"type":["string","null"],"minLength":0,"maxLength":200,"description":"Name exactly as the source writes it, such as Acme AI or Jane Doe. Send name, url, or both; a name that is an absolute http(s) URL is read as url."},"productServiceProviderId":{"type":["string","null"],"format":"uuid","description":"Provider entity id for a Product or Service lookup. Omit it when the provider is unknown. With no typeRecord, searches both Product and Service. Invalid for a company type or a person lookup."},"providerId":{"type":["string","null"],"format":"uuid","description":"Deprecated: send productServiceProviderId, the name the entity duplicate-check and create routes use. Still read as productServiceProviderId; a request that sends it answers with Deprecation and Sunset headers.","deprecated":true},"role":{"$ref":"#/components/schemas/IdentificationSubjectRole","description":"Part the subject plays in the source: INVESTOR when the source lists it as an investor. Unlike typeRecord it keeps every record type a candidate, so a Company or Nonprofit that invests can still match. With it, a lookup with no url, filing, or sourceIdentifier binds a same-named Investment Firm or Fund over a record that does not invest; without a sourceNewsId it also answers NEEDS_REVIEW when the bound record shares its name with another live firm, or a visible record of its type family, unless the location's place names only the bound record's address and every namesake stores one. Without it, an Investment Firm or Fund typeRecord applies the firm preference alone. Omit it otherwise."},"sourceDocumentId":{"type":["string","null"],"format":"uuid","description":"Exact stored capture of sourceUrl, never an owned website. Requires capture-read authority and a matching successful evidence body; cannot accompany sourceNewsId. Private CSV rows require private body-read authority and their matching canonical relative body#row locator in sourceUrl. Bound lookups remain synchronous."},"sourceIdentifier":{"oneOf":[{"$ref":"#/components/schemas/UniqueIdMutation"},{"type":"null"}],"description":"Permanent source identity with idType and identifier for a catalog source-binding type. Legacy source may be omitted or null; non-null labels are rejected. Requires private visibility and resolves before names or URLs."},"sourceNewsId":{"type":["integer","null"],"description":"aVenture news id of the article that mentions the subject; an unknown id is a 400."},"sourceUrl":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"URL of the article that mentions the subject; read from aVenture news when stored there, otherwise fetched. Private CSV evidence uses the canonical relative body#row locator with its matching sourceDocumentId, never an owned website."},"typeRecord":{"oneOf":[{"$ref":"#/components/schemas/EntityType"},{"type":"null"}],"description":"Entity type to identify. A Product or Service never matches its provider organization, but a record stored under a neighboring type of the same family (Product or Service; Fund, Investment Firm, or Company) still matches, and a Business Line lookup sees both families. Invalid for a person lookup."},"url":{"type":"array","items":{"type":"string"},"description":"URLs the subject owns: its website, its LinkedIn company or person profile, an aVenture page, or a registry page. At most 10. Required when name is omitted. Put articles in sourceUrl."}},"description":"The company, Product, Service, or person to identify. Send the name, a URL it owns, or both, plus every location and source you have; a website or profile URL usually settles the answer without any model call.","title":"IdentificationSubject"},"IdentificationCandidateDomainAgreement":{"type":"string","enum":["MATCH","CONFLICT","UNKNOWN"],"description":"Whether this record's stored website agrees with a url the subject supplied; see IdentificationDomainAgreement.","title":"IdentificationCandidateDomainAgreement"},"IdentificationCandidateDuplicateBasis":{"type":"string","enum":["STUB","SHARED_FACT","JUDGED"],"description":"How this record was checked for being a duplicate of the chosen record; absent when it was not checked.","title":"IdentificationCandidateDuplicateBasis"},"IdentificationCandidate":{"type":"object","properties":{"createdAt":{"type":["string","null"],"format":"date-time","description":"When the record was created. A record created moments before the lookup is newly added and not yet researched."},"dataCompletionCoverage":{"type":["integer","null"],"minimum":0,"maximum":100,"description":"Percentage, 0 to 100, of this company's core profile facts that aVenture holds, as last computed. It measures how complete the record is, not how likely it is the subject. Absent for people and for companies not yet computed."},"domainAgreement":{"$ref":"#/components/schemas/IdentificationCandidateDomainAgreement","description":"Whether this record's stored website agrees with a url the subject supplied; see IdentificationDomainAgreement."},"duplicateBasis":{"$ref":"#/components/schemas/IdentificationCandidateDuplicateBasis","description":"How this record was checked for being a duplicate of the chosen record; absent when it was not checked."},"duplicateProbability":{"type":["number","null"],"format":"double","description":"Probability, 0 to 1, that this record is a duplicate of the chosen record; present only when duplicateBasis is JUDGED."},"foundedYear":{"type":["integer","null"],"description":"The year the entity was founded, when stored; absent for people and records without one."},"nameAgreement":{"type":["boolean","null"],"description":"Strict canonical equality of the requested name and this entity's display brand, under the lookup's matching rules. Not a similarity, legal-name or alias proof. Absent for people, missing names, unavailable proof and older stored responses."},"owner":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Entity identity (entityId) or person identity (personId). record.typeRecord distinguishes a company, product, or service; read it with GET /v1/entities/{entityId} or GET /v1/people/{personId}."},"probability":{"type":["number","null"],"format":"double","description":"Confidence, 0 to 1, that this record is the subject: the one confidence to act on. Absent when an exact id, URL, slug, or registry-id match settled the answer, which needs no confidence, or when this record was not compared."},"record":{"$ref":"#/components/schemas/SearchDuplicateCandidateScore","description":"The record with its duplicate-check score and reasons; score 0 with no reason means only vector similarity proposed it."},"updatedAt":{"type":["string","null"],"format":"date-time","description":"When the stored record was last updated."},"website":{"type":["string","null"],"description":"The record's current primary website URL as stored. Compare it to the subject's own url before trusting a same-name match; domainAgreement already does."}},"required":["owner","record"],"description":"One existing record considered as the subject.","title":"IdentificationCandidate"},"JobEnqueue":{"type":"object","properties":{"deduped":{"type":["boolean","null"],"description":"`true` when an earlier run answers this request instead of a new one; absent on routes that do not report deduplication."},"jobId":{"type":"string","format":"uuid"},"maxRuntimeSeconds":{"type":["integer","null"],"format":"int64","description":"Longest the accepted background write may run, in seconds, so a caller knows how long to keep polling `statusUrl`; absent on jobs that state no runtime."},"mode":{"type":"string"},"statusUrl":{"type":"string","description":"Endpoint to poll for asynchronous job state and result."}},"required":["jobId","mode","statusUrl"],"description":"Accepted asynchronous app job enqueue response.","title":"JobEnqueue"},"IdentificationStatus":{"type":"string","enum":["MATCHED","NO_MATCH","NEEDS_REVIEW"],"description":"What to do next: use the match, record that no match exists in this scope, or add evidence to settle an ambiguous identity.","title":"IdentificationStatus"},"UrlHostFormResolutionOutcome":{"type":"string","enum":["success","refusal","rejection","noResponse","transient"],"description":"Typed outcome from the fresh probe; absent when no probe ran.","title":"UrlHostFormResolutionOutcome"},"UrlHostFormResolution":{"type":"object","properties":{"concluded":{"type":"boolean","description":"True when the profile platform owns the canonical URL form, or live evidence landed on the submitted apex/www host pair or exact submitted host."},"crawlCdnProvider":{"oneOf":[{"$ref":"#/components/schemas/EntityUrlCrawlCdnProvider"},{"type":"null"}],"description":"Edge provider observed by this probe."},"crawlRenderMode":{"oneOf":[{"$ref":"#/components/schemas/EntityUrlCrawlRenderMode"},{"type":"null"}],"description":"Render requirement established from static and rendered readings of the same page."},"landingHost":{"type":["string","null"],"description":"Host the live answer landed on after redirects; absent for other outcomes."},"outcome":{"$ref":"#/components/schemas/UrlHostFormResolutionOutcome","description":"Typed outcome from the fresh probe; absent when no probe ran."},"status":{"type":["string","null"],"description":"Fresh HTTP status or classified probe result; absent when no probe ran."},"submittedUrl":{"type":"string","description":"The URL submitted for this probe."},"url":{"type":"string","description":"Preferred same-site URL; submittedUrl when evidence is inconclusive."}},"required":["concluded","submittedUrl","url"],"description":"Verified preferred host form of a submitted URL and any fresh HTTP evidence.","title":"UrlHostFormResolution"},"Identification":{"type":"object","properties":{"acceptedOwner":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonOwner"},{"type":"null"}],"description":"The owner to bind without confirming: a match no language model settled whose record an exact id, URL, slug, or registry id proved, or whose name spells the requested name up to a trailing legal or group form (an Investment Firm also by its bare brand); or created when its name keeps the requested name as whole words. Absent otherwise: confirm the match or created record before binding it."},"candidate":{"type":"array","items":{"$ref":"#/components/schemas/IdentificationCandidate"},"description":"Records considered, most probable first."},"created":{"oneOf":[{"$ref":"#/components/schemas/IdentificationCandidate"},{"type":"null"}],"description":"The new record a NO_MATCH subject with a proven own site was added as, or the existing one that already held its website. A new company is public and a new person hidden unless publishCreated says otherwise. Absent otherwise."},"detail":{"type":"string","description":"One sentence naming what settled the answer or what the user must decide."},"deterministicMatch":{"type":"boolean","description":"Whether this answer is a deterministic match to the scoped record. Absent on older stored responses; absence is not proof of a deterministic match."},"duplicate":{"type":"array","items":{"$ref":"#/components/schemas/IdentificationCandidate"},"description":"Other records that appear to describe the same subject as match. Empty when none were found."},"enrichmentRunId":{"type":["string","null"],"format":"uuid","description":"Research request filed for the created record; absent without created, when the lookup did not request research on it, and when the record is already public."},"filing":{"oneOf":[{"$ref":"#/components/schemas/JobEnqueue"},{"type":"null"}],"description":"Present only for callers that sent Prefer: respond-async. The identification is settled, but filing is pending. Poll statusUrl until the lookup job completes and use its identification; do not treat this as a final unfiled absence."},"filingRefusal":{"oneOf":[{"$ref":"#/components/schemas/DomainConflictType"},{"type":"null"}],"description":"Conflict kind that refused creating the shell, from ProblemDetail.details.conflictType. Absent when no typed conflict refused filing; detail retains the explanation."},"filingRefusalDetail":{"type":["string","null"],"description":"Reason that pre-insert validation refused filing; present for verified previews as well as filing requests when validation refuses the subject. Absent when validation admits it; a preview never creates a record or claims a source identifier."},"filingResolution":{"oneOf":[{"$ref":"#/components/schemas/ProblemResolution"},{"type":"null"}],"description":"The naming owner's typed correction for a refused verified preview or filing. Absent on older responses or when no correction was supplied; absence never permits a retry."},"inserted":{"type":["boolean","null"],"description":"Present only for callers that sent Prefer: respond-async. For a completed filing job, whether that request inserted created."},"languageModelSettled":{"type":["boolean","null"],"description":"true when the match was settled on a second, slower review; confirm it before relying on it. Absent otherwise."},"match":{"oneOf":[{"$ref":"#/components/schemas/IdentificationCandidate"},{"type":"null"}],"description":"The matched record when status is MATCHED."},"officialUrl":{"type":["string","null"],"description":"The subject's own website or profile page found in web search, or a supplied LinkedIn person profile verified against the subject's name and employer for a deterministic match. It may be a profile page on another site rather than the subject's own domain. Only the verified supplied profile may be attached to an existing person matched by name and employer."},"status":{"$ref":"#/components/schemas/IdentificationStatus","description":"What to do next: use the match, record that no match exists in this scope, or add evidence to settle an ambiguous identity."},"urlHostForm":{"type":"array","items":{"$ref":"#/components/schemas/UrlHostFormResolution"},"description":"Results of live URL checks the server ran because verifyUrl=true; empty otherwise."}},"required":["candidate","detail","duplicate","status","urlHostForm"],"description":"Which existing entity or person satisfies the requested identity, type, and provider scope, how that was settled, and the candidates considered, most probable first.","title":"Identification"},"LookupJobFailureDisposition":{"type":"string","enum":["TRANSIENT","TERMINAL"],"description":"Whether retrying the failed lookup can succeed: TERMINAL when the job judged the failure not transient, TRANSIENT when a transient failure exhausted or lacked its retry budget; absent unless state is FAILED and the job recorded that decision.","title":"LookupJobFailureDisposition"},"LookupJobMentionMentionType":{"type":"string","enum":["COMPANY","PERSON","PRODUCT_SERVICE"],"description":"Whether the source names a company, a Product or Service, or a person.","title":"LookupJobMentionMentionType"},"LookupJobMention":{"type":"object","properties":{"currentRole":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonAssociation"},{"type":"null"}],"description":"The current titled role, at a company aVenture shows publicly, of the highest-ranked listed person visible to the caller that has one (its personId names whom); null when none does or omitRecords is true. A bulk lookup job reads it on each status read."},"enrichmentRunId":{"type":["string","null"],"format":"uuid","description":"Research request filed for this mention, if any."},"entity":{"type":"array","items":{"$ref":"#/components/schemas/EntityList"},"description":"The candidate companies as search results show them, the match first, then by match probability and duplicate-check score; empty when omitRecords is true."},"failureReason":{"type":["string","null"],"description":"One sentence on why this name could not be identified, if not."},"identification":{"oneOf":[{"$ref":"#/components/schemas/Identification"},{"type":"null"}],"description":"The lookup of this name with the source as its context: MATCHED names the stored record, NEEDS_REVIEW lists the candidates, NO_MATCH means none is stored. Absent when failureReason is set."},"mentionType":{"$ref":"#/components/schemas/LookupJobMentionMentionType","description":"Whether the source names a company, a Product or Service, or a person."},"name":{"type":"string","description":"Name as the source writes it."},"person":{"type":"array","items":{"$ref":"#/components/schemas/Person"},"description":"The candidate people as search results show them, ranked like entity; empty when omitRecords is true."},"shell":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonOwner"},{"type":"null"}],"description":"New record aVenture created, at no charge, for a NO_MATCH name whose own live site names it: a company public and a person hidden unless publishCreated says otherwise. enrichmentRunId names research filed for it, if any; to file research yourself, send its entityId to POST /v1/entities/{entityId}/enrichments or its personId to POST /v1/people/{personId}/enrichments."},"shellDetail":{"type":["string","null"],"description":"Why no new record was created for this NO_MATCH name."}},"required":["entity","mentionType","name","person"],"description":"One company or person a source names, which stored record it is, and, from a standard article job or streaming lookup, the new record created when it is new (a company public and a person hidden unless the lookup's publishCreated says otherwise). Bulk lookup only identifies names and creates no records.","title":"LookupJobMention"},"LookupMentionType":{"type":"string","enum":["COMPANY","PERSON","PRODUCT_SERVICE"],"description":"Whether the source names a company, a Product or Service (PRODUCT_SERVICE), or a person. A Product or Service resolves like a company first, then among Product and Service records when that finds no match, and never creates a new record.","title":"LookupMentionType"},"LookupMention":{"type":"object","properties":{"name":{"type":"string","description":"Name as the source writes it."},"providerName":{"type":["string","null"],"description":"PRODUCT_SERVICE only: the organization that offers it, as the source writes it. When the offering resolves among offerings and its provider settles on an organization record, the match is limited to that record's offerings."},"searchQuery":{"type":"string","description":"Ignored: the lookup searches by name. Still accepted so callers that send it keep working; omit it.","deprecated":true},"type":{"$ref":"#/components/schemas/LookupMentionType","description":"Whether the source names a company, a Product or Service (PRODUCT_SERVICE), or a person. A Product or Service resolves like a company first, then among Product and Service records when that finds no match, and never creates a new record."}},"required":["name","type"],"description":"One company, Product or Service, or person a caller read from a page or screenshot it did not send.","title":"LookupMention"},"LookupJobMutation":{"type":"object","properties":{"deterministic":{"type":"boolean","description":"POST /v1/lookup/mentions without maxNames only: identify extracted names using deterministic stages, without judgment, web-evidence identity or shell filing. Name extraction is unchanged. Lookup jobs reject true."},"mention":{"type":"array","items":{"$ref":"#/components/schemas/LookupMention"},"description":"Companies and people the caller already read, identified without sending the page or screenshot. Send them alone, without an article or file. On lookup jobs, maxNames is required and no records are created and no research is requested."},"omitRecords":{"type":"boolean","description":"True answers each name with only its name, mentionType, failureReason, and identification status, stage, match, officialUrl, and detail: no entity or person rows and empty candidate and duplicate lists. Defaults to false."},"sourceDocumentId":{"type":["string","null"],"format":"uuid","description":"Id of a stored source document whose text is the article; send it alone. Only POST /v1/lookup/mentions without maxNames reads it. An event-stream request with Prefer respond-async, source-read accepts any signed-in user's own captured PDF; every other read needs editing rights."},"sourceNewsId":{"type":["integer","null"],"description":"aVenture news id of the article; an id that names no stored article is an error."},"sourceUrl":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"URL of the article; read from aVenture news when stored there, otherwise fetched."},"subject":{"oneOf":[{"$ref":"#/components/schemas/IdentificationSubject"},{"type":"null"}],"description":"Read-only: the subject of a POST /v1/lookup request with kind in the JSON body, sent with Prefer: respond-async, rolled over from a signed-in live lookup, or handed off for pending filing. This job preserves the route's options. Requests to create a job or read mentions must omit it."}},"description":"The article whose companies and people a lookup identifies. Send sourceUrl, sourceNewsId, or both; POST /v1/lookup/mentions also reads a recorded sourceDocumentId alone; lookup-only bulk jobs and POST /v1/lookup/mentions also accept mention instead. A job filed by Prefer: respond-async on POST /v1/lookup with kind in the JSON body carries that request's subject instead.","title":"LookupJobMutation"},"LookupSourceKind":{"type":"string","description":"What a lookup's source is, so a client names it while it loads: a news article, a LinkedIn or X post, a supplied profile, or the caller's own captured document (sourceDocumentId). An unknown future kind reads as a generic source.","title":"LookupSourceKind"},"LookupSourceReadPhase":{"type":"string","description":"Observed source-reading activity; unknown future phases retain their supplied copy.","title":"LookupSourceReadPhase"},"LookupSourceRead":{"type":"object","properties":{"continuation":{"oneOf":[{"$ref":"#/components/schemas/JobEnqueue"},{"type":"null"}],"description":"A committed durable lookup to follow; only its presence permits a promise to leave and return. Follow its status URL with the same caller's bearer, honoring Retry-After."},"faviconUrl":{"type":["string","null"]},"kind":{"oneOf":[{"$ref":"#/components/schemas/LookupSourceKind"},{"type":"null"}],"description":"What the source is, so a client names it while it loads; absent only on lookups accepted before this field existed."},"logoUrl":{"type":["string","null"]},"message":{"type":"array","items":{"type":"string"},"description":"Informational messages to cycle within this stage, never evidence of completed work."},"p95Ms":{"type":["integer","null"],"format":"int64","description":"Measured reference p95 in milliseconds; no slow-state claim when absent."},"phase":{"$ref":"#/components/schemas/LookupSourceReadPhase"},"publication":{"type":"string"}},"required":["message","phase","publication"],"description":"The shared article, post, or profile, or the caller's own captured document, being read, and what the server is doing with it now.","title":"LookupSourceRead"},"JobState":{"type":"string","enum":["PENDING","RUNNING","COMPLETED","FAILED","CANCELED","UNKNOWN"],"description":"Shared lifecycle states for async jobs (duplicate-check, logo-audit, etc.)","title":"JobState"},"LookupJob":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","description":"When the job was requested."},"failureDisposition":{"$ref":"#/components/schemas/LookupJobFailureDisposition","description":"Whether retrying the failed lookup can succeed: TERMINAL when the job judged the failure not transient, TRANSIENT when a transient failure exhausted or lacked its retry budget; absent unless state is FAILED and the job recorded that decision."},"failureReason":{"type":["string","null"],"description":"Why the job failed; absent unless state is FAILED."},"identification":{"oneOf":[{"$ref":"#/components/schemas/Identification"},{"type":"null"}],"description":"Subject jobs only: once COMPLETED, the identification returned for source.subject by POST /v1/lookup (kind in the JSON body), including requested filing and source-claim outcomes; absent otherwise."},"jobId":{"type":"string","format":"uuid","description":"Lookup job id."},"limitReached":{"type":"boolean","description":"True when a bulk lookup returned its name bound; more names may remain. False does not prove that extraction found every name on a page."},"maxNames":{"type":["integer","null"],"description":"Most names a bulk lookup accepts; absent for older article jobs."},"mention":{"type":"array","items":{"$ref":"#/components/schemas/LookupJobMention"},"description":"Each identified company and person; bulk results are available while running."},"namesFound":{"type":["integer","null"],"description":"Distinct names found for a bulk lookup; absent on standard jobs."},"namesProcessed":{"type":"integer","description":"Names processed so far, including per-name failures."},"news":{"oneOf":[{"$ref":"#/components/schemas/News"},{"type":"null"}],"description":"Stored article behind a shared-article lookup, when known."},"source":{"$ref":"#/components/schemas/LookupJobMutation","description":"The article the job reads or names supplied for a bulk lookup."},"sourceRead":{"oneOf":[{"$ref":"#/components/schemas/LookupSourceRead"},{"type":"null"}],"description":"Reading progress for an accepted, stored lookup of a shared article, post, or profile."},"state":{"$ref":"#/components/schemas/JobState","description":"Current job state."},"updatedAt":{"type":"string","format":"date-time","description":"When the job last changed state."}},"required":["createdAt","jobId","limitReached","mention","namesProcessed","source","state","updatedAt"],"description":"An async lookup job's state and, once COMPLETED, identified companies and people from its article or supplied names, or the identification of its subject.","title":"LookupJob"},"MentionLookup":{"type":"object","properties":{"filing":{"oneOf":[{"$ref":"#/components/schemas/JobEnqueue"},{"type":"null"}],"description":"Present only for callers that sent Prefer: respond-async. Identifications are settled but shell filing is pending. Poll statusUrl until the lookup job completes; merge its filing outcomes by mentionType and name."},"mention":{"type":"array","items":{"$ref":"#/components/schemas/LookupJobMention"},"description":"Each distinct name: the page's own company first, then the order the source shows them, with news outlets and the page's bylined authors last."},"news":{"oneOf":[{"$ref":"#/components/schemas/News"},{"type":"null"}],"description":"The stored aVenture news article the source page is, when it is one; absent otherwise."},"profileAutoEnrich":{"type":["boolean","null"],"description":"On a shared LinkedIn or X profile lookup's source event and JSON answer: whether the server's profile policy (app.lookup-mentions.profile-auto-enrich-enabled) researches the profile at once. A caller that sends scheduleEnrichment=false and files research itself follows it. Absent on every other event and lookup."},"sourceRead":{"oneOf":[{"$ref":"#/components/schemas/LookupSourceRead"},{"type":"null"}],"description":"Publisher reading state, available before the first name settles; a continuation is present only after its durable job commits."},"truncated":{"type":"boolean","description":"True when the page names more than this answer holds: more names than one live lookup reads, or a body longer than the read limit. A lookup job with maxNames reads every name."}},"required":["mention"],"description":"Every company, organization, investor, and person a page or screenshot names, each identified against stored records.","title":"MentionLookup"},"SearchLayer":{"type":"string","enum":["passage","synthesis","judgment","web"],"description":"Optional answer layer for a natural-language entity search. `passage` adds the text passages, from public research snippets and linked news, that best answer the question about the subject entities, their peers, or the top results; `synthesis` adds a written answer grounded only in those records and passages, citing each, and implies `passage`. A competitor, market, or provider question (\"who competes with X\", \"top X companies\", \"who provides X\") is always ranked by the judged probability that each entity answers it, so `judgment` adds nothing beyond that; `web` adds web search evidence, and the companies those results name, before judging. Other questions ignore `judgment` and `web`.","title":"SearchLayer"},"FederatedNaturalSearch":{"type":"object","properties":{"answerModel":{"type":["string","null"],"description":"Optional supported model id for the written answer, which also supplies the page heading, title, and description. Leave the field out for the server's model; a value that is not a supported model id answers 422."},"cacheMode":{"$ref":"#/components/schemas/SearchCacheMode","description":"Cache policy. use reuses earlier search work; bypass and refresh compute fresh results and are honored only for accounts with private-data access."},"entityFilter":{"$ref":"#/components/schemas/EntityFilter","description":"Explicit entity constraints for the entity scope only, as on POST /v1/search/natural/entities: caller-supplied fields override planner values. The person and news scopes ignore it. Terminal entities are suppressed only for category discovery; named and relational searches keep them, even with true. Explicit suppressNonOperating=false always includes them."},"freshness":{"$ref":"#/components/schemas/SearchFreshness","description":"auto refreshes date-sensitive queries before cache admission; cached permits ordinary cache reuse. Explicit admitted bypass or refresh wins."},"mode":{"$ref":"#/components/schemas/SearchMode","description":"Search strategy to run. Defaults to `auto`: the fast name layer runs first (a single-token query as keyword search, a multiword query as an exact normalized name) and the language-model planner runs only on a miss, so name lookups never pay for planning. Any other value forces exactly that strategy: `exact` and `keyword` skip planner model resolution and its rate limit. Entity and person natural-search take every value but `hybrid`; news and federated search accept only `auto` and `keyword`; content search accepts `auto`, `keyword`, `semantic`, and `hybrid` (`semantic` and `hybrid` only for one entity's or person's content)."},"model":{"type":["string","null"],"description":"Optional supported model id for planning the search. Leave the field out for the server's model; a value that is not a supported model id answers 422."},"modelCatalogRevision":{"type":["integer","null"],"description":"Model catalog revision this search uses for its model defaults and inference policy; null reads the current revision. Callers without private-data access always read the current revision. An unknown revision returns 404."},"newsSize":{"type":["integer","null"],"description":"News scope page size; defaults to 4, matching the aventure.vc search page, under the same page-size cap. Explicit null uses the size query parameter."},"personSize":{"type":["integer","null"],"description":"Person scope page size; defaults to 10, matching the aventure.vc search page, under the same page-size cap. Explicit null uses the size query parameter."},"query":{"type":"string","minLength":1,"description":"Plain-English search request."},"reasoningEffort":{"oneOf":[{"$ref":"#/components/schemas/ReasoningEffort"},{"type":"null"}],"description":"Optional reasoning effort for every model call this search makes: the query planner and the synthesis answer. Each call sends the nearest level its model supports, the lower one on a tie. Accounts without private-data access are capped at `medium`; higher values are lowered."},"searchCatalogRevision":{"type":["integer","null"],"description":"Search catalog revision this search uses for its global search policy and vocabulary; null reads the current revision. Callers without private-data access always read the current revision. An unknown revision returns 404."},"sourceNewsId":{"type":["integer","null"],"minimum":1,"description":"The stored aVenture news article this search started from. Its approved public Company and Business Line mentions lead the entity scope as subjects in mention order. An unknown or non-public article, or one without such mentions, keeps the ordinary headline search. Other scopes and answer generation are unchanged."},"tenantPolicyRevision":{"type":["integer","null"],"description":"Runtime policy revision this search uses for the serving deployment's execution budgets; null reads that deployment's current revision. Callers without private-data access always read the current revision. An unknown revision returns 404."}},"required":["query"],"description":"Plain-English search across companies, people, and news, plus optional per-scope entity constraints and page sizes.","title":"FederatedNaturalSearch"},"SearchDiscoveryFiling":{"type":"object","properties":{"enrichmentRunId":{"type":["string","null"],"format":"uuid","description":"Research run queued for that company by this filing; null when the record already existed or no run was available within the response deadline."},"entityId":{"type":"string","format":"uuid","description":"Company record filed for the discovered site."}},"required":["entityId"],"description":"Company record filed from one search discovery result and its queued research.","title":"SearchDiscoveryFiling"},"SearchModeExecution":{"type":"object","properties":{"modeRequested":{"$ref":"#/components/schemas/SearchMode","description":"Search mode requested by the caller."},"modeUsed":{"$ref":"#/components/schemas/SearchMode","description":"Search method the server actually ran."}},"required":["modeRequested","modeUsed"],"description":"Search method the caller asked for and the method the server actually ran.","title":"SearchModeExecution"},"SearchIntent":{"type":"string","enum":["discovery","profile","peer","comparison"],"description":"Question shape the planner read from a natural-language search. `discovery` lists entities matching a description; `profile` asks what a named entity does, offers, or how it stands; `peer` asks for a named entity's competitors or look-alikes; `comparison` asks how two or more named entities compare.","title":"SearchIntent"},"EntityFilterSortable":{"type":"string","description":"Entity filter sortable","title":"EntityFilterSortable"},"SortOrderEntityFilterSortable":{"type":"object","properties":{"descending":{"type":"boolean","description":"true for descending (DESC), false for ascending (ASC)"},"field":{"$ref":"#/components/schemas/EntityFilterSortable","description":"Sort field for this resource (entity list uses EntityFilter.Sortable / published sort keys)."},"sortKey":{"type":["string","null"],"description":"Request sort key for this field: pass `sort=<sortKey>,<asc|desc>` to the matching directory list endpoint to reproduce this term. Absent when the field has no request key."}},"required":["descending","field"],"description":"Single sort term: which enumerated sort field to use and whether direction is descending.","title":"SortOrderEntityFilterSortable"},"SearchRelevance":{"type":"string","enum":["keyword","semantic"],"description":"Relevance rank that ordered a search page before any sortable column.","title":"SearchRelevance"},"SearchOrderingEntityFilterSortable":{"type":"object","properties":{"order":{"type":"array","items":{"$ref":"#/components/schemas/SortOrderEntityFilterSortable"},"description":"Sortable-column terms applied after the relevance rank, highest precedence first. Empty when the relevance rank alone ordered the page. Listing priorities that every list page applies ahead of these terms, such as operating-status and logo priority, are not reported."},"relevance":{"oneOf":[{"$ref":"#/components/schemas/SearchRelevance"},{"type":"null"}],"description":"Relevance rank applied before any column term; absent when no relevance rank ran."}},"required":["order"],"description":"Ordering applied to a search result page: an optional relevance rank that precedes the sortable-column terms.","title":"SearchOrderingEntityFilterSortable"},"SearchInterpretation":{"type":"object","properties":{"confidence":{"$ref":"#/components/schemas/Confidence","description":"Planner confidence in the structured interpretation."},"execution":{"$ref":"#/components/schemas/SearchModeExecution","description":"Requested and executed search strategy."},"fallbackUsed":{"type":"boolean","description":"True when the semantic fallback replaced an untranslatable planner result with a semantic search over the original query, or when a plan that matched no entity was relaxed into one that did."},"filter":{"$ref":"#/components/schemas/EntityListFilter","description":"Canonical entity filter generated from the natural-language query."},"intent":{"$ref":"#/components/schemas/SearchIntent","description":"Question shape the planner read from the query."},"interpretation":{"type":"string","description":"Human-readable summary of how the query was interpreted."},"personAssociation":{"oneOf":[{"$ref":"#/components/schemas/PersonFilter"},{"type":"null"}],"description":"Return only the companies through which a person matching this people filter holds its primary association, such as startups founded by former Revolut executives."},"sort":{"$ref":"#/components/schemas/SearchOrderingEntityFilterSortable","description":"Ordering applied to the result page: the relevance rank that ran first, if any, then the sortable-column terms."},"subjectEntityName":{"type":"array","items":{"type":"string"},"description":"Brand or legal names of the entities the question is about, as written in the query; usually empty for discovery questions, but retained for an unresolved typed offering profile. A name does not establish an accepted entity ID."},"unsupported":{"type":["string","null"],"description":"Constraint the planner could not translate into the canonical EntityFilter contract, and the planned constraints a zero-row search relaxed; null when every material constraint was supported and applied."}},"required":["confidence","execution","fallbackUsed","filter","intent","interpretation","sort","subjectEntityName"],"description":"Structured interpretation of a natural-language entity search: canonical filter, sort, confidence, and any unsupported constraint the planner could not translate.","title":"SearchInterpretation"},"DatasourceSourceMetadata":{"type":"object","properties":{"changedAt":{"type":["string","null"],"format":"date-time"},"dataSourceUpdatedAt":{"type":["string","null"],"format":"date-time"},"pendingApproval":{"type":["integer","null"]},"sourceId":{"type":["string","null"]},"status":{"type":["string","null"]}},"description":"Details of where a record's field values came from.","title":"DatasourceSourceMetadata"},"FundraiseInvestmentEvidence":{"type":"object","properties":{"fundManagerRelationshipSource":{"oneOf":[{"$ref":"#/components/schemas/DatasourceSourceMetadata"},{"type":"null"}],"description":"Source metadata of a managed-fund relationship, when used."},"fundraiseTransaction":{"$ref":"#/components/schemas/EntityFundraiseTransaction","description":"Recorded round with investor-specific and source attribution."},"fundraiseTransactionSource":{"oneOf":[{"$ref":"#/components/schemas/DatasourceSourceMetadata"},{"type":"null"}],"description":"Source metadata of the fundraise transaction."},"investorJoinSource":{"oneOf":[{"$ref":"#/components/schemas/DatasourceSourceMetadata"},{"type":"null"}],"description":"Source metadata of the selected investment participation."}},"required":["fundraiseTransaction"],"description":"A funding round, the investor's part in it, and the sources for each.","title":"FundraiseInvestmentEvidence"},"SearchInvestment":{"type":"object","properties":{"evidence":{"$ref":"#/components/schemas/FundraiseInvestmentEvidence"},"investor":{"$ref":"#/components/schemas/EntityPersonOwner"},"semanticMatch":{"oneOf":[{"$ref":"#/components/schemas/ContentEmbeddingMatch"},{"type":"null"}]}},"required":["evidence","investor"],"description":"An investor's participation in a round, with evidence for the portfolio product or service it matched.","title":"SearchInvestment"},"SearchJudgment":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid","description":"Id of the answering entity; its row is in `result`."},"matchedOffering":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Current public Product/Service that supports this answer."},"probability":{"type":"number","format":"double","description":"Judged probability, 0 to 1, that the entity answers the question."},"webUrl":{"type":"array","items":{"type":"string"},"description":"Stored web search result pages that name the entity; empty without `web`."}},"required":["entityId","probability","webUrl"],"description":"An entity that answers a competitor, market, or provider question, with the judged probability that it does.","title":"SearchJudgment"},"SearchPassage":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid","description":"Entity the passage is about."},"label":{"type":"string","description":"Snippet type key for research snippets, or the article title for news articles."},"publishedAt":{"type":["string","null"],"format":"date-time","description":"Article publication time for news passages; null for snippets."},"score":{"type":"number","format":"double","description":"Cosine similarity between the question and the passage; higher is closer. Compare scores only within one response."},"source":{"$ref":"#/components/schemas/SearchEvidenceSource","description":"Record type that owns the passage text."},"sourceId":{"type":"string","description":"Identifier of the owning snippet or news article."},"text":{"type":"string","description":"Passage text: the snippet, or the article summary or excerpt."},"url":{"type":["string","null"],"description":"Original article URL for news passages; null for snippets."}},"required":["entityId","label","score","source","sourceId","text"],"description":"Text passage ranked by semantic closeness to a natural-language question, read from its owning record.","title":"SearchPassage"},"PageResultEntityList":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EntityList"}},"number":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"required":["content","number","size","totalElements","totalPages"],"title":"PageResultEntityList"},"NaturalSearchResult":{"type":"object","properties":{"answer":{"oneOf":[{"$ref":"#/components/schemas/SearchAnswer"},{"type":"null"}],"description":"Written answer grounded in the subject, peer, and result records and the passages; null unless the request asks for the `synthesis` layer."},"filing":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SearchDiscoveryFiling"},"description":"Discovered companies this caller filed and their research runs."},"hiddenNonOperatingCount":{"type":["integer","null"],"format":"int64","description":"Distinct terminal entities hidden from the measured bounded candidate recall after other filters matched. Null when suppression was disabled or not measured; this is not a directory-wide total. Acquired subsidiaries are not terminal."},"interpretation":{"$ref":"#/components/schemas/SearchInterpretation","description":"Structured interpretation used to run the entity list query."},"investment":{"type":"array","items":{"$ref":"#/components/schemas/SearchInvestment"},"description":"Recorded investment participation supporting investor discovery. Each row keeps its entity or personal investor, portfolio company, transaction attribution, and query-matched offering evidence. Empty for other question intents."},"judgment":{"type":"array","items":{"$ref":"#/components/schemas/SearchJudgment"},"description":"Judged rows of the `result` page for a competitor, market, or provider question: the same entities in the same order, each with its judged probability. Empty for other questions."},"passage":{"type":"array","items":{"$ref":"#/components/schemas/SearchPassage"},"description":"Passages that best answer the question, ranked by score; empty unless the request asks for the `passage` layer."},"peer":{"type":"array","items":{"$ref":"#/components/schemas/EntitySimilarityResult"},"description":"Curated competitors of the single subject entity for `peer` questions; semantic look-alikes are the result page. Empty otherwise."},"pendingWebQuery":{"type":"array","items":{"type":"string"},"description":"Web searches for this question not yet stored; their evidence joins a later request. Empty without the `web` layer."},"personLead":{"type":"boolean","description":"Whether this search is mainly about people; set only on entity events in the stream."},"result":{"$ref":"#/components/schemas/PageResultEntityList","description":"Page of matching entities."},"searchRequestId":{"type":["string","null"],"format":"uuid","description":"Id of this search's stored record. Null when the search was not recorded."},"subject":{"type":"array","items":{"$ref":"#/components/schemas/EntityList"},"description":"Entities the question is about, one per resolved subject name, in query order; empty when the question names none or none resolves."}},"required":["interpretation","investment","judgment","passage","peer","pendingWebQuery","personLead","result","subject"],"description":"Result of a plain-English entity search: how the query was interpreted, and the resulting page of entities.","title":"NaturalSearchResult"},"PageResultNews":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/News"}},"number":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"required":["content","number","size","totalElements","totalPages"],"title":"PageResultNews"},"NewsEntityMention":{"type":"object","properties":{"entity":{"type":"array","items":{"$ref":"#/components/schemas/NewsResolvedEntityLink"},"description":"Public entities the article links to."},"newsId":{"type":"integer","description":"News article id."}},"required":["entity","newsId"],"description":"Public entities one news article links to, in link order.","title":"NewsEntityMention"},"SortOrderPersonSortFieldField":{"type":"string","enum":["ID","FIRST_NAME","LAST_NAME","FULL_NAME","SLUG","CREATED_AT","UPDATED_AT","STATUS","GENDER","AMOUNT_INVESTED","TOTAL_INVESTMENTS"],"description":"Sort field for this resource (entity list uses EntityFilter.Sortable / published sort keys).","title":"SortOrderPersonSortFieldField"},"SortOrderPersonSortField":{"type":"object","properties":{"descending":{"type":"boolean","description":"true for descending (DESC), false for ascending (ASC)"},"field":{"$ref":"#/components/schemas/SortOrderPersonSortFieldField","description":"Sort field for this resource (entity list uses EntityFilter.Sortable / published sort keys)."},"sortKey":{"type":["string","null"],"description":"Request sort key for this field: pass `sort=<sortKey>,<asc|desc>` to the matching directory list endpoint to reproduce this term. Absent when the field has no request key."}},"required":["descending","field"],"description":"Single sort term: which enumerated sort field to use and whether direction is descending.","title":"SortOrderPersonSortField"},"SearchOrderingPersonSortField":{"type":"object","properties":{"order":{"type":"array","items":{"$ref":"#/components/schemas/SortOrderPersonSortField"},"description":"Sortable-column terms applied after the relevance rank, highest precedence first. Empty when the relevance rank alone ordered the page. Listing priorities that every list page applies ahead of these terms, such as operating-status and logo priority, are not reported."},"relevance":{"oneOf":[{"$ref":"#/components/schemas/SearchRelevance"},{"type":"null"}],"description":"Relevance rank applied before any column term; absent when no relevance rank ran."}},"required":["order"],"description":"Ordering applied to a search result page: an optional relevance rank that precedes the sortable-column terms.","title":"SearchOrderingPersonSortField"},"PersonSearchInterpretation":{"type":"object","properties":{"confidence":{"$ref":"#/components/schemas/Confidence","description":"Confidence in interpreting the request as this structured people query."},"employerSemanticQuery":{"type":["string","null"],"description":"Employer-business topic resolved through entity similarity before people paging. Matching employer IDs narrow filter.entityFilter.entityId; an empty selection returns no people without removing hard constraints. Employer kinds exclude Product and Service records, which are offerings rather than employers. Personal expertise stays in filter.semanticQuery. Null when employer selection is entirely structured."},"execution":{"$ref":"#/components/schemas/SearchModeExecution","description":"Requested and executed search strategy."},"fallbackUsed":{"type":"boolean","description":"True when the semantic fallback replaced an unconstrained planner result with a semantic search over the original query."},"filter":{"$ref":"#/components/schemas/PersonFilter","description":"Canonical person filter generated from the natural-language query."},"interpretation":{"type":"string","description":"Human-readable summary of how the query was interpreted."},"sort":{"$ref":"#/components/schemas/SearchOrderingPersonSortField","description":"Ordering applied to the result page: the relevance rank that ran first, if any, then the sortable-column terms."},"unsupported":{"type":["string","null"],"description":"Constraint the planner could not translate into the canonical PersonFilter contract; null when every material constraint was supported."}},"required":["confidence","execution","fallbackUsed","filter","interpretation","sort"],"description":"Structured interpretation of a natural-language people search: canonical filter, sort, confidence, and any unsupported constraint the planner could not translate exactly.","title":"PersonSearchInterpretation"},"SearchPersonProfileOrganizationEvidence":{"type":"string","enum":["headline","profile","none"],"description":"Where the profile names the organization the query paired with the person: in its headline, elsewhere in the profile text, or not at all; null when the query named no organization.","title":"SearchPersonProfileOrganizationEvidence"},"SearchPersonProfile":{"type":"object","properties":{"currentCompany":{"type":["string","null"],"description":"Current company named by aVenture's stored LinkedIn capture; null until one is stored."},"headline":{"type":["string","null"],"description":"Profile headline from aVenture's stored LinkedIn capture, or the web search index until a capture is stored; null when that source has no headline."},"id":{"type":"string","format":"uuid","description":"Canonical aVenture person id."},"location":{"type":["string","null"],"description":"Profile location as the web search index holds it."},"name":{"type":"string","description":"Name on the profile."},"named":{"type":"string","description":"The person's name as the query wrote it; profiles group under it."},"organizationEvidence":{"$ref":"#/components/schemas/SearchPersonProfileOrganizationEvidence","description":"Where the profile names the organization the query paired with the person: in its headline, elsewhere in the profile text, or not at all; null when the query named no organization."},"photoUrl":{"type":["string","null"],"description":"Headshot URL: the web search index's LinkedIn headshot until aVenture's stored LinkedIn capture supplies one; null when neither holds a usable headshot."},"profileUrl":{"type":"string","description":"Canonical aVenture person page URL; never an external profile URL."},"slug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Canonical aVenture person slug."}},"required":["id","name","named","profileUrl","slug"],"description":"A person resolved or filed from a web-discovered LinkedIn profile. Every row links to its aVenture person page; the web header does not assert current employment.","title":"SearchPersonProfile"},"PageResultPerson":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/Person"}},"number":{"type":"integer"},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"required":["content","number","size","totalElements","totalPages"],"title":"PageResultPerson"},"PersonNaturalSearchResult":{"type":"object","properties":{"interpretation":{"$ref":"#/components/schemas/PersonSearchInterpretation","description":"Structured interpretation used to run the people query."},"investment":{"type":"array","items":{"$ref":"#/components/schemas/SearchInvestment"},"description":"Personal investment participation supporting the returned people. Firm portfolio activity is never attributed to employees. Empty for other question intents."},"personLead":{"type":"boolean","description":"Whether people are the confirmed requested focus of this search."},"profile":{"type":"array","items":{"$ref":"#/components/schemas/SearchPersonProfile"},"description":"aVenture people resolved or filed from web-discovered LinkedIn profiles whom no returned person matches, grouped by `named` in query order. A search that has not run yet runs only for a signed-in subscriber with `layer=web`."},"result":{"$ref":"#/components/schemas/PageResultPerson","description":"Page of matching people."},"searchRequestId":{"type":["string","null"],"format":"uuid","description":"Id of this search's stored record. Null when the search was not recorded."}},"required":["interpretation","investment","personLead","profile","result"],"description":"Result of a plain-English people search: how the query was interpreted, and the resulting page of people.","title":"PersonNaturalSearchResult"},"FederatedSearchProvenanceIncompleteScopeItems":{"type":"string","enum":["entity","person","news"],"description":"Record type a federated search covers.","title":"FederatedSearchProvenanceIncompleteScopeItems"},"FederatedSearchRejectionScope":{"type":"string","enum":["entity","person","news"],"description":"Scope that rejected the query.","title":"FederatedSearchRejectionScope"},"FederatedSearchRejection":{"type":"object","properties":{"detail":{"type":"string","description":"Why the scope rejected the query."},"field":{"type":["string","null"],"description":"Request field the scope rejected, such as search."},"scope":{"$ref":"#/components/schemas/FederatedSearchRejectionScope","description":"Scope that rejected the query."}},"required":["detail","scope"],"description":"One federated scope that rejected the query instead of searching.","title":"FederatedSearchRejection"},"FederatedSearchProvenanceUnavailableItems":{"type":"string","enum":["entity","person","news"],"description":"Record type a federated search covers.","title":"FederatedSearchProvenanceUnavailableItems"},"FederatedSearchProvenance":{"type":"object","properties":{"answerUnavailable":{"type":"boolean","description":"True when synthesis was requested but the answer model was temporarily unavailable (an upstream outage, open circuit, full concurrency limit, or expired deadline), so the entity scope carries no answer while every scope's rows returned, or when the answer check refused every paragraph the answer model drafted, so the answer has no paragraph. Retrying the same query may succeed."},"entity":{"$ref":"#/components/schemas/SearchModeExecution","description":"Search method requested and used for entities."},"incompleteScope":{"type":"array","items":{"$ref":"#/components/schemas/FederatedSearchProvenanceIncompleteScopeItems"},"description":"Scopes whose required named subjects could not be resolved, or whose optional sources or candidate judgments did not all complete. Returned rows remain usable but the requested population is incomplete, so this response must not be cached as final. Clarifying the named subjects or retrying may complete these scopes."},"news":{"$ref":"#/components/schemas/SearchModeExecution","description":"Search method requested and used for news."},"person":{"$ref":"#/components/schemas/SearchModeExecution","description":"Search method requested and used for people."},"rejection":{"type":"array","items":{"$ref":"#/components/schemas/FederatedSearchRejection"},"description":"Scopes that rejected the query as unsearchable and returned an empty page while the other scopes ran; empty when every scope ran."},"unavailable":{"type":"array","items":{"$ref":"#/components/schemas/FederatedSearchProvenanceUnavailableItems"},"description":"Scopes whose search was temporarily unavailable (an upstream outage, open circuit, full concurrency limit, or expired deadline) and returned an empty page while the other scopes ran; empty when every scope ran. Retrying the same query may succeed, unlike a rejection."}},"required":["answerUnavailable","entity","news","person","rejection","unavailable"],"description":"Requested and executed search strategy for every federated scope.","title":"FederatedSearchProvenance"},"SearchQualifierOption":{"type":"object","properties":{"label":{"type":"string","description":"Option label."},"query":{"type":"string","description":"Search query the option runs."}},"required":["label","query"],"description":"One rewritten query a qualifier offers.","title":"SearchQualifierOption"},"SearchQualifier":{"type":"object","properties":{"key":{"type":"string","description":"Stable qualifier key."},"option":{"type":"array","items":{"$ref":"#/components/schemas/SearchQualifierOption"},"description":"Rewritten queries the reader can run instead, in display order."},"prompt":{"type":"string","description":"Text shown above the options."}},"required":["key","option","prompt"],"description":"A prompt offered beside a broad query's results, with rewritten queries that narrow or widen it.","title":"SearchQualifier"},"FederatedSearchSection":{"type":"string","description":"Result section a search page renders: people; operating companies and business lines; other organizations (nonprofits and governments); products and services; investment firms; or funds. Legacy company aggregates operating companies, business lines, nonprofits, and governments; legacy investor aggregates investment firms and funds. Neither legacy aggregate is emitted in section order.","title":"FederatedSearchSection"},"FederatedSearch":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/NaturalSearchResult","description":"Canonical entity natural-search result."},"entityDetail":{"type":"array","items":{"$ref":"#/components/schemas/EntityDetail"},"description":"Public detail for Product/Service rows on the entity result page, in search rank order. Other entity types are not hydrated."},"news":{"$ref":"#/components/schemas/PageResultNews","description":"Page of news results from keyword search."},"newsEntityMention":{"type":"array","items":{"$ref":"#/components/schemas/NewsEntityMention"},"description":"Public entities each news row on the page links to, in news page order; a row with no public entity link has no entry."},"person":{"$ref":"#/components/schemas/PersonNaturalSearchResult","description":"Canonical person natural-search result."},"personDetail":{"type":"array","items":{"$ref":"#/components/schemas/PersonDetail"},"description":"Public detail for people on the person result page, in search rank order, with at most two public entity associations per person; person address and URL enrichment is omitted."},"personLead":{"type":"boolean","description":"Whether people lead this page: the query names a person, a web-found person's profile shows, or the query asks for people by a search catalog people term."},"provenance":{"$ref":"#/components/schemas/FederatedSearchProvenance","description":"Requested and executed strategy for each search scope."},"qualifier":{"oneOf":[{"$ref":"#/components/schemas/SearchQualifier"},{"type":"null"}],"description":"A prompt with rewritten queries offered beside a broad query's results, from the search catalog revision the search read; null when no qualifier rule matches."},"section":{"type":"array","items":{"$ref":"#/components/schemas/FederatedSearchSection"},"description":"Result sections from most to least relevant. People lead when `personLead` is true and come last otherwise. An executed entity type scope leads only when all its expanded types select one section. Remaining sections follow their best entity row's rank, then missing sections follow in Companies, Other Organizations, Products and Services, Investment Firms, Funds order. Legacy company and investor aggregates are not emitted."}},"required":["entity","entityDetail","news","newsEntityMention","person","personDetail","personLead","provenance"],"description":"Combined entity, person, and news search results, each from that record type's own search, with the search method used for each.","title":"FederatedSearch"},"LinkSearch":{"type":"object","properties":{"query":{"type":"string","description":"Search query synthesized from the page content."},"related":{"$ref":"#/components/schemas/FederatedSearch","description":"Federated entity, person, and news results for the synthesized query."},"url":{"type":"string","description":"The fetched page URL after validation."}},"required":["query","related","url"],"description":"Search results related to a shared article or page URL: the fetched URL, the search query synthesized from the page content, and the federated entity, person, and news results for that query.","title":"LinkSearch"},"SharedSearchList":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid","description":"Stable shared-search UUID"},"query":{"type":"string"},"slug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."}},"required":["createdAt","id","query","slug"],"description":"Public search publication metadata.","title":"SharedSearchList"},"CursorSliceSharedSearchList":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/SharedSearchList"}},"nextCursor":{"type":["string","null"]}},"required":["content"],"title":"CursorSliceSharedSearchList"},"SharedSearchMutation":{"type":"object","properties":{"id":{"type":["string","null"],"format":"uuid","description":"Stable sharing UUID generated once and reused across retries."},"query":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"Plain-English query to run against public records and publish."},"searchRequestId":{"type":["string","null"],"format":"uuid","description":"entity.searchRequestId of the federated search response the sharing page showed. When that search was signed in, asked this query (ignoring case), and its shareable answer is still kept, the share publishes exactly that answer without searching again; otherwise it runs the default public search."}},"description":"Publish a query under a stable client UUID; retries return the same saved answer.","title":"SharedSearchMutation"},"SharedSearch":{"type":"object","properties":{"canonicalSlug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Slug of the canonical share of the same query, compared case-insensitively: the share named by the query's own slug, else the earliest share. Pages name it as their canonical URL; equals publication.slug on that share."},"publication":{"$ref":"#/components/schemas/SharedSearchList"},"result":{"$ref":"#/components/schemas/FederatedSearch"}},"required":["canonicalSlug","publication","result"],"description":"A saved public search query and answer.","title":"SharedSearch"},"WebSearchCacheSource":{"type":"string","enum":["ANY","PROVIDER"],"description":"ANY reuses a compatible cached web search from any provider, checking the selected provider first. PROVIDER restricts reuse to the selected live provider. Neither option changes bypassCache, which always fetches from the live provider.","title":"WebSearchCacheSource"},"WebSearchProvider":{"type":"string","description":"Upstream web search provider: SERPAPI is Google results through SerpAPI, EXA is Exa's instant search with highlights, EXA_DEEP is Exa's slower, broader deep search, and BRIGHT_DATA is Google results through Bright Data's SERP access.","title":"WebSearchProvider"},"WebSearchRecency":{"type":"string","enum":["DAY","WEEK","MONTH","YEAR"],"description":"Result recency window: the past day, week, month, or year.","title":"WebSearchRecency"},"Search":{"type":"object","properties":{"allowSuspectedShellStrip":{"type":["boolean","null"],"description":"Set true only when an unmarked amount in the search text is intentional."},"bypassCache":{"type":"boolean","default":false,"description":"Skip cache lookup and refresh from the search provider"},"cacheKey":{"type":["string","null"],"description":"Stable lookup text for cache keying when generated search text varies between runs"},"cacheMode":{"$ref":"#/components/schemas/SearchCacheMode","description":"use permits cached provider evidence; bypass and refresh require a new provider search. Captured evidence is always archived. Legacy bypassCache=true wins."},"cacheSource":{"$ref":"#/components/schemas/WebSearchCacheSource","description":"Permit compatible cached results from ANY provider by default, or restrict to PROVIDER. The provider field independently selects live misses; bypassCache skips every provider's cache. document.provider identifies the serving source."},"deep":{"type":"boolean","default":false,"description":"Deprecated alias for `provider: EXA_DEEP`; `true` with any other `provider` is refused with 400.","deprecated":true},"deferredAiOverview":{"type":"boolean","default":false,"description":"Wait in-request for Google's AI Overview when Google defers it to a follow-up request, as it does for most company and person lookups: one extra SerpAPI search per overview not already stored. An explicit `true` also reruns a stored search older than SerpAPI's one-hour cache to get a fresh token (its one-minute overview token expired and the cache would return it unchanged). Without it, no deferred overview is fetched; one an earlier fetch stored still comes back at no extra cost. A fetch that returns no overview is not retried for six hours. An overview Google returns inline always comes back in `aiOverview` at no extra cost. Exa results never carry one."},"freshness":{"$ref":"#/components/schemas/SearchFreshness","description":"auto refreshes date-sensitive queries before cache admission; cached permits ordinary cache reuse. Explicit cacheMode bypass/refresh or bypassCache wins."},"language":{"type":["string","null"],"description":"Search language code"},"provider":{"oneOf":[{"$ref":"#/components/schemas/WebSearchProvider"},{"type":"null"}],"description":"Provider to search; omitted keeps the default, SerpAPI. EXA runs Exa's instant search with highlights and never falls back to SerpAPI: an Exa failure answers 503. EXA_DEEP runs Exa's slower, broader deep search (higher recall for market and provider questions, about 3-6 s) and falls back to SerpAPI on an Exa failure. Both Exa providers answer synchronously (`Prefer: respond-async` does not apply), are stored apart from SerpAPI results, and are charged like any search."},"recency":{"oneOf":[{"$ref":"#/components/schemas/WebSearchRecency"},{"type":"null"}],"description":"Return only results Google dates within this window; SERPAPI or BRIGHT_DATA only, refused with 400 for other providers. Omitted searches every date."},"region":{"type":["string","null"],"description":"Search region code"},"resultLimit":{"type":["integer","null"],"description":"Maximum number of normalized results to keep"},"retrievedFor":{"oneOf":[{"$ref":"#/components/schemas/EntityPersonOwner"},{"type":"null"}],"description":"Company or person this search is about; the stored result is filed under that record on a fetch or a cache hit."},"search":{"type":"string","description":"Search text sent to the upstream web search provider, at most the search catalog's text.maxSearchTermLength characters; a longer query answers 422 naming that limit, so shorten it rather than retrying."},"source":{"type":["string","null"],"maxLength":64,"description":"Optional label for the calling application, up to 64 characters, stored with the search for attribution and abuse review."}},"required":["search"],"description":"Live web search request with cache controls","title":"Search"},"SearchAccountingReceipt":{"type":"object","properties":{"executionId":{"type":"string","format":"uuid","description":"Search execution that admitted this caller's work"},"workId":{"type":"string","format":"uuid","description":"Work admitted for this caller, not a shared document's earlier cost owner"}},"required":["executionId","workId"],"title":"SearchAccountingReceipt"},"SearchAiOverviewReference":{"type":"object","properties":{"index":{"type":"integer","description":"Citation number the answer text uses as `[index]`"},"snippet":{"type":["string","null"]},"source":{"type":["string","null"],"description":"Publisher name Google shows for the page"},"title":{"type":"string"},"url":{"type":"string"}},"required":["index","title","url"],"description":"One page Google's AI Overview cites","title":"SearchAiOverviewReference"},"SearchAiOverview":{"type":"object","properties":{"reference":{"type":"array","items":{"$ref":"#/components/schemas/SearchAiOverviewReference"},"description":"Pages the answer cites"},"text":{"type":"string","description":"Generated answer as Markdown in Google's block order; `[n]` cites the reference whose `index` is n"}},"required":["reference","text"],"description":"Google's AI Overview for a web search: its generated answer and the pages it cites","title":"SearchAiOverview"},"SearchAnswerBox":{"type":"object","properties":{"answer":{"type":"string","description":"Direct answer text; Google's snippet when the box states no separate answer"},"snippet":{"type":["string","null"],"description":"Supporting snippet the box shows"},"title":{"type":["string","null"],"description":"Title of the page the answer comes from"},"type":{"type":["string","null"],"description":"Google's answer-box kind"},"url":{"type":["string","null"],"description":"URL of the page the answer comes from"}},"required":["answer"],"description":"Google's direct answer shown above the results","title":"SearchAnswerBox"},"SourceDocumentList":{"type":"object","properties":{"cacheHitCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"documentType":{"type":"string"},"expiresAt":{"type":["string","null"],"format":"date-time"},"httpStatus":{"type":["integer","null"]},"id":{"type":"string","format":"uuid","description":"Document id"},"lastAccessedAt":{"type":["string","null"],"format":"date-time"},"lastFetchedAt":{"type":"string","format":"date-time","description":"Newest successful capture time in latestPerUrl mode; otherwise this version last fetch. Older API revisions omit this field."},"provider":{"type":"string"},"providerRequestId":{"type":["string","null"]},"rawByteCount":{"type":["integer","null"],"format":"int64"},"rawCharset":{"type":["string","null"]},"rawMediaType":{"type":["string","null"]},"sourceKey":{"type":"string","description":"What identifies this fetch: the normalized URL, a hash of the query, or a dataset name plus an external id"},"upstreamContentEncoding":{"type":["string","null"]},"url":{"type":["string","null"],"description":"Fetched page URL; also used to page through results by recency"}},"required":["cacheHitCount","createdAt","documentType","id","provider","sourceKey"],"description":"A stored source document's metadata, without its content.","title":"SourceDocumentList"},"SearchKnowledgeGraphFact":{"type":"string","description":"Knowledge panel fact name","title":"SearchKnowledgeGraphFact"},"SearchKnowledgeGraphAttribute":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/SearchKnowledgeGraphFact","description":"Fact the panel labels"},"value":{"type":"string","description":"Value as the panel states it"}},"required":["name","value"],"description":"One fact Google's knowledge panel states","title":"SearchKnowledgeGraphAttribute"},"SearchKnowledgeGraph":{"type":"object","properties":{"attribute":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SearchKnowledgeGraphAttribute"},"description":"Facts the panel states, such as founding date, CEO, and headquarters"},"description":{"type":["string","null"],"description":"Entity description the panel shows"},"title":{"type":["string","null"],"description":"Entity name the panel shows"},"type":{"type":["string","null"],"description":"Entity kind Google states"},"website":{"type":["string","null"],"description":"Official website the panel links"}},"description":"Google's knowledge panel for the entity the query names","title":"SearchKnowledgeGraph"},"SearchRelatedQuestion":{"type":"object","properties":{"question":{"type":"string","description":"Question text"},"snippet":{"type":["string","null"],"description":"Answer snippet; null when Google answers the question with an AI Overview"},"title":{"type":["string","null"],"description":"Title of the page the snippet comes from"},"url":{"type":["string","null"],"description":"URL of the page the snippet comes from"}},"required":["question"],"description":"One \"People also ask\" question Google shows for the query","title":"SearchRelatedQuestion"},"SearchHit":{"type":"object","properties":{"hostOnly":{"type":"boolean","description":"True when the provider withheld this result's page link, so url is only its publisher's site root: cite it as the publisher, never fetch it as the page."},"image":{"type":["string","null"],"description":"Image the provider attached to this result (a LinkedIn profile's headshot); null when it attached none."},"publishedDate":{"type":["string","null"],"format":"date","description":"Provider-reported source publication calendar date, retaining the date in its reported offset rather than converting to UTC. Null when no valid complete ISO publication date is supplied; never inferred from the URL or retrieval time."},"relevanceScore":{"type":"number","format":"double"},"snippet":{"type":"string"},"title":{"type":"string"},"url":{"type":"string"}},"required":["relevanceScore","snippet","title","url"],"description":"One normalized web-search hit with its title, URL, snippet, and relevance score","title":"SearchHit"},"SearchSportsTeam":{"type":"object","properties":{"name":{"type":"string","description":"Team name"},"seeding":{"type":["integer","null"],"description":"Tournament seeding when Google states one"}},"required":["name"],"description":"One team in a spotlighted game","title":"SearchSportsTeam"},"SearchSportsResult":{"type":"object","properties":{"league":{"type":["string","null"],"description":"League or tournament"},"stage":{"type":["string","null"],"description":"Stage of the competition"},"team":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SearchSportsTeam"},"description":"Teams in the game"},"venue":{"type":["string","null"],"description":"Venue or stadium"}},"description":"Google's spotlight for one game the query names","title":"SearchSportsResult"},"WebSearch":{"type":"object","properties":{"accountingReceipt":{"oneOf":[{"$ref":"#/components/schemas/SearchAccountingReceipt"},{"type":"null"}],"description":"Accounting identity of this caller's admitted search work, not historical shared-cache spend"},"aiOverview":{"oneOf":[{"$ref":"#/components/schemas/SearchAiOverview"},{"type":"null"}],"description":"Google's AI Overview: returned whenever Google answers inline or its deferred overview is stored (fetched by this or an earlier search that set `deferredAiOverview`); null when Google produced none or no such fetch stored its deferred overview"},"answerBox":{"oneOf":[{"$ref":"#/components/schemas/SearchAnswerBox"},{"type":"null"}],"description":"Google's direct answer box; null when the page shows none"},"document":{"$ref":"#/components/schemas/SourceDocumentList","description":"Stored record, metadata only, of the page this web search fetched"},"knowledgeGraph":{"oneOf":[{"$ref":"#/components/schemas/SearchKnowledgeGraph"},{"type":"null"}],"description":"Google's knowledge panel; null when the page shows none"},"relatedQuestion":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SearchRelatedQuestion"},"description":"Google's \"People also ask\" questions; null when the page shows none"},"relatedSearch":{"type":["array","null"],"items":{"type":"string"},"description":"Google's related searches; null when the page shows none"},"result":{"type":"array","items":{"$ref":"#/components/schemas/SearchHit"},"description":"Normalized result items in provider rank order"},"search":{"$ref":"#/components/schemas/Search","description":"Web search request represented by this result"},"sportsResult":{"oneOf":[{"$ref":"#/components/schemas/SearchSportsResult"},{"type":"null"}],"description":"Google's game spotlight; null when the page shows none"}},"required":["document","result","search"],"description":"Live web search result with its backing source-document row and normalized items","title":"WebSearch"},"EntityNaturalSearch":{"type":"object","properties":{"filter":{"$ref":"#/components/schemas/EntityFilter","description":"Explicit entity constraints. Caller-supplied fields override planner values; the planner fills only fields left at their canonical defaults."},"search":{"$ref":"#/components/schemas/NaturalSearch","description":"The plain-English search request and the search method to use."},"sourceNewsId":{"type":["integer","null"],"minimum":1,"description":"The stored aVenture news article this search started from. Its approved public Company and Business Line mentions are ordered subjects, rather than candidates judged from the headline. An unknown or non-public article, or one without such mentions, keeps the ordinary search."}},"required":["search"],"description":"Plain-English entity search plus explicit hard constraints. The planner may fill only filter fields the caller leaves unset.","title":"EntityNaturalSearch"},"PersonNaturalSearch":{"type":"object","properties":{"filter":{"$ref":"#/components/schemas/PersonFilter","description":"Explicit people constraints. Caller-supplied fields override planner values; the planner fills only fields left at their canonical defaults."},"search":{"$ref":"#/components/schemas/NaturalSearch","description":"The plain-English search request and the search method to use."}},"required":["search"],"description":"Plain-English people search plus explicit hard constraints. The planner may fill only filter fields the caller leaves unset.","title":"PersonNaturalSearch"},"DirectoryExportColumnType":{"type":"string","description":"Core export column; readers accept future columns.","title":"DirectoryExportColumnType"},"SharedDirectoryType":{"type":"string","enum":["companies","investors","people"],"description":"Public directory page whose filtered view is shared.","title":"SharedDirectoryType"},"DirectoryExportMutation":{"type":"object","properties":{"column":{"type":["array","null"],"items":{"$ref":"#/components/schemas/DirectoryExportColumnType"},"description":"Core columns in the requested order; absent uses the directory's defaults."},"directory":{"$ref":"#/components/schemas/SharedDirectoryType","description":"Directory whose records are exported."},"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/EntityListFilter"},{"type":"null"}],"description":"The companies or investors view's entity search filter."},"id":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Ordered selection; ignores filters, sort, page and size. Inaccessible records are omitted."},"page":{"type":"integer","minimum":0,"description":"Zero-based view page; ignored with id."},"personFilter":{"oneOf":[{"$ref":"#/components/schemas/PersonFilter"},{"type":"null"}],"description":"The people view's person search filter."},"size":{"type":"integer","minimum":1,"maximum":100,"description":"View page size, from 1 through 100; ignored with id."},"sort":{"type":["string","null"],"description":"View order as property,asc or property,desc; ignored with id."},"urlType":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityUrlType"},"description":"URL columns after the core columns. Passing urlType keeps columns stable across pages; absent emits types present on this page in declaration order."}},"required":["directory","page","size"],"description":"Export a directory page or an ordered selection of at most 100 records.","title":"DirectoryExportMutation"},"ResearchAccessType":{"type":"string","description":"What filing one more research run does now. `INCLUDED`: the plan's monthly allowance covers it. `ADDITIONAL_USAGE`: the allowance is spent or withheld, and the run is billed as additional usage (prepaid credit or invoice). `EXHAUSTED`: the plan's allowance is spent and no additional usage can pay for it (off, spend cap reached, or prepaid credit below the unit price); filing answers 429. `PLAN_REQUIRED`: the plan includes no research and no additional usage can pay for it; filing answers 402 or 429. `BILLING_BLOCKED`: a paid plan is past due, unpaid, incomplete, or paused, or an additional-usage invoice is unpaid; filing answers 402.","title":"ResearchAccessType"},"ResearchAllowance":{"type":"object","properties":{"access":{"oneOf":[{"$ref":"#/components/schemas/ResearchAccessType"},{"type":"null"}],"description":"What filing one more research run on this meter does now, decided exactly as filing decides it; present only on the company and person research meters"},"limit":{"type":["integer","null"],"description":"Cap for the period; absent when the tier meters without a cap"},"remaining":{"type":["integer","null"],"description":"Cap minus used, never negative; absent when there is no cap"},"resetAt":{"type":"string","format":"date-time","description":"When used returns to zero and the next period starts"},"used":{"type":"integer","description":"Amount used so far in the period"}},"required":["resetAt","used"],"description":"Usage allowance for one meter in its accounting period","title":"ResearchAllowance"},"DirectoryExport":{"type":"object","properties":{"allowance":{"$ref":"#/components/schemas/ResearchAllowance","description":"The shared monthly entityView allowance for company or investor rows, or personView allowance for person rows, after this export."},"column":{"type":"array","items":{"type":"string"}},"directory":{"$ref":"#/components/schemas/SharedDirectoryType"},"hasNext":{"type":"boolean"},"page":{"type":"integer"},"row":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"size":{"type":"integer"},"totalElements":{"type":"integer","format":"int64"}},"required":["allowance","column","directory","hasNext","page","row","size","totalElements"],"description":"A metered directory page with ordered headers and text cells; absent values are empty strings.","title":"DirectoryExport"},"SharedDirectoryList":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"directory":{"$ref":"#/components/schemas/SharedDirectoryType"},"heading":{"type":"string","description":"Page heading the model wrote for the view."},"id":{"type":"string","format":"uuid","description":"Stable shared-directory UUID"},"slug":{"type":"string","pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Lowercase URL slug that identifies the record."}},"required":["createdAt","directory","heading","id","slug"],"description":"Public directory publication metadata.","title":"SharedDirectoryList"},"CursorSliceSharedDirectoryList":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/SharedDirectoryList"}},"nextCursor":{"type":["string","null"]}},"required":["content"],"title":"CursorSliceSharedDirectoryList"},"SharedDirectoryMutation":{"type":"object","properties":{"directory":{"oneOf":[{"$ref":"#/components/schemas/SharedDirectoryType"},{"type":"null"}],"description":"Directory page the view filters."},"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/EntityListFilter"},{"type":"null"}],"description":"Body the companies or investors page sends to entity search."},"id":{"type":["string","null"],"format":"uuid","description":"Stable sharing UUID generated once and reused across retries."},"personFilter":{"oneOf":[{"$ref":"#/components/schemas/PersonFilter"},{"type":"null"}],"description":"Body the people page sends to person search."},"sort":{"type":["string","null"],"minLength":0,"maxLength":100,"description":"Sort the page sends, as property,asc or property,desc."}},"description":"Publish a directory view under a stable client UUID; retries and identical views return the same publication.","title":"SharedDirectoryMutation"},"SharedDirectory":{"type":"object","properties":{"description":{"type":"string","description":"Search-result description, at most 155 characters."},"entityFilter":{"oneOf":[{"$ref":"#/components/schemas/EntityListFilter"},{"type":"null"}],"description":"Entity filter of a companies or investors view."},"personFilter":{"oneOf":[{"$ref":"#/components/schemas/PersonFilter"},{"type":"null"}],"description":"Person filter of a people view."},"publication":{"$ref":"#/components/schemas/SharedDirectoryList"},"sort":{"type":["string","null"],"description":"Sort as property,direction; absent uses the directory default."},"title":{"type":"string","description":"Search-result title, at most 60 characters."}},"required":["description","publication","title"],"description":"A saved public directory view and its page copy.","title":"SharedDirectory"},"PageEntity":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/Entity"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageEntity"},"PagePersonSimilarityResult":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/PersonSimilarityResult"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PagePersonSimilarityResult"},"PageUniqueId":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/UniqueId"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageUniqueId"},"UniqueIdOwnerScope":{"type":"string","enum":["entity","person"],"description":"Owner kind a unique-id type can attach to: entity or person.","title":"UniqueIdOwnerScope"},"UniqueIdTypeAlias":{"type":"object","properties":{"alias":{"type":"array","items":{"type":"string"},"description":"Other catalog-recognized spellings for this identifier type."},"canonical":{"type":"string","description":"Canonical catalog identifier. Public reads and writes admit only types enabled for the public API."},"label":{"type":"string","description":"Human-readable label."},"ownerScope":{"type":"array","items":{"$ref":"#/components/schemas/UniqueIdOwnerScope"},"description":"Owner kinds this identifier type may attach to."},"pattern":{"type":["string","null"],"description":"Regex the identifier value must match, when constrained."}},"required":["alias","canonical","label","ownerScope"],"description":"An identifier type with its label, accepted spellings, whether it applies to entities or people, and its format pattern.","title":"UniqueIdTypeAlias"},"SlugLocation":{"type":"object","properties":{"entityType":{"type":["string","null"]},"id":{"type":"string"},"path":{"type":"string"},"resourceType":{"$ref":"#/components/schemas/SlugResource"},"slug":{"type":"string"},"url":{"type":"string"}},"required":["id","path","resourceType","slug","url"],"description":"Current slug location for a resource","title":"SlugLocation"},"ClassificationCatalogBucket":{"type":"object","properties":{"alias":{"type":"array","items":{"type":"string"},"description":"Other accepted spellings for this bucket (JSON key plus storage form, deduplicated against `type`). The /tags ?type= and /catalog ?bucketType= parameters accept any of `[type, ...alias]`. Empty when the bucket has only one canonical spelling."},"bucket":{"type":["string","null"],"description":"Canonical classification bucket key."},"hierarchical":{"type":"boolean","description":"Whether the bucket's values form a parent and child hierarchy."},"label":{"type":"string","description":"Human-readable bucket label (e.g. 'Revenue Model')."},"tag":{"type":"array","items":{"$ref":"#/components/schemas/EntityTag"},"description":"Active tags only. Empty when includeTags=false."},"tagCount":{"type":"integer","description":"Total active tags in this bucket. Populated regardless of `includeTags` so callers can decide whether to fetch detail without a follow-up count query."},"type":{"type":"string","description":"Canonical wire value — use as ?type= for /tags, as ?bucketType= for /catalog, and as Tag.type when round-tripping. Matches Tag.type returned in this bucket's tag[]."}},"required":["alias","hierarchical","label","tag","tagCount","type"],"description":"Classification bucket with active registry tags and accepted-spelling aliases.","title":"ClassificationCatalogBucket"},"ClassificationCatalogCategory":{"type":"object","properties":{"alias":{"type":"array","items":{"type":"string"},"description":"Accepted spellings for this category."},"category":{"type":"string","description":"Canonical standardized category key."},"classification":{"type":"array","items":{"$ref":"#/components/schemas/StandardizedClassification"},"description":"Standardized classifications. Empty when includeTags=false."},"classificationCount":{"type":"integer","description":"Total standardized classifications in this category."},"hierarchical":{"type":"boolean","description":"Whether the category's values form a parent and child hierarchy."},"label":{"type":"string","description":"Human-readable category label."}},"required":["alias","category","classification","classificationCount","hierarchical","label"],"description":"Standardized classification category with accepted spellings and registry rows.","title":"ClassificationCatalogCategory"},"ClassificationCatalog":{"type":"object","properties":{"bucket":{"type":"array","items":{"$ref":"#/components/schemas/ClassificationCatalogBucket"}},"category":{"type":"array","items":{"$ref":"#/components/schemas/ClassificationCatalogCategory"}},"generatedAt":{"type":"string","format":"date-time"},"totalBucket":{"type":"integer"},"totalCategory":{"type":"integer"},"totalStandardizedClassification":{"type":"integer"},"totalTag":{"type":"integer"}},"required":["bucket","category","generatedAt","totalBucket","totalCategory","totalStandardizedClassification","totalTag"],"description":"Full active entity classification taxonomy in one payload. Inactive tags are omitted.","title":"ClassificationCatalog"},"PageClassificationContentItems":{"oneOf":[{"$ref":"#/components/schemas/EntityTag"},{"$ref":"#/components/schemas/StandardizedClassification"}],"title":"PageClassificationContentItems"},"PageClassification":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/PageClassificationContentItems"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageClassification"},"ApiKeyStatus":{"type":"string","enum":["ACTIVE","REVOKED","EXPIRED"],"description":"Provider-derived current lifecycle state","title":"ApiKeyStatus"},"ApiKey":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","description":"Provider creation timestamp"},"description":{"type":["string","null"],"description":"Optional user-visible key description"},"expiresAt":{"type":["string","null"],"format":"date-time","description":"Provider expiry timestamp"},"id":{"type":"string","pattern":"^ak_[0-9A-Fa-f]{32}$","description":"API key identifier"},"lastUsedAt":{"type":["string","null"],"format":"date-time","description":"Most recent provider-recorded use timestamp"},"name":{"type":"string","description":"User-visible key name"},"revocationReason":{"type":["string","null"],"description":"Provider revocation explanation"},"scopes":{"type":"array","items":{"type":"string"},"description":"Scopes assigned to this key"},"status":{"$ref":"#/components/schemas/ApiKeyStatus","description":"Provider-derived current lifecycle state"},"subject":{"type":"string","description":"Account that owns the key"},"updatedAt":{"type":"string","format":"date-time","description":"Provider metadata update timestamp"}},"required":["createdAt","id","name","scopes","status","subject","updatedAt"],"description":"API key metadata; never contains the key secret","title":"ApiKey"},"CliAuthorizationClientPlatform":{"type":"string","enum":["MACOS","LINUX","WINDOWS","OTHER"],"description":"Coarse operating-system family reported by the CLI","title":"CliAuthorizationClientPlatform"},"CliAuthorizationEncryptionAlgorithm":{"type":"string","enum":["RSA_OAEP_256_A256_GCM_V1"],"description":"Versioned hybrid encryption suite for one-time CLI credential delivery","title":"CliAuthorizationEncryptionAlgorithm"},"CliAuthorizationMutation":{"type":"object","properties":{"clientLabel":{"type":["string","null"],"pattern":".*\\S.*","minLength":1,"maxLength":120,"description":"Label for this CLI installation"},"clientPlatform":{"oneOf":[{"$ref":"#/components/schemas/CliAuthorizationClientPlatform"},{"type":"null"}],"description":"Coarse operating-system family"},"encryptionAlgorithm":{"oneOf":[{"$ref":"#/components/schemas/CliAuthorizationEncryptionAlgorithm"},{"type":"null"}],"description":"Requested hybrid encryption suite"},"encryptionPublicKey":{"type":["string","null"],"minLength":344,"maxLength":12000,"description":"Base64-encoded DER SubjectPublicKeyInfo for an ephemeral RSA public key"}},"description":"Creates a short-lived CLI authorization request bound to an ephemeral key","title":"CliAuthorizationMutation"},"CliAuthorizationStart":{"type":"object","properties":{"comparisonCode":{"type":"string","description":"Human comparison code shown by both the CLI and browser"},"expiresAt":{"type":"string","format":"date-time","description":"Authorization request expiry timestamp"},"id":{"type":"string","format":"uuid","description":"Public authorization request identifier"},"intervalSeconds":{"type":"integer","format":"int64","minimum":1,"description":"Minimum poll interval in seconds"},"pollSecret":{"type":"string","description":"One-time high-entropy credential required to poll and acknowledge delivery"},"verificationUrl":{"type":"string","format":"uri","description":"Browser verification URL"}},"required":["comparisonCode","expiresAt","id","intervalSeconds","pollSecret","verificationUrl"],"description":"New CLI authorization handle and one-time poll credential","title":"CliAuthorizationStart"},"CliAuthorizationStatus":{"type":"string","enum":["PENDING","ISSUING","KEY_READY","REVOKING","CONSUMED","REVOKED","DENIED","EXPIRED","FAILED"],"description":"CLI authorization broker lifecycle state","title":"CliAuthorizationStatus"},"CliAuthorizationTerminalReason":{"type":"string","enum":["Denied by user","Authorization request expired","CLI authorization expired before acknowledgement","Credential issuance recovery revoked an unrecoverable key","Revoked by user","Clerk create response validation failed","Credential issuance failed","Credential issuance could not be recovered","API-key quota reached","Credential issuance lost its database claim","Credential delivery encryption failed","Credential issuance finalization was lost"],"description":"CLI authorization terminal explanation","title":"CliAuthorizationTerminalReason"},"CliAuthorization":{"type":"object","properties":{"approvedAt":{"type":["string","null"],"format":"date-time","description":"Time the authenticated user approved this request"},"clientLabel":{"type":"string","description":"User-supplied label for the requesting CLI installation"},"clientPlatform":{"$ref":"#/components/schemas/CliAuthorizationClientPlatform","description":"Coarse client operating-system family"},"comparisonCode":{"type":"string","description":"Human comparison code shown by both the CLI and browser"},"consumedAt":{"type":["string","null"],"format":"date-time","description":"Time the CLI acknowledged durable local storage"},"createdAt":{"type":"string","format":"date-time","description":"Authorization request creation timestamp"},"expiresAt":{"type":"string","format":"date-time","description":"Time after which an unfinished request cannot be approved"},"id":{"type":"string","format":"uuid","description":"Public authorization request identifier"},"intervalSeconds":{"type":"integer","format":"int64","minimum":1,"description":"Minimum server-directed poll interval in seconds"},"keyReadyAt":{"type":["string","null"],"format":"date-time","description":"Time encrypted key delivery became available"},"status":{"$ref":"#/components/schemas/CliAuthorizationStatus","description":"Current broker lifecycle state"},"terminalAt":{"type":["string","null"],"format":"date-time","description":"Time this request entered its terminal state"},"terminalReason":{"oneOf":[{"$ref":"#/components/schemas/CliAuthorizationTerminalReason"},{"type":"null"}],"description":"Why the request ended (contains no secrets)"},"updatedAt":{"type":"string","format":"date-time","description":"Most recent lifecycle update timestamp"}},"required":["clientLabel","clientPlatform","comparisonCode","createdAt","expiresAt","id","intervalSeconds","status","updatedAt"],"description":"Browser-approved CLI authorization metadata. Secret poll and encrypted-delivery material are exposed only by their dedicated one-time response contracts.","title":"CliAuthorization"},"CliAuthorizationDelivery":{"type":"object","properties":{"algorithm":{"$ref":"#/components/schemas/CliAuthorizationEncryptionAlgorithm","description":"Hybrid encryption suite used for this delivery"},"authenticationTag":{"type":"string","description":"Base64-encoded 16-byte AES-GCM authentication tag"},"ciphertext":{"type":"string","description":"Base64-encoded encrypted UTF-8 API-key secret bytes"},"nonce":{"type":"string","description":"Base64-encoded 12-byte AES-GCM nonce"},"wrappedKey":{"type":"string","description":"Base64-encoded RSA-OAEP-wrapped AES key"}},"required":["algorithm","authenticationTag","ciphertext","nonce","wrappedKey"],"description":"RSA-wrapped AES-256-GCM delivery of one API-key secret","title":"CliAuthorizationDelivery"},"CliAuthorizationPoll":{"type":"object","properties":{"delivery":{"oneOf":[{"$ref":"#/components/schemas/CliAuthorizationDelivery"},{"type":"null"}],"description":"Encrypted one-time delivery, present only for KEY_READY"},"expiresAt":{"type":"string","format":"date-time","description":"Authorization request expiry timestamp"},"status":{"$ref":"#/components/schemas/CliAuthorizationStatus","description":"Current broker lifecycle state"},"terminalReason":{"oneOf":[{"$ref":"#/components/schemas/CliAuthorizationTerminalReason"},{"type":"null"}],"description":"Why the request ended (contains no secrets)"}},"required":["expiresAt","status"],"description":"Current broker state and encrypted delivery when the key is ready","title":"CliAuthorizationPoll"},"AuthPermissionGrant":{"type":"object","properties":{"permission":{"type":"array","items":{"type":"string"}},"role":{"type":"array","items":{"type":"string"}}},"required":["permission","role"],"description":"Auth permission grant","title":"AuthPermissionGrant"},"AuthOperationMethod":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"],"description":"HTTP method of a generated aVenture API operation.","title":"AuthOperationMethod"},"AuthOperation":{"type":"object","properties":{"authorizationPath":{"type":"string","minLength":0,"maxLength":2048,"description":"Concrete path for authorization. Preserve the path template's literal segments and substitute its parameters with values matching their generated schema. No request is executed against this path."},"method":{"$ref":"#/components/schemas/AuthOperationMethod","description":"HTTP method of the operation."},"operationId":{"type":"string","minLength":0,"maxLength":128,"description":"Generated OpenAPI operation id."},"path":{"type":"string","minLength":0,"maxLength":2048,"description":"Absolute API path. A whole path segment may be an OpenAPI placeholder such as {entityId}."}},"required":["authorizationPath","method","operationId","path"],"description":"Generated API operation candidate identified by operation id, method, and path.","title":"AuthOperation"},"AuthOperationFilter":{"type":"object","properties":{"operation":{"type":"array","items":{"$ref":"#/components/schemas/AuthOperation"},"description":"Generated API operation candidates to authorize."}},"required":["operation"],"description":"Bounded generated API operations to authorize for the current session.","title":"AuthOperationFilter"},"AuthOperationAccess":{"type":"string","enum":["READ","PERMISSION","ADMIN"],"description":"Current session access class: ordinary reads, explicit permissions, or admin.","title":"AuthOperationAccess"},"AuthOperationAuthorization":{"type":"object","properties":{"operation":{"type":"array","items":{"$ref":"#/components/schemas/AuthOperation"},"description":"Operations from your list that the current session may call."},"operationAccess":{"$ref":"#/components/schemas/AuthOperationAccess","description":"Highest access class represented by the current session."},"permissionGrant":{"$ref":"#/components/schemas/AuthPermissionGrant","description":"Existing role and permission grant for the current session."}},"required":["operation","operationAccess","permissionGrant"],"description":"Your current permissions, access level, and which of the API operations you listed you may call under the current authorization policy.","title":"AuthOperationAuthorization"},"AuthClient":{"type":"object","properties":{"authorizationServer":{"type":"string","format":"uri","description":"OAuth authorization server URI"},"clientId":{"type":"string","description":"Public OAuth client identifier"},"mcpResource":{"type":["string","null"],"format":"uri","description":"OAuth resource indicator accepted for this environment's MCP server"},"redirectUri":{"type":"string","format":"uri","description":"Registered loopback callback URI template"},"resource":{"type":"string","format":"uri","description":"OAuth resource indicator accepted by the API"},"scope":{"type":"array","items":{"type":"string"},"description":"OAuth scope requested by the CLI"}},"required":["authorizationServer","clientId","redirectUri","resource","scope"],"title":"AuthClient"},"AuthProviderCatalog":{"type":"object","properties":{"clerkPublishableKey":{"type":["string","null"],"description":"Publishable key for browser sign-in; absent when browser sign-in is unavailable"},"oauthClient":{"oneOf":[{"$ref":"#/components/schemas/AuthClient"},{"type":"null"}],"description":"OAuth PKCE client configuration for the CLI; absent until its client configuration is complete"}},"title":"AuthProviderCatalog"},"BillingAdditionalUsageFundingType":{"type":"string","enum":["PREPAID_CREDIT","USAGE_INVOICE"],"description":"PREPAID_CREDIT spends purchased credit packs and stops when they run out. USAGE_INVOICE bills an invoice each time unbilled usage reaches invoiceIncrementCents, up to spendCapCents per month.","title":"BillingAdditionalUsageFundingType"},"BillingAdditionalUsageMutation":{"type":"object","properties":{"enabled":{"type":["boolean","null"],"description":"Turn recording of usage past the monthly caps on or off."},"funding":{"oneOf":[{"$ref":"#/components/schemas/BillingAdditionalUsageFundingType"},{"type":"null"}]},"invoiceIncrementCents":{"type":["integer","null"],"format":"int64","description":"Unbilled cents that trigger a USAGE_INVOICE invoice; one of the plan catalog's invoiceIncrementCents."},"spendCapCents":{"type":["integer","null"],"format":"int64","description":"Monthly spend cap in cents; required for USAGE_INVOICE."}},"description":"Merge patch of the additional-usage settings. Enabling requires funding; USAGE_INVOICE also requires spendCapCents and invoiceIncrementCents.","title":"BillingAdditionalUsageMutation"},"BillingAdditionalUsageType":{"type":"string","description":"One metered allowance a paid subscriber may use past its included cap.","title":"BillingAdditionalUsageType"},"BillingAdditionalUsageMeter":{"type":"object","properties":{"amountCents":{"type":"number","format":"double","description":"Price of those units in cents."},"quantity":{"type":"integer"},"type":{"$ref":"#/components/schemas/BillingAdditionalUsageType"}},"required":["amountCents","quantity","type"],"description":"One meter's additional usage this UTC month.","title":"BillingAdditionalUsageMeter"},"BillingAdditionalUsage":{"type":"object","properties":{"availableCreditCents":{"type":"number","format":"double","description":"Spendable prepaid credit after pending usage and invoice-line rounding reserves, in cents."},"blocked":{"type":"boolean","description":"True while a failed threshold invoice blocks additional usage; paying it in Billing Portal clears the block."},"enabled":{"type":"boolean","description":"Whether usage past the monthly caps is recorded and billed."},"funding":{"oneOf":[{"$ref":"#/components/schemas/BillingAdditionalUsageFundingType"},{"type":"null"}]},"invoiceIncrementCents":{"type":["integer","null"],"format":"int64","description":"USAGE_INVOICE bills an invoice once unbilled usage reaches this many cents; the invoice can exceed it by the usage recorded while it was being created."},"meter":{"type":"array","items":{"$ref":"#/components/schemas/BillingAdditionalUsageMeter"}},"resetAt":{"type":"string","format":"date-time","description":"When spentCents returns to zero: the next UTC month."},"spendCapCents":{"type":["integer","null"],"format":"int64","description":"Monthly spend cap in cents. Required for USAGE_INVOICE; absent for PREPAID_CREDIT means only the prepaid credit bounds usage."},"spentCents":{"type":"number","format":"double","description":"Additional usage priced this UTC month, in cents."},"unbilledCents":{"type":"number","format":"double","description":"Priced usage not yet paid by credit or placed on an invoice, in cents; the next threshold or period invoice bills it."}},"required":["availableCreditCents","blocked","enabled","meter","resetAt","spentCents","unbilledCents"],"description":"Opt-in metered usage past the monthly allowance: settings, spend this UTC month, prepaid credit, and unbilled usage.","title":"BillingAdditionalUsage"},"BillingPlanType":{"type":"string","description":"Canonical paid billing plan offered by aVenture.","title":"BillingPlanType"},"BillingCheckoutUiMode":{"type":"string","enum":["HOSTED_PAGE","ELEMENTS"],"description":"HOSTED_PAGE redirects the browser to Stripe's page at url. ELEMENTS renders the Payment Element in the caller's page with Stripe.js initCheckout using clientSecret and publishableKey, then confirms there.","title":"BillingCheckoutUiMode"},"BillingCheckoutMutation":{"type":"object","properties":{"plan":{"$ref":"#/components/schemas/BillingPlanType","description":"AI Plus or AI Pro plan to start through Checkout"},"uiMode":{"$ref":"#/components/schemas/BillingCheckoutUiMode","description":"How the caller presents Checkout; HOSTED_PAGE when omitted"}},"required":["plan"],"description":"Caller-selected plan and Checkout presentation for server-owned Checkout creation.","title":"BillingCheckoutMutation"},"BillingCheckout":{"type":"object","properties":{"clientSecret":{"type":["string","null"],"description":"Checkout Session client secret for Stripe.js initCheckout; set for ELEMENTS"},"expiresAt":{"type":"string","format":"date-time","description":"When the Checkout Session stops accepting payment"},"plan":{"$ref":"#/components/schemas/BillingPlanType"},"publishableKey":{"type":["string","null"],"description":"Stripe publishable key that loads Stripe.js; set for ELEMENTS"},"url":{"type":["string","null"],"format":"uri","description":"Hosted Checkout page to open in a browser; set for HOSTED_PAGE"}},"required":["expiresAt","plan"],"description":"Checkout Session destination or client secret and expiry without provider identifiers.","title":"BillingCheckout"},"BillingCreditPackType":{"type":"string","enum":["USD_25","USD_50","USD_100","USD_250"],"description":"Prepaid additional-usage credit pack.","title":"BillingCreditPackType"},"BillingCreditPurchaseMutation":{"type":"object","properties":{"pack":{"$ref":"#/components/schemas/BillingCreditPackType","description":"Credit pack to buy; its amount becomes prepaid credit."}},"required":["pack"],"description":"Prepaid credit pack to buy through hosted Checkout.","title":"BillingCreditPurchaseMutation"},"BillingCreditPurchase":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"id":{"type":["string","null"],"format":"uuid"},"pack":{"$ref":"#/components/schemas/BillingCreditPackType"},"url":{"type":"string","format":"uri"}},"required":["expiresAt","pack","url"],"description":"Hosted Checkout destination and expiry for a prepaid credit pack.","title":"BillingCreditPurchase"},"BillingCreditPurchaseConfirmation":{"type":"object","properties":{"amountCents":{"type":"integer","format":"int64"},"closedAt":{"type":["string","null"],"format":"date-time"},"grantedAt":{"type":["string","null"],"format":"date-time"},"id":{"type":"string","format":"uuid"}},"required":["amountCents","id"],"description":"One account-owned purchase's confirmed credit grant or checkout closure.","title":"BillingCreditPurchaseConfirmation"},"BillingPlanChangeMutation":{"type":"object","properties":{"plan":{"$ref":"#/components/schemas/BillingPlanType","description":"AI Plus or AI Pro plan to move to; the current plan cancels a scheduled change"},"prorationDate":{"type":["integer","null"],"format":"int64","description":"Unix epoch-second timestamp from an upgrade preview that pins its prorated amount on confirmation; omit it when no upgrade preview applies"}},"required":["plan"],"description":"Caller-selected plan for changing a continuing AI Plus or AI Pro subscription.","title":"BillingPlanChangeMutation"},"BillingPaymentMethod":{"type":"object","properties":{"brand":{"type":"string","description":"Card brand as Stripe reports it"},"expiryMonth":{"type":"integer","description":"Expiry month, 1 through 12"},"expiryYear":{"type":"integer","description":"Four-digit expiry year"},"last4":{"type":"string","description":"Last four digits of the card number"}},"required":["brand","expiryMonth","expiryYear","last4"],"description":"Card on file that pays the subscription.","title":"BillingPaymentMethod"},"BillingRecurringPrice":{"type":"object","properties":{"cadence":{"type":"string","description":"ISO 8601 billing period."},"currency":{"type":"string","description":"ISO 4217 currency code."},"unitAmount":{"type":"integer","format":"int64","description":"Recurring charge in the currency's minor unit, before discounts"}},"required":["cadence","currency","unitAmount"],"title":"BillingRecurringPrice"},"BillingPlanChangePreview":{"type":"object","properties":{"amountDue":{"type":"integer","format":"int64","description":"Amount charged on confirmation in the currency's minor unit, after credit for unused time; 0 when the change waits for the period end"},"currency":{"type":"string","description":"ISO 4217 currency code."},"effectiveAt":{"type":"string","format":"date-time","description":"When the plan would take effect: now, or the current period end"},"paymentMethod":{"oneOf":[{"$ref":"#/components/schemas/BillingPaymentMethod"},{"type":"null"}],"description":"Card Stripe charges; absent when no card is on file"},"prorationDate":{"type":["integer","null"],"format":"int64","description":"Unix epoch-second timestamp to send on upgrade confirmation so Stripe charges this previewed proration; absent when the change does not prorate now"},"recurringPrice":{"$ref":"#/components/schemas/BillingRecurringPrice","description":"Recurring charge after the change"}},"required":["amountDue","currency","effectiveAt","recurringPrice"],"description":"Preview of POST /v1/billing/plan-changes for the same plan: the amount charged on confirmation, when the plan takes effect, the renewal price after it, and the card that pays.","title":"BillingPlanChangePreview"},"BillingPlanChange":{"type":"object","properties":{"effectiveAt":{"type":"string","format":"date-time","description":"When the plan takes effect: now, or the current period end"},"paymentClientSecret":{"type":["string","null"],"description":"PaymentIntent client secret of the same pending invoice, for Stripe.js to complete authentication or payment in the page; set exactly when paymentUrl is."},"paymentUrl":{"type":["string","null"],"format":"uri","description":"Hosted invoice to pay when the upgrade's prorated charge needs the customer; the upgrade applies only after it is paid. Absent when no payment is pending."},"plan":{"$ref":"#/components/schemas/BillingPlanType","description":"Plan the subscription moves to"},"publishableKey":{"type":["string","null"],"description":"Stripe publishable key for Stripe.js; set with paymentClientSecret"}},"required":["effectiveAt","plan"],"description":"Plan change outcome: an upgrade applies now with a prorated invoice, a downgrade waits for the current period end.","title":"BillingPlanChange"},"BillingCatalogAdditionalUsage":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/BillingAdditionalUsageType"},"unitAmount":{"type":"number","format":"double","description":"US cents per unit; may be fractional, such as 2.5."}},"required":["type","unitAmount"],"description":"Price of one unit of usage past a paid tier's monthly cap.","title":"BillingCatalogAdditionalUsage"},"BillingCatalogCreditPack":{"type":"object","properties":{"amountCents":{"type":"integer","format":"int64","description":"Credit granted and web price charged, in US cents."},"appStoreProductId":{"type":["string","null"],"description":"Consumable App Store product id for this credit pack; absent when it sells only on the web. StoreKit supplies the localized purchase price."},"pack":{"$ref":"#/components/schemas/BillingCreditPackType"}},"required":["amountCents","pack"],"description":"One prepaid credit pack.","title":"BillingCatalogCreditPack"},"BillingTierType":{"type":"string","description":"Subscription tier that sets an account's monthly caps and included features.","title":"BillingTierType"},"BillingCatalogPlan":{"type":"object","properties":{"appStoreProductId":{"type":["string","null"],"description":"App Store product id that sells this plan in the iOS and Mac apps; absent when the plan sells only on the web."},"cadence":{"type":"string","description":"ISO 8601 billing period."},"currency":{"type":"string","description":"ISO 4217 currency code."},"displayName":{"type":"string"},"freeTrialDays":{"type":["integer","null"],"description":"Free trial duration in days for a new Stripe Checkout on the Customer's first transaction; absent when this plan has no free trial. Payment details are required; the plan automatically renews at unitAmount per cadence afterward. Existing subscription changes receive no trial. App Store eligibility and offers come from StoreKit separately."},"introductoryAmount":{"type":["integer","null"],"format":"int64","description":"First invoice amount in currency minor units (USD cents) when an automatic, one-time Checkout offer is available; absent otherwise. Renewals use unitAmount."},"plan":{"$ref":"#/components/schemas/BillingPlanType"},"tier":{"$ref":"#/components/schemas/BillingTierType"},"unitAmount":{"type":"integer","format":"int64","description":"Price per cadence in currency minor units, not major units: USD cents (4900 means USD 49.00)."}},"required":["cadence","currency","displayName","plan","tier","unitAmount"],"description":"One Checkout plan and its recurring price.","title":"BillingCatalogPlan"},"BillingCatalogAllowance":{"type":"object","properties":{"limit":{"type":["integer","null"],"description":"Monthly cap; 0 withholds the allowance and absent means uncapped."},"type":{"$ref":"#/components/schemas/ResearchAllowanceType"}},"required":["type"],"description":"A tier's monthly cap for one allowance.","title":"BillingCatalogAllowance"},"BillingCatalogTier":{"type":"object","properties":{"aiCreditLimit":{"type":["integer","null"],"description":"Researchly AI credits per Researchly billing period; 0 withholds them and absent means uncapped."},"allowance":{"type":"array","items":{"$ref":"#/components/schemas/BillingCatalogAllowance"}},"description":{"type":"string","description":"Who the tier is for, in one or two sentences; it states no caps or prices, which allowance and plan carry."},"displayName":{"type":"string"},"lookupDailyLimit":{"type":["integer","null"],"description":"Name lookups per UTC day without a paid plan; past it a lookup answers 402 subscription_required until the next UTC day. Absent on a paid tier, which has no daily lookup gate."},"searchDailyLimit":{"type":["integer","null"],"description":"Searches per UTC day without a paid plan: plain-English company, people, and federated search, one per request; link search always needs a paid plan. Past it a search answers 402 subscription_required until the next UTC day. Absent on a paid tier, which has no daily search gate."},"tier":{"$ref":"#/components/schemas/BillingTierType"}},"required":["allowance","description","displayName","tier"],"description":"One subscription tier, its monthly caps, and its free daily allowances.","title":"BillingCatalogTier"},"BillingCatalog":{"type":"object","properties":{"additionalUsage":{"type":"array","items":{"$ref":"#/components/schemas/BillingCatalogAdditionalUsage"}},"creditPack":{"type":"array","items":{"$ref":"#/components/schemas/BillingCatalogCreditPack"}},"invoiceIncrementCents":{"type":"array","items":{"type":"integer","format":"int64"},"description":"Invoice increments a USAGE_INVOICE subscriber may choose, in cents."},"plan":{"type":"array","items":{"$ref":"#/components/schemas/BillingCatalogPlan"}},"tier":{"type":"array","items":{"$ref":"#/components/schemas/BillingCatalogTier"}}},"required":["additionalUsage","creditPack","invoiceIncrementCents","plan","tier"],"description":"Every self-serve subscription tier with its monthly allowance caps and free daily allowances, every plan Checkout sells, and the prices of eligible usage past those caps. The Unlimited tier is not sold through Checkout and is omitted.","title":"BillingCatalog"},"BillingPortalMutationFlow":{"type":"string","enum":["PAYMENT_METHOD_UPDATE"],"description":"PAYMENT_METHOD_UPDATE opens straight to adding or replacing the card and returns to returnUrl when done, or subscription settings when returnUrl is omitted. Omit flow to open the portal home. Plan changes use POST /v1/billing/plan-changes and cancellation uses PATCH /v1/billing/subscription.","title":"BillingPortalMutationFlow"},"BillingPortalMutation":{"type":"object","properties":{"flow":{"$ref":"#/components/schemas/BillingPortalMutationFlow","description":"PAYMENT_METHOD_UPDATE opens straight to adding or replacing the card and returns to returnUrl when done, or subscription settings when returnUrl is omitted. Omit flow to open the portal home. Plan changes use POST /v1/billing/plan-changes and cancellation uses PATCH /v1/billing/subscription."},"returnUrl":{"type":["string","null"],"description":"Root-relative public-site return path, including query and fragment, for leaving the portal or completing a card update. Resolved only against the configured public-site origin. Absolute URLs, authority references, and malformed URI syntax are refused. Omit or pass null to return to /settings/subscription."}},"description":"Where the hosted Billing Portal session opens.","title":"BillingPortalMutation"},"BillingPortal":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"],"description":"Hosted Billing Portal destination without provider identifiers.","title":"BillingPortal"},"ResearchAllowanceUsage":{"type":"object","properties":{"company":{"$ref":"#/components/schemas/ResearchAllowance","description":"Research runs on company targets, new or existing"},"entityBrand":{"$ref":"#/components/schemas/ResearchAllowance","description":"Company brand summary reads (names, logos, links, tags)"},"entityView":{"$ref":"#/components/schemas/ResearchAllowance","description":"Company profile views; Essential shares included usage with personView, while paid tiers meter each separately"},"newCompany":{"$ref":"#/components/schemas/ResearchAllowance","description":"Deprecated: replaced by company, which it mirrors.","deprecated":true},"newPerson":{"$ref":"#/components/schemas/ResearchAllowance","description":"Deprecated: replaced by person, which it mirrors.","deprecated":true},"person":{"$ref":"#/components/schemas/ResearchAllowance","description":"Research runs on person-profile targets, new or existing"},"personView":{"$ref":"#/components/schemas/ResearchAllowance","description":"Person profile views; Essential reports the same shared included usage as entityView, not an additional free allowance"},"update":{"$ref":"#/components/schemas/ResearchAllowance","description":"Deprecated: replaced by company, which it mirrors.","deprecated":true},"updatePerson":{"$ref":"#/components/schemas/ResearchAllowance","description":"Deprecated: replaced by person, which it mirrors.","deprecated":true},"webSearch":{"$ref":"#/components/schemas/ResearchAllowance"}},"required":["company","entityBrand","entityView","newCompany","newPerson","person","personView","update","updatePerson","webSearch"],"title":"ResearchAllowanceUsage"},"BillingSubscriptionProvider":{"type":"string","enum":["STRIPE","APP_STORE"],"description":"Who bills the continuing paid subscription, including one past due or paused: STRIPE (managed on the web) or APP_STORE; absent without one","title":"BillingSubscriptionProvider"},"BillingSubscriptionStatus":{"type":"string","enum":["NONE","INCOMPLETE","INCOMPLETE_EXPIRED","TRIALING","ACTIVE","PAST_DUE","CANCELED","UNPAID","PAUSED"],"title":"BillingSubscriptionStatus"},"BillingSubscription":{"type":"object","properties":{"additionalUsage":{"$ref":"#/components/schemas/BillingAdditionalUsage"},"allowance":{"$ref":"#/components/schemas/ResearchAllowanceUsage","description":"Used, cap, and reset time of each monthly allowance"},"appStoreCreditPurchasable":{"type":["boolean","null"],"description":"True when an entitled eligible paid plan may buy App Store consumable research credit, independent of who bills its plan. Absent on older servers; clients must require true before offering a purchase. Retained balances remain visible but spending requires an eligible subscription."},"cancelAtPeriodEnd":{"type":"boolean","description":"True when the plan is cancelled and ends at periodEnd"},"creditPurchasable":{"type":"boolean","description":"True when POST /v1/billing/credit-purchases sells this account a prepaid credit pack; requires an entitled eligible paid plan and is false for an operator, an App Store plan, or any absent, expired or non-entitled plan (INCOMPLETE, PAST_DUE, UNPAID, or PAUSED)"},"entitled":{"type":"boolean","description":"True while the subscription grants its paid tier"},"originalStart":{"type":["string","null"],"format":"date-time","description":"Original start of the continuing paid subscription; absent when the provider did not supply it"},"pendingPlan":{"oneOf":[{"$ref":"#/components/schemas/BillingPlanType"},{"type":"null"}],"description":"Plan a scheduled change moves the subscription to at pendingPlanAt; absent when nothing is scheduled"},"pendingPlanAt":{"type":["string","null"],"format":"date-time","description":"When pendingPlan takes effect; absent when nothing is scheduled"},"periodEnd":{"type":["string","null"],"format":"date-time","description":"When the plan renews, or when access ends if cancelAtPeriodEnd"},"periodStart":{"type":["string","null"],"format":"date-time","description":"Start of the current billing period"},"plan":{"oneOf":[{"$ref":"#/components/schemas/BillingPlanType"},{"type":"null"}],"description":"Paid plan and billing cycle; absent without a paid subscription"},"provider":{"$ref":"#/components/schemas/BillingSubscriptionProvider","description":"Who bills the continuing paid subscription, including one past due or paused: STRIPE (managed on the web) or APP_STORE; absent without one"},"recurringPrice":{"oneOf":[{"$ref":"#/components/schemas/BillingRecurringPrice"},{"type":"null"}],"description":"Subscribed renewal price before discounts; absent without a known paid Price"},"status":{"$ref":"#/components/schemas/BillingSubscriptionStatus"},"tier":{"$ref":"#/components/schemas/BillingTierType","description":"Tier whose monthly allowances apply now"}},"required":["additionalUsage","allowance","cancelAtPeriodEnd","creditPurchasable","entitled","status","tier"],"description":"Current plan (Essential, AI Plus, AI Pro, or Unlimited), subscription status, and monthly usage.","title":"BillingSubscription"},"BillingSubscriptionMutation":{"type":"object","properties":{"cancelAtPeriodEnd":{"type":["boolean","null"],"description":"true ends the subscription at the current period end and drops a scheduled plan change; false resumes it and restores the plan change scheduled before the cancellation. Omit to change nothing."},"paused":{"type":["boolean","null"],"description":"false resumes a subscription Stripe paused because its trial ended without a payment method; add one with POST /v1/billing/portal-sessions first. The resumption starts a new billing period now and charges the plan to that card; a declined or authentication-held charge answers 409. true, or cancelAtPeriodEnd in the same request, is refused. Omit to change nothing."}},"description":"Merge patch of a continuing AI Plus or AI Pro subscription: cancel it at the period end or resume it, including one Stripe paused.","title":"BillingSubscriptionMutation"},"BillingDiscount":{"type":"object","properties":{"amountOff":{"type":["integer","null"],"format":"int64","description":"Fixed amount taken off in the minor unit; absent for a percentage coupon"},"discountedAmount":{"type":"integer","format":"int64","description":"Amount this discount takes off the next invoice, minor unit"},"endsAt":{"type":["string","null"],"format":"date-time","description":"When the discount stops applying; absent when it never ends"},"name":{"type":["string","null"],"description":"Coupon name shown to the customer; absent when it has none"},"percentOff":{"type":["number","null"],"format":"double","description":"Percentage taken off; absent for a fixed-amount coupon"}},"required":["discountedAmount"],"description":"A coupon applied to the next invoice.","title":"BillingDiscount"},"BillingNextCharge":{"type":"object","properties":{"amountDue":{"type":"integer","format":"int64","description":"Amount the next invoice will charge in the currency's minor unit, after discounts, credits, and usage so far; 0 when a discount covers it"},"chargeAt":{"type":"string","format":"date-time","description":"When the next invoice is raised and charged"},"currency":{"type":"string","description":"ISO 4217 currency code."},"discount":{"type":"array","items":{"$ref":"#/components/schemas/BillingDiscount"},"description":"Discounts applied to the next invoice; empty when none apply"},"totalExcludingTax":{"type":"integer","format":"int64","description":"Next invoice total in the currency's minor unit after discounts, before tax and account credit; compare it, not amountDue, with the plan's price"}},"required":["amountDue","chargeAt","currency","discount","totalExcludingTax"],"description":"Next invoice of the caller's renewing Stripe subscription as Stripe previews it, after discounts and credits.","title":"BillingNextCharge"},"BillingPaymentProfile":{"type":"object","properties":{"freeTrialEligible":{"type":"boolean","description":"Whether a new Stripe Checkout for a plan with freeTrialDays receives its free trial: the App Store does not bill the account and its Stripe Customer has no prior subscription, successful payment, or non-void invoice. An account without a Stripe Customer is eligible. This is Stripe history eligibility, not a guarantee of one trial across payment providers; plan changes are excluded. Absent on servers released before free-trial eligibility was introduced."},"introductoryOfferEligible":{"type":"boolean","description":"Whether the caller's next purchase or upgrade to a plan with an introductoryAmount is charged that amount: true when the catalog offers introductoryAmount, the App Store does not bill the account, and either it has no earlier subscription, payment, or unvoided invoice, or it pays an active subscription on a cheaper sold plan and has never redeemed the introductory discount; false otherwise"},"paymentMethod":{"oneOf":[{"$ref":"#/components/schemas/BillingPaymentMethod"},{"type":"null"}],"description":"Card that pays the continuing Stripe subscription; absent without one or when it is paid by something other than a card"}},"required":["introductoryOfferEligible"],"description":"The caller's card on file, paid introductory discount eligibility, and eligibility for a free trial on a new Stripe Checkout, read live from Stripe.","title":"BillingPaymentProfile"},"AgentSuggestion":{"type":"object","properties":{"label":{"type":"string","description":"Short button text naming the company and its news hook."},"question":{"type":"string","description":"Question sent to the research agent when the button is tapped."}},"required":["label","question"],"description":"One suggested Agent-tab question: the button label plus the question sent when tapped.","title":"AgentSuggestion"},"AgentSuggestionList":{"type":"object","properties":{"suggestion":{"type":"array","items":{"$ref":"#/components/schemas/AgentSuggestion"},"description":"Up to 12 label-and-question pairs, most recent funding first, then recent news. Empty is a normal response, not an error."}},"required":["suggestion"],"description":"Prepared suggested-question buttons for the Agent tab. Empty when no recent public funding or news records qualify.","title":"AgentSuggestionList"},"HelpScope":{"type":"string","enum":["READ","WRITE","ALL"],"description":"Operation scope a help answer may recommend: read-only, write, or all.","title":"HelpScope"},"AgentHelpQuestion":{"type":"object","properties":{"model":{"type":["string","null"],"description":"Optional supported model id for the answer. Leave the field out for the server's model; a value that is not a supported model id answers 422."},"question":{"type":"string","minLength":1,"description":"The question to answer, in natural language."},"resolve":{"type":"boolean","description":"True recommends the operation or workflow that does what the question asks, or asks a clarifying question, instead of writing an answer. It ignores model and has its own per-account limit."},"scope":{"oneOf":[{"$ref":"#/components/schemas/HelpScope"},{"type":"null"}],"description":"Optional scope restricting which operations the answer may recommend; null means all."}},"required":["question"],"description":"A plain-English question about how to use aVenture, answered with references to the operations that do it.","title":"AgentHelpQuestion"},"BillingAccessType":{"type":"string","enum":["PAID_PLAN","DAILY_ALLOWANCE"],"description":"What a caller without a paid plan gets. `PAID_PLAN`: nothing; the operation answers 402 subscription_required until the caller subscribes. `DAILY_ALLOWANCE`: a free UTC-day allowance, then 402 subscription_required until it refills.","title":"BillingAccessType"},"HelpSourceType":{"type":"string","description":"Which part of the help material a citation comes from.","title":"HelpSourceType"},"HelpCitation":{"type":"object","properties":{"billingAccess":{"oneOf":[{"$ref":"#/components/schemas/BillingAccessType"},{"type":"null"}],"description":"What a caller without a paid plan gets from the cited operation; absent when the operation needs no plan. A resolve for such a caller ranks PAID_PLAN candidates after the others."},"excerpt":{"type":"string","description":"Verbatim excerpt from the cited document supporting the answer."},"sourceId":{"type":"string","description":"Stable id within the source type: an operationId, a skill/prompt name, a completion gate id, or a research detail type targetPath."},"sourceType":{"$ref":"#/components/schemas/HelpSourceType","description":"Which part of the platform corpus this citation comes from."},"sourceVersion":{"type":["string","null"],"description":"Immutable version of the cited document when one exists (skill/prompt content version); null for catalog-derived sources."}},"required":["excerpt","sourceId","sourceType"],"description":"A single corpus document the help answer is grounded in.","title":"HelpCitation"},"HelpResolutionOutcome":{"type":"string","enum":["TASK_PLAN","OPERATION_ADVICE","CLARIFY","ABSTAIN"],"description":"Outcome of a resolve request.","title":"HelpResolutionOutcome"},"HarnessTaskInputType":{"type":"string","description":"NEWS is a public article, given by its aVenture news id; ENTITY is a target entity, identified and given by its aVenture id; TEXT is a literal value the request states; FACT is one source-bound claim to research; WRITER_BRIEF is the typed research analysis a prose writer composes from (claim ledger, positioning frame, paragraph plan).","title":"HarnessTaskInputType"},"HarnessTaskInput":{"type":"object","properties":{"allowedValue":{"type":["string","null"],"description":"Optional exact literal accepted for a TEXT input; when present, the run and its mutation guard require this value instead of accepting an arbitrary string."},"description":{"type":"string","description":"What the value is, written for the caller that supplies it."},"key":{"type":"string","description":"Input key, unique within its task."},"required":{"type":"boolean","default":true,"description":"Whether this input must be bound before admission. Defaults to true; an omitted optional input stays unbound and is never inferred from the prompt."},"type":{"$ref":"#/components/schemas/HarnessTaskInputType","description":"How the value is bound."}},"required":["description","key","type"],"description":"One typed task input, required unless explicitly marked optional.","title":"HarnessTaskInput"},"HarnessTaskStep":{"type":"object","properties":{"instruction":{"type":"string","description":"What this step does, written for the agent that runs it."},"operationId":{"type":"string","description":"OpenAPI operationId this step calls; it must be in the task's operation list."},"planTaskKey":{"type":"array","items":{"type":"string"},"description":"Agent-task keys whose plans this step follows instead of restating their steps: the task then owns each named plan's steps, so a write one of them commits counts for this task too. Each must name another planned task; a key may appear once per task and delegations must not loop."},"publishesAnalysis":{"type":"boolean","description":"Whether this step must supply an analysis section when its task publishes an article analysis. Optional lens steps already require a section when accepted."},"stepKey":{"type":"string","description":"Step key, unique within its task."},"title":{"type":["string","null"],"description":"Display title for this step, when the catalog supplies one."}},"required":["instruction","operationId"],"description":"One ordered task step: its key, instruction, the operation that runs it, and the delegated plans it follows.","title":"HarnessTaskStep"},"HarnessTaskWriteGuidance":{"type":"object","properties":{"body":{"type":"string","description":"The request body keys, the key that carries the prose, and a minimal JSON example."},"expectation":{"type":"string","description":"The one sentence the prose aims for."},"method":{"type":"array","items":{"type":"string"},"description":"Help sections that teach this prose, each with the command that retrieves it."},"override":{"type":"string","description":"The override field, the problems it may waive, and its terms."},"reject":{"type":"array","items":{"type":"string"},"description":"Each problem that rejects this prose: what fails it and the fix."},"typeCatalog":{"type":"string","description":"The read operation that returns per-type hints for this write; call it first."}},"required":["body","expectation","method","override","reject","typeCatalog"],"description":"The expectation, body, type hints, rejections, override, and method for one judged prose write.","title":"HarnessTaskWriteGuidance"},"HarnessTaskPlanStep":{"type":"object","properties":{"cliCommand":{"type":"string","description":"CLI command path that runs the step's operation; the caller supplies required flags."},"mcpTool":{"type":["string","null"],"description":"MCP tool that runs the step's operation; null for CLI-only operations. Supply arguments matching the tool's schema."},"step":{"$ref":"#/components/schemas/HarnessTaskStep","description":"The stored step."},"title":{"type":["string","null"],"description":"Display title supplied by the stored step."},"writeGuidance":{"oneOf":[{"$ref":"#/components/schemas/HarnessTaskWriteGuidance"},{"type":"null"}],"description":"What the server expects of the prose this step writes, derived from the operation's judged prose type when the plan is read; null when the step writes no judged prose."}},"required":["cliCommand","step"],"description":"One task step with the CLI command and MCP tool that run its operation.","title":"HarnessTaskPlanStep"},"HarnessTaskPlan":{"type":"object","properties":{"catalogRevision":{"type":"integer","description":"Stored catalog revision this plan was read from."},"gateId":{"type":"array","items":{"type":"string"},"description":"Ids of the completion checks this task must pass, as listed in the completion check catalog."},"input":{"type":"array","items":{"$ref":"#/components/schemas/HarnessTaskInput"},"description":"Typed task inputs; required inputs must be bound before it runs."},"step":{"type":"array","items":{"$ref":"#/components/schemas/HarnessTaskPlanStep"},"description":"Steps in run order; an empty list means this catalog task is unplanned."},"taskKey":{"type":"string","description":"Agent-task catalog key."}},"required":["input","step"],"description":"One catalog task's typed inputs and ordered steps with derived CLI commands and MCP tools, read from the stated catalog revision.","title":"HarnessTaskPlan"},"HelpResolution":{"type":"object","properties":{"candidate":{"type":"array","items":{"$ref":"#/components/schemas/HelpCitation"},"description":"Candidate operations best first; the options to choose between when the outcome is CLARIFY."},"operationId":{"type":["string","null"],"description":"The advised operation for OPERATION_ADVICE, or the write whose missing inputs a CLARIFY asks for."},"outcome":{"$ref":"#/components/schemas/HelpResolutionOutcome","description":"Which of the mutually exclusive resolve outcomes was reached."},"probability":{"type":["number","null"],"format":"double","description":"Confidence, 0 to 1, in the chosen option (an operation, a catalog task, several, or none). A low-confidence choice becomes CLARIFY, listing the candidates."},"taskKey":{"type":["string","null"],"description":"The chosen catalog task for TASK_PLAN, or the task leading a CLARIFY."},"taskPlan":{"oneOf":[{"$ref":"#/components/schemas/HarnessTaskPlan"},{"type":"null"}],"description":"The chosen task's plan for TASK_PLAN when the caller may read catalog task plans; absent otherwise."}},"required":["candidate","outcome"],"description":"Resolution of a request to a catalog task or an operation, clarification between candidates, or an abstention.","title":"HelpResolution"},"AgentHelp":{"type":"object","properties":{"answer":{"type":"string","description":"Answer drawn only from the cited corpus; abstains when unsupported."},"citation":{"type":"array","items":{"$ref":"#/components/schemas/HelpCitation"},"description":"Corpus evidence backing the answer; empty when the model abstains."},"confidence":{"$ref":"#/components/schemas/Confidence","description":"Confidence the answer is fully supported by the cited corpus. LOW signals an abstention."},"resolution":{"oneOf":[{"$ref":"#/components/schemas/HelpResolution"},{"type":"null"}],"description":"The task or operation resolution when the question asked to resolve; absent for a generated answer."}},"required":["answer","citation","confidence"],"description":"Help answer with citations to the operations it draws on. Unsupported questions abstain (LOW confidence) rather than guess.","title":"AgentHelp"},"EnrichmentInstruction":{"type":"object","properties":{"record":{"$ref":"#/components/schemas/EntityPersonOwner","description":"Selected company or person these instructions apply to"},"userPrompt":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"Additional instructions for this record only; shared and additional instructions together, separated by a blank line, must fit the run's userPrompt limit"}},"required":["record"],"description":"Instructions appended to the shared userPrompt for exactly one selected record","title":"EnrichmentInstruction"},"HarnessRunLane":{"type":"string","description":"Queue priority of a run: live (search and lookup) and interactive (one client run) share the interactive queue; bulk (client batch) and background (system backlog) share the background queue","title":"HarnessRunLane"},"EnrichmentMode":{"type":"string","enum":["COMPREHENSIVE","INDIVIDUAL"],"description":"Whether the run performs comprehensive enrichment or only selected tasks","title":"EnrichmentMode"},"EnrichmentBatch":{"type":"object","properties":{"entityId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Entity ids (UUIDs) to enrich, filed in order before any person"},"instruction":{"type":"array","items":{"$ref":"#/components/schemas/EnrichmentInstruction"},"description":"Additional instructions for selected records, one entry per owner. Each entry appends to the shared userPrompt for that owner only. Duplicate or unselected owners and combined prompts longer than the run limit are rejected before any run is filed. Omit for identical instructions on every run."},"lane":{"oneOf":[{"$ref":"#/components/schemas/HarnessRunLane"},{"type":"null"}],"description":"Origin priority: live for lookup, interactive for an individual request, or bulk for a client batch (the default when omitted). Background is reserved for system backlog"},"mode":{"$ref":"#/components/schemas/EnrichmentMode","description":"COMPREHENSIVE (the default) researches each whole profile; INDIVIDUAL runs only the tasks named in taskPresetKey"},"model":{"type":["string","null"],"description":"Model id for each run's lead agent; omit to use aVenture's default model"},"newsId":{"type":"array","items":{"type":"integer"},"description":"News article ids. The server identifies every company and person each article names, as POST /v1/lookup/mentions does with sourceNewsId, adds the article's linked companies and people, and files one enrichment per distinct record."},"personId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Person ids (UUIDs) to enrich, filed in order after every entity"},"taskPresetKey":{"type":["array","null"],"items":{"type":"string"},"description":"Task preset keys that scope or emphasize every run; at least one is required when mode is INDIVIDUAL, and an unknown key is a 400"},"userPrompt":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"Plain-language instruction for every run, such as which facts or sources to check first"}},"description":"Existing records to enrich in one call, with shared run options and optional additional instructions for individual selected records","title":"EnrichmentBatch"},"EnrichmentRefusalType":{"type":"string","description":"Why a batch enrichment filed no run: NOT_FOUND for an unknown record; ALLOWANCE_EXHAUSTED when the record's company or person research allowance is spent and additional usage is off or at its spend cap or prepaid credit; AMBIGUOUS when the record's profile matches more than one current record; SUBSCRIPTION_REQUIRED when the subscription stopped covering research mid-batch, such as additional usage while past due. Readers accept members they do not yet know","title":"EnrichmentRefusalType"},"HarnessChassis":{"type":"string","enum":["claude-agent-sdk","pi-agent-sdk"],"description":"Agent framework a research run executes on: the Claude Agent SDK or the Pi agent SDK","title":"HarnessChassis"},"HarnessRunEnvironment":{"type":"string","enum":["unassigned","development","staging","production"],"description":"Owning API environment","title":"HarnessRunEnvironment"},"HarnessRunExecution":{"type":"string","description":"Executor of the accepted research work; independent of its requested scope","title":"HarnessRunExecution"},"HarnessRunFollowUpAdmission":{"type":"string","enum":["UNTRACKED","PENDING","SETTLED","REJECTED"],"description":"Whether the follow-up runs requested when this run last finished have all been filed","title":"HarnessRunFollowUpAdmission"},"HarnessLlmApi":{"type":"string","enum":["anthropic","openai-chat","openai-responses"],"description":"Language-model API format a run's calls use: Anthropic Messages, OpenAI Chat Completions, or OpenAI Responses","title":"HarnessLlmApi"},"HarnessResearchOutcome":{"type":"string","description":"How unsuccessful research ended: PARTIAL (some of it finished) or BLOCKED","title":"HarnessResearchOutcome"},"HarnessRunStatus":{"type":"string","enum":["queued","running","completed","failed","stopped"],"description":"Research run lifecycle state","title":"HarnessRunStatus"},"HarnessRunTerminalDecision":{"type":"object","properties":{"engineId":{"type":["string","null"],"description":"Lease owner at the terminal transition"},"finishedAt":{"type":["string","null"],"format":"date-time","description":"Finish time accepted by the terminal transition"},"iteration":{"type":"integer","description":"Iteration accepted by the terminal transition"},"lockedAt":{"type":["string","null"],"format":"date-time","description":"Lease generation at the terminal transition"},"requesterRemoved":{"type":["boolean","null"],"description":"Requester deletion verified for this terminal completion"},"sequence":{"type":["integer","null"],"description":"Server event sequence on run reads; the event stream supplies it separately"},"status":{"$ref":"#/components/schemas/HarnessRunStatus","description":"Admitted terminal status"},"suppressionEntityId":{"type":["string","null"],"format":"uuid","description":"Accepted entity whose suppression admitted this finish"},"suppressionProvenanceEventId":{"type":["integer","null"],"format":"int64","description":"Canonical provenance event that admitted suppression"}},"required":["iteration","status"],"description":"Server admission for one terminal transition","title":"HarnessRunTerminalDecision"},"HarnessRunType":{"type":"string","enum":["ENRICHMENT","TASK"],"description":"Research run kind: a caller-filed research request or a narrower scheduled run","title":"HarnessRunType"},"HarnessRun":{"type":"object","properties":{"attempt":{"type":"integer","description":"Retry attempt counter"},"callerCanFollowRun":{"type":["boolean","null"],"description":"Whether you may read this run's details and activity"},"chassis":{"oneOf":[{"$ref":"#/components/schemas/HarnessChassis"},{"type":"null"}],"description":"Agent framework this run executes on"},"chassisRouted":{"type":"boolean","description":"True when aVenture, not the caller, chose `chassis`"},"createdAt":{"type":"string","format":"date-time","description":"Creation timestamp"},"entitySlug":{"type":["string","null"],"description":"Slug of the profile the run produced"},"environment":{"$ref":"#/components/schemas/HarnessRunEnvironment","description":"API environment"},"error":{"type":["string","null"],"description":"Why the run failed; null unless failed"},"execution":{"oneOf":[{"$ref":"#/components/schemas/HarnessRunExecution"},{"type":"null"}],"description":"Executor of this research attempt; absent on older APIs"},"failureClass":{"type":["string","null"],"description":"Typed terminal-failure class from the harness retry classifier (e.g. runtime_cap, escalated, provider_capacity, context_overflow); null unless failed"},"finishedAt":{"type":["string","null"],"format":"date-time","description":"Run completion timestamp"},"firstStart":{"type":["boolean","null"],"description":"Set only in the response that starts the run: true the first time it starts, false when a worker restarts it; null in every other response"},"followUpAdmission":{"$ref":"#/components/schemas/HarnessRunFollowUpAdmission","description":"Whether follow-up runs from this run's latest finish have all been filed; runs finished by older engine versions stay PENDING"},"hasSourceDocument":{"type":"boolean","description":"Whether this run consumes an immutable private source document"},"id":{"type":"string","format":"uuid","description":"Run id"},"iteration":{"type":"integer","description":"Current loop iteration"},"lane":{"$ref":"#/components/schemas/HarnessRunLane","description":"Admission class (interactive or background) on client-facing responses; Prefer: run-lane-origin returns the actual queue lane. Engine lifecycle responses always return the actual lane."},"latestStatus":{"type":["string","null"],"description":"Latest research-loop progress as a free-form JSON string"},"llmApi":{"oneOf":[{"$ref":"#/components/schemas/HarnessLlmApi"},{"type":"null"}],"description":"Language-model API format this run's calls use"},"maxIteration":{"type":"integer","description":"Loop iteration cap"},"maxScoutConcurrent":{"type":"integer","description":"How many read-only research helpers the run may use at once"},"mode":{"$ref":"#/components/schemas/EnrichmentMode","description":"Enrichment breadth selected for this run"},"model":{"type":["string","null"],"description":"Engine model; absent for direct execution"},"modelRouted":{"type":["boolean","null"],"description":"True when the requester left `model` to the auto router, which picks it again each time the run leaves the queue; null on engine lease responses"},"nextAttemptAt":{"type":["string","null"],"format":"date-time","description":"Earliest re-claim time when waiting on retry backoff"},"researchAllowanceType":{"oneOf":[{"$ref":"#/components/schemas/ResearchAllowanceType"},{"type":"null"}],"description":"Research allowance this run reserved when it was filed: COMPANY or PERSON; null for a run filed without one"},"researchOutcome":{"oneOf":[{"$ref":"#/components/schemas/HarnessResearchOutcome"},{"type":"null"}],"description":"How unsuccessful research ended: PARTIAL or BLOCKED, from its recorded failure class; null for other outcomes"},"resumeSafeUntil":{"type":["string","null"],"format":"date-time","description":"Instant past which a warm resume is no longer guaranteed; the harness writes it with session_resume from the model's cache window. Warm-resumable now iff failed/stopped and this is in the future. Null when there is no resume window."},"startedAt":{"type":["string","null"],"format":"date-time","description":"Run start timestamp"},"status":{"$ref":"#/components/schemas/HarnessRunStatus","description":"Current lifecycle state"},"subagentModel":{"type":["string","null"],"description":"Model id of the run's read-only research and check helpers"},"subagentModelRouted":{"type":["boolean","null"],"description":"True when the requester left `subagentModel` to the auto router, which picks it again each time the run leaves the queue; null on engine lease responses"},"taskPresetKey":{"type":["array","null"],"items":{"type":"string"},"description":"Research presets filed with the run"},"terminalDecision":{"oneOf":[{"$ref":"#/components/schemas/HarnessRunTerminalDecision"},{"type":"null"}],"description":"Newest server terminal decision; mutable progress cannot replace it"},"type":{"$ref":"#/components/schemas/HarnessRunType","description":"Run kind: ENRICHMENT for a research request a caller filed, TASK for a narrower run aVenture scheduled"},"updatedAt":{"type":"string","format":"date-time","description":"Last update timestamp"},"url":{"type":"string","description":"URL of the company, Product, Service, or person under research"},"userPrompt":{"type":["string","null"],"description":"Optional engine instructions. POST /v1/research/runs filing responses acknowledge only the submitted note; subsequent requester list and detail reads omit the combined instructions. Privileged and engine reads retain the full brief."}},"required":["attempt","chassisRouted","createdAt","environment","hasSourceDocument","id","iteration","lane","maxIteration","maxScoutConcurrent","mode","status","type","updatedAt","url"],"description":"One research run on a company, Product, Service, or person","title":"HarnessRun"},"Enrichment":{"type":"object","properties":{"record":{"$ref":"#/components/schemas/EntityPersonOwner","description":"The requested entity or person"},"refusal":{"oneOf":[{"$ref":"#/components/schemas/EnrichmentRefusalType"},{"type":"null"}],"description":"Why no run was filed; absent when run is set"},"run":{"oneOf":[{"$ref":"#/components/schemas/HarnessRun"},{"type":"null"}],"description":"The queued or reused run; absent when refusal is set"}},"required":["record"],"description":"One requested record's batch enrichment outcome: the filed run or the refusal","title":"Enrichment"},"WriterClaimSurface":{"type":"string","description":"Where a sourced claim appears in the written output.","title":"WriterClaimSurface"},"ResearchFinding":{"type":"object","properties":{"end":{"type":["integer","null"],"description":"Exclusive UTF-16 end offset, as an entity folio fact's end."},"gateId":{"type":["string","null"],"description":"Profile field the fact fills, when known; omit it and the run picks the field the fact belongs to."},"quote":{"type":"string","description":"The exact text on sourceUrl that states the fact, copied verbatim; a fragment short enough to appear on any page is refused. Send either quote or the complete sourceDocumentId, start, end span, never both."},"sourceDocumentId":{"type":["string","null"],"format":"uuid","description":"Writer briefs only: the stored capture a span cites instead of a retyped quote, such as an entity folio fact's sourceDocumentId; the server copies the quote from [start, end) of that capture's evidence text. Requester findings require quote."},"sourceUrl":{"type":"string","description":"Absolute http or https URL of the page that supports the fact; aVenture pages are refused. Direct writes require a resolved sourceDetail page and may supplement it with eligible pages associated with the subject or explicitly bound through sourceDocumentId on a pending full create; harness-run writes use the sourceDetail page or eligible pages read through aVenture by the authorizing run. Each quote must occur in its page's stored text."},"start":{"type":["integer","null"],"description":"Inclusive UTF-16 start offset, as an entity folio fact's start."},"statement":{"type":"string","description":"The fact to write, in plain words. May be omitted for a complete sourceDocumentId, start, end span; the server uses that span's exact stored text as the statement."},"writerSurface":{"oneOf":[{"$ref":"#/components/schemas/WriterClaimSurface"},{"type":"null"}],"description":"Surface this sourced claim may enter: durable entity text, point-in-time research snippets, or both. New writer briefs must declare it."}},"required":["sourceUrl"],"description":"One fact you researched, with the page and exact text that support it. The run checks the quote against the page before it writes the fact.","title":"ResearchFinding"},"EnrichmentPrompt":{"type":"object","properties":{"finding":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ResearchFinding"},"description":"Facts you already read verbatim on an external source page for an entity, each with statement, sourceUrl, and exact quote; omit taskPresetKey to default to apply-cited-findings"},"userPrompt":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"Plain-language instruction for this run, such as an observed update and its source URL (newsUrlOriginal or web URL) or which facts to check first"}},"description":"Optional steering prompt or cited findings for one company, product, or service enrichment run","title":"EnrichmentPrompt"},"PersonEnrichmentPrompt":{"type":"object","properties":{"userPrompt":{"type":["string","null"],"minLength":0,"maxLength":2000,"description":"Plain-language instruction for this run, such as an observed update and its source URL (newsUrlOriginal or web URL) or which facts to check first"}},"description":"Optional steering prompt for one person enrichment run","title":"PersonEnrichmentPrompt"},"ResearchRunView":{"type":"string","enum":["FULL","SUMMARY"],"description":"Shape of a research run listing: FULL pages full run rows; SUMMARY returns compact rows for polling","title":"ResearchRunView"},"PageHarnessRun":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/HarnessRun"}},"empty":{"type":"boolean"},"first":{"type":"boolean"},"last":{"type":"boolean"},"number":{"type":"integer"},"numberOfElements":{"type":"integer"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer"},"sort":{"$ref":"#/components/schemas/SortObject"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer"}},"title":"PageHarnessRun"},"WriterJudgment":{"type":"object","properties":{"claim":{"type":"array","items":{"type":"integer"},"description":"Evidence claim numbers supporting the judgment."},"statement":{"type":"string","description":"The judgment in plain words."}},"required":["claim","statement"],"description":"One sourced research judgment.","title":"WriterJudgment"},"WriterChangeSignal":{"type":"object","properties":{"claim":{"type":"array","items":{"type":"integer"},"description":"Evidence claim numbers supporting the signal."},"statement":{"type":"string","description":"Observable signal that would change the view."}},"required":["claim","statement"],"description":"Evidence that would change the supplied judgment.","title":"WriterChangeSignal"},"WriterGapReason":{"type":"string","description":"Reason a research gap remains unresolved.","title":"WriterGapReason"},"WriterGap":{"type":"object","properties":{"claim":{"type":"array","items":{"type":"integer"},"description":"Evidence claim numbers supporting the gap; cite at least one for a CONFLICTING gap, or use an empty list when nothing was found."},"reason":{"$ref":"#/components/schemas/WriterGapReason","description":"Why the gap is present."},"statement":{"type":"string","description":"What is missing or unresolved."}},"required":["claim","reason","statement"],"description":"A known evidence gap or conflict.","title":"WriterGap"},"WriterScope":{"type":"object","properties":{"boundary":{"type":"string","description":"Market, company, or question boundary."},"geography":{"type":["string","null"],"description":"Geography when the evidence is geographically bounded."},"period":{"type":["string","null"],"description":"Research period when the evidence is time-bounded."}},"required":["boundary"],"description":"Research boundary used by a writer brief.","title":"WriterScope"},"EntityWriterMetaAnalysis":{"type":"object","properties":{"answer":{"$ref":"#/components/schemas/WriterJudgment","description":"Overall answer to the research question."},"asOfDate":{"type":"string","format":"date","description":"Date through which the judgment is current."},"changeSignal":{"type":"array","items":{"$ref":"#/components/schemas/WriterChangeSignal"},"description":"Evidence that would change the supplied view."},"gap":{"type":"array","items":{"$ref":"#/components/schemas/WriterGap"},"description":"Known gaps or conflicts that must not become invented facts."},"question":{"type":"string","description":"Question the research answered."},"scope":{"$ref":"#/components/schemas/WriterScope","description":"Boundary and period used by the research."}},"required":["answer","asOfDate","changeSignal","gap","question","scope"],"description":"Entity-text research judgment without framework sections.","title":"EntityWriterMetaAnalysis"},"EntityWriterParagraphAnalysis":{"type":"object","properties":{"answer":{"type":"boolean","description":"Whether this paragraph states the overall research answer; true on the first paragraph only."}},"required":["answer"],"description":"Overall research answer assignment for entity text.","title":"EntityWriterParagraphAnalysis"},"WriterPositioningElement":{"type":"string","description":"Research-selected category, buyer, approach, differentiation, or alternative.","title":"WriterPositioningElement"},"EntityWriterParagraph":{"type":"object","properties":{"analysis":{"$ref":"#/components/schemas/EntityWriterParagraphAnalysis","description":"Overall research answer assigned to this paragraph."},"claim":{"type":"array","items":{"type":"integer"},"description":"Output claims this paragraph states, in order."},"positioning":{"type":"array","items":{"$ref":"#/components/schemas/WriterPositioningElement"},"description":"Positioning decisions this paragraph must consume."}},"required":["analysis","claim","positioning"],"description":"One planned entity-text paragraph without framework sections.","title":"EntityWriterParagraph"},"WriterPositioning":{"type":"object","properties":{"claim":{"type":"array","items":{"type":"integer"},"description":"Output claim numbers whose quotes support the decision; all cited claims must be assigned to its paragraph."},"element":{"$ref":"#/components/schemas/WriterPositioningElement","description":"Positioning element decided by research."},"statement":{"type":"string","description":"Position in plain words."}},"required":["claim","element","statement"],"description":"One positioning decision and supporting claims.","title":"WriterPositioning"},"EntityWriterBrief":{"type":"object","properties":{"claim":{"type":"array","items":{"$ref":"#/components/schemas/ResearchFinding"},"description":"Complete evidence ledger with source page and verbatim quote."},"metaAnalysis":{"$ref":"#/components/schemas/EntityWriterMetaAnalysis","description":"Finished research question, answer, gaps, and change signals."},"outputClaim":{"type":"array","items":{"type":"integer"},"description":"Evidence claims this output states: paragraph.claim in paragraph order. Derived by the server; a sent value is ignored."},"paragraph":{"type":"array","items":{"$ref":"#/components/schemas/EntityWriterParagraph"},"description":"Paragraph plan; each paragraph states the listed claims and judgments, and paragraph order is the output order; only the first paragraph consumes the answer."},"positioning":{"type":"array","items":{"$ref":"#/components/schemas/WriterPositioning"},"description":"Positioning decisions selected by research. Put each decision and all its cited claims in one paragraph. A listed decision stays in that paragraph; an unlisted decision goes to the paragraph of its first cited claim."}},"required":["claim","metaAnalysis","paragraph","positioning"],"description":"Finished entity-text research analysis and section-free paragraph plan.","title":"EntityWriterBrief"},"HarnessTaskFact":{"type":"object","properties":{"eventDate":{"type":["string","null"],"format":"date","description":"Date of the event, when known."},"sourceUrl":{"type":"string","format":"uri","description":"Absolute http or https URL of the page supporting the fact."},"statement":{"type":"string","description":"The single fact to research; non-blank and bounded by the task-input text limit."}},"required":["sourceUrl","statement"],"description":"One source-bound fact the requester asks the task run to research.","title":"HarnessTaskFact"},"WriterAnalysisSection":{"type":"object","properties":{"judgment":{"$ref":"#/components/schemas/WriterJudgment","description":"Judgment for this section."},"label":{"type":"string","description":"Skill-owned section label."}},"required":["judgment","label"],"description":"One ordered framework judgment.","title":"WriterAnalysisSection"},"WriterMetaAnalysis":{"type":"object","properties":{"answer":{"$ref":"#/components/schemas/WriterJudgment","description":"Overall answer to the research question."},"asOfDate":{"type":"string","format":"date","description":"Date through which the judgment is current."},"changeSignal":{"type":"array","items":{"$ref":"#/components/schemas/WriterChangeSignal"},"description":"Evidence that would change the supplied view."},"gap":{"type":"array","items":{"$ref":"#/components/schemas/WriterGap"},"description":"Known gaps or conflicts that must not become invented facts."},"question":{"type":"string","description":"Question the research answered."},"scope":{"$ref":"#/components/schemas/WriterScope","description":"Boundary and period used by the research."},"section":{"type":"array","items":{"$ref":"#/components/schemas/WriterAnalysisSection"},"description":"Ordered framework judgments for a research snippet whose skill defines sections."}},"required":["answer","asOfDate","changeSignal","gap","question","scope","section"],"description":"Research judgment the writer must preserve.","title":"WriterMetaAnalysis"},"WriterParagraphAnalysis":{"type":"object","properties":{"answer":{"type":"boolean","description":"Whether this paragraph states the overall research answer; true on the first paragraph only."},"section":{"type":"array","items":{"type":"string"},"description":"Framework section labels this paragraph must state, in order."}},"required":["answer","section"],"description":"Meta-analysis judgments assigned to one paragraph.","title":"WriterParagraphAnalysis"},"WriterParagraph":{"type":"object","properties":{"analysis":{"$ref":"#/components/schemas/WriterParagraphAnalysis","description":"Meta-analysis judgments this paragraph must consume."},"claim":{"type":"array","items":{"type":"integer"},"description":"Output claims this paragraph states, in order."},"positioning":{"type":"array","items":{"$ref":"#/components/schemas/WriterPositioningElement"},"description":"Positioning decisions this paragraph must consume; each declared decision at most once across paragraphs. Assign all claims cited by a decision to its paragraph. An unlisted decision goes to the paragraph of its first cited claim."}},"required":["claim"],"description":"One planned paragraph.","title":"WriterParagraph"},"WriterBrief":{"type":"object","properties":{"claim":{"type":"array","items":{"$ref":"#/components/schemas/ResearchFinding"},"description":"Complete evidence ledger with source page and verbatim quote."},"metaAnalysis":{"$ref":"#/components/schemas/WriterMetaAnalysis","description":"Finished research question, answer, framework judgments, gaps, and change signals."},"outputClaim":{"type":"array","items":{"type":"integer"},"description":"Evidence claims this output states: paragraph.claim in paragraph order. Derived by the server; a sent value is ignored."},"paragraph":{"type":"array","items":{"$ref":"#/components/schemas/WriterParagraph"},"description":"Paragraph plan; each paragraph states the listed claims and judgments, and paragraph order is the output order; only the first paragraph consumes the answer."},"positioning":{"type":"array","items":{"$ref":"#/components/schemas/WriterPositioning"},"description":"Positioning decisions selected by research. Put each decision and all its cited claims in one paragraph. A listed decision stays in that paragraph; an unlisted decision goes to the paragraph of its first cited claim."}},"required":["claim","paragraph","positioning"],"description":"Finished research analysis for a governed prose write. The writer may phrase only the selected output claims and supplied judgments.","title":"WriterBrief"},"HarnessTaskInputBinding":{"type":"object","properties":{"entityId":{"type":["string","null"],"format":"uuid","description":"Entity id (UUID); exclusive with newsId, text, writerBrief and fact."},"entityWriterBrief":{"oneOf":[{"$ref":"#/components/schemas/EntityWriterBrief"},{"type":"null"}],"description":"Section-free entity or person text brief for a WRITER_BRIEF input; exclusive with writerBrief, entityId, newsId, text and fact. The task must create entity or person text. Use this typed value only with compatible Harness readers; legacy writerBrief remains supported."},"fact":{"oneOf":[{"$ref":"#/components/schemas/HarnessTaskFact"},{"type":"null"}],"description":"One source-bound fact for a FACT input; exclusive with entityId, newsId, text and writerBrief."},"key":{"type":["string","null"],"description":"Catalog input key; omit it to bind the task's only declared input of the value's type."},"newsId":{"type":["integer","null"],"description":"aVenture news id; exclusive with entityId, text, writerBrief and fact."},"text":{"type":["string","null"],"description":"Literal requester text; exclusive with entityId, newsId, writerBrief and fact."},"writerBrief":{"oneOf":[{"$ref":"#/components/schemas/WriterBrief"},{"type":"null"}],"description":"Typed writer brief for a WRITER_BRIEF input; exclusive with entityId, newsId, text and fact."}},"description":"One task input value bound before the run starts; the server validates its key and type.","title":"HarnessTaskInputBinding"},"HarnessRunCreate":{"type":"object","properties":{"finding":{"type":["array","null"],"items":{"$ref":"#/components/schemas/ResearchFinding"},"description":"Facts you already read verbatim on an external source page for an entity, each citing the page and exact text that support it. Omit taskPresetKey to default to apply-cited-findings, or send a preset from GET /v1/research/runs/presets; the run checks each quote against its page and writes only the facts it confirms. When the detail comes from an indexed news article or a page not read verbatim, send userPrompt instead."},"mode":{"$ref":"#/components/schemas/EnrichmentMode","description":"How broadly the run researches the subject; omit it for COMPREHENSIVE"},"model":{"type":["string","null"],"description":"Model id the run uses; omit it to use the default model"},"name":{"type":["string","null"],"minLength":0,"maxLength":200,"description":"Name of the subject at url, such as Clarity Health; the run verifies it and uses it to pick the right subject when the site names several"},"taskInput":{"type":"array","items":{"$ref":"#/components/schemas/HarnessTaskInputBinding"},"description":"Requester values keyed by the selected task's input definitions. ENTITY binds from url and a supplied entityId must match it; a task declaring several ENTITY inputs binds one from url and takes each other as the keyed entityId of an existing record (404 when none exists). TEXT requires explicit text; a missing required or ambiguous supplied value is rejected before enqueue; omitted optional inputs stay unbound. Never infer values from userPrompt."},"taskPresetKey":{"type":["array","null"],"items":{"type":"string"},"description":"Research presets that focus the run, listed by GET /v1/research/runs/presets; omit them for a full run"},"url":{"type":"string","description":"Official website or profile URL of the company, Product, Service, or person to research; a URL no current record owns researches a new one"},"userPrompt":{"type":["string","null"],"description":"Optional steering prompt, such as an observed update and its source URL (newsUrlOriginal or web URL) or which facts to check first"}},"required":["url"],"description":"Request one research run","title":"HarnessRunCreate"},"AgentTaskPresetExecution":{"type":"string","description":"How a selected research preset runs: FULL runs the full enrichment loop; MICRO runs one bounded agent task; INTERACTIVE is a subscriber-selectable session preset whose run accepts no findings and stays open for user turns.","title":"AgentTaskPresetExecution"},"AgentTaskPresetPhase":{"type":"string","enum":["PRIMARY","FINAL"],"description":"Run order when several presets are selected: PRIMARY presets run first; FINAL presets run after them, together, so they read the updated profile.","title":"AgentTaskPresetPhase"},"AgentTaskPreset":{"type":"object","properties":{"execution":{"$ref":"#/components/schemas/AgentTaskPresetExecution","description":"How the preset runs: FULL focuses a full research run on its topic; MICRO runs it as one bounded research task; INTERACTIVE runs a subscriber-selectable session that accepts no findings and stays open for user turns."},"key":{"type":"string","description":"Stable key to send in taskPresetKey."},"name":{"type":"string","description":"Display name of the topic the preset researches."},"phase":{"$ref":"#/components/schemas/AgentTaskPresetPhase","description":"Run order within one job: PRIMARY presets run first; FINAL presets wait until every PRIMARY preset finishes so they read the freshly updated entity profile."}},"required":["execution","key","name","phase"],"description":"A research preset: one named topic a research run can focus on.","title":"AgentTaskPreset"},"AgentTaskPresetCatalog":{"type":"object","properties":{"taskPreset":{"type":"array","items":{"$ref":"#/components/schemas/AgentTaskPreset"},"description":"Available task presets. The field name is singular, but it holds a list."}},"required":["taskPreset"],"description":"Research presets available to the caller.","title":"AgentTaskPresetCatalog"},"HarnessRunFollowUp":{"type":"object","properties":{"admission":{"$ref":"#/components/schemas/HarnessRunFollowUpAdmission","description":"PENDING until every follow-up run has been filed; REJECTED when the allowed redo attempts are used up"},"hasMore":{"type":"boolean","description":"True when this run started more follow-up runs than this list shows, so the list cannot prove the run is complete"},"runId":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Ids of follow-up runs this run started directly; read each one's detail to find its own follow-ups"}},"required":["admission","hasMore","runId"],"description":"Follow-up runs this run started, and whether all of them have been filed","title":"HarnessRunFollowUp"},"HarnessRunRequestOutcomeStatus":{"type":"string","description":"written, alreadyPresent, refuted (a cited page contradicts it), removed (the run deleted its target record), or notWritten (fails the request gate)","title":"HarnessRunRequestOutcomeStatus"},"HarnessRunRequestOutcome":{"type":"object","properties":{"reason":{"type":["string","null"],"description":"Why the change was not written; a refuted entry names the URL of the page that contradicts the request"},"request":{"type":"string","description":"The change the request asks for, in the requester's terms"},"status":{"$ref":"#/components/schemas/HarnessRunRequestOutcomeStatus","description":"What the run did about the change"}},"required":["request","status"],"description":"One distinct change the requester asked for and what the run did about it","title":"HarnessRunRequestOutcome"},"HarnessRunProgress":{"type":"object","properties":{"complete":{"type":"boolean","description":"Whether the enrichment loop reports completion"},"entitySlug":{"type":["string","null"],"pattern":"^[a-z0-9_-]+$","maxLength":255,"description":"Slug of the entity the run is researching, as last reported"},"gateRemaining":{"type":"array","items":{"type":"string"},"description":"Profile sections the run has not finished yet"},"note":{"type":["string","null"],"description":"Optional progress note from the loop"},"requestOutcome":{"type":["array","null"],"items":{"$ref":"#/components/schemas/HarnessRunRequestOutcome"},"description":"The requester's typed request, one entry per distinct change it asks for, which the run.requestOutcome completion gate grades; null when the run reports none"},"whatElseRemaining":{"type":"array","items":{"type":"string"},"description":"Additional work the loop reports as remaining"},"writeThisIteration":{"type":"array","items":{"type":"string"},"description":"Writes completed during the current loop iteration"}},"required":["complete","entitySlug","gateRemaining","whatElseRemaining","writeThisIteration"],"description":"Current public progress of a harness run","title":"HarnessRunProgress"},"ResearchRunReportSource":{"type":"object","properties":{"quote":{"type":"string","description":"Verbatim quote from the page that supports the paragraph"},"title":{"type":["string","null"],"description":"Title of the page, when available"},"url":{"type":"string","format":"uri","description":"Absolute HTTP or HTTPS URL of the page quoted"}},"required":["quote","url"],"description":"A page and verbatim evidence supporting a report paragraph","title":"ResearchRunReportSource"},"ResearchRunReportParagraph":{"type":"object","properties":{"source":{"type":"array","items":{"$ref":"#/components/schemas/ResearchRunReportSource"},"description":"Sources supporting the claims in this paragraph"},"text":{"type":"string","description":"Written finding"}},"required":["source","text"],"description":"One paragraph and its supporting sources","title":"ResearchRunReportParagraph"},"ResearchRunReport":{"type":"object","properties":{"paragraph":{"type":"array","items":{"$ref":"#/components/schemas/ResearchRunReportParagraph"},"description":"Cited paragraphs in reading order"}},"required":["paragraph"],"description":"Written research with evidence for each paragraph","title":"ResearchRunReport"},"HarnessRunDetail":{"type":"object","properties":{"entity":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Current public profile the run resolved to"},"followUp":{"$ref":"#/components/schemas/HarnessRunFollowUp","description":"Follow-up runs filed when this run last finished, and their ids"},"lastEventAt":{"type":["string","null"],"format":"date-time","description":"Time the run's newest stream event was recorded; null when the run has no events. A running run whose value stops advancing has stalled"},"latestStatus":{"oneOf":[{"$ref":"#/components/schemas/HarnessRunProgress"},{"type":"null"}],"description":"Latest research progress; null when none is available"},"provider":{"oneOf":[{"$ref":"#/components/schemas/Entity"},{"type":"null"}],"description":"Parent organization's core record when the resolved entity is a Product/Service; null for every other entity type"},"publicUrl":{"type":["string","null"],"format":"uri","description":"Exact renderable public profile URL for the resolved entity"},"report":{"oneOf":[{"$ref":"#/components/schemas/ResearchRunReport"},{"type":"null"}],"description":"Written report and its citations, when the run submitted one"},"run":{"$ref":"#/components/schemas/HarnessRun","description":"The research run"}},"required":["run"],"description":"Research run with the profile it resolved to","title":"HarnessRunDetail"},"EntityAnalysisCitation":{"type":"object","properties":{"quote":{"type":"string","description":"Nonempty verbatim quote to verify against the archived document."},"sourceDocumentId":{"type":"string","format":"uuid","description":"Canonical archived source document UUID."}},"required":["quote","sourceDocumentId"],"description":"Verbatim evidence from an archived source document.","title":"EntityAnalysisCitation"},"EntityAnalysisFigureCell":{"type":"object","properties":{"citation":{"type":"integer","minimum":1,"description":"Position of the cited quote in the section's citation list, from 1."},"excerpt":{"type":"string","minLength":1,"maxLength":200,"description":"Exact text copied from that quote; the figure displays it as is."}},"required":["citation","excerpt"],"description":"A verbatim excerpt of one section citation's quote.","title":"EntityAnalysisFigureCell"},"EntityAnalysisFigureEntry":{"type":"object","properties":{"cell":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisFigureCell"},"description":"One cell per COMPARISON column; exactly one cell for every other type."},"label":{"type":"string","minLength":1,"maxLength":48,"description":"Entry heading: the party (COMPARISON), the date as its quote states it (TIMELINE), the step (FLOW), or the measure and period (METRIC)."}},"required":["cell","label"],"description":"One labeled entry of excerpt cells.","title":"EntityAnalysisFigureEntry"},"EntityAnalysisFigureType":{"type":"string","description":"Figure layout: COMPARISON matrix of parties by attribute, dated TIMELINE, ordered FLOW of steps, or METRIC key figures.","title":"EntityAnalysisFigureType"},"EntityAnalysisFigure":{"type":"object","properties":{"column":{"type":"array","items":{"type":"string"},"description":"COMPARISON column headings (1-4, each 1-48 characters), one per cell in every entry; empty otherwise."},"entry":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisFigureEntry"},"description":"Entries in display order: 2-8, or 1-8 for METRIC."},"title":{"type":"string","minLength":1,"maxLength":100,"description":"Caption stating what the figure shows."},"type":{"$ref":"#/components/schemas/EntityAnalysisFigureType","description":"Layout that decides how entries and columns render."}},"required":["entry","title","type"],"description":"One figure illustrating its section; every cell is a verbatim excerpt of a section quote.","title":"EntityAnalysisFigure"},"EntityAnalysisSectionOrigin":{"type":"string","description":"Author of a draft section: the run's agent or its signed-in owner.","title":"EntityAnalysisSectionOrigin"},"EntityAnalysisParagraph":{"type":"object","properties":{"label":{"type":["string","null"],"description":"Catalog analysisSectionLabel at this position; null for ordinary prose."},"text":{"type":"string","description":"One nonempty paragraph without embedded line breaks."}},"required":["text"],"description":"A single paragraph of analysis.","title":"EntityAnalysisParagraph"},"EntityAnalysisSection":{"type":"object","properties":{"citation":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisCitation"},"description":"Stored source documents and verbatim evidence quotes; verification occurs before publication."},"figure":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisFigure"},"description":"At most two figures illustrating this section; each cell excerpts one of its quotes."},"key":{"type":"string","description":"Exact typeValue from GET /v1/entities/research-snippets/types; also the section path key."},"origin":{"$ref":"#/components/schemas/EntityAnalysisSectionOrigin","description":"Author of this edit; the server derives this from the authenticated caller."},"paragraph":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisParagraph"},"description":"Paragraphs in catalog order, satisfying paragraphShape and analysisSectionLabel."},"title":{"type":"string","description":"Heading displayed above this section."}},"required":["citation","key","origin","paragraph","title"],"description":"One unverified analysis section; replace it by its snippet type key.","title":"EntityAnalysisSection"},"EntityAnalysisVerificationFailureProblem":{"type":"string","enum":["invalidSection","notApplicable","missingCitation","unreadSource","quoteNotFound","citedLegalPage","restatement","prose"],"title":"EntityAnalysisVerificationFailureProblem"},"EntityAnalysisVerificationFailure":{"type":"object","properties":{"passage":{"type":"string"},"problem":{"$ref":"#/components/schemas/EntityAnalysisVerificationFailureProblem"},"proseProblem":{"oneOf":[{"$ref":"#/components/schemas/ProseProblem"},{"type":"null"}]},"reason":{"type":"string"},"rule":{"type":"string"}},"required":["passage","problem","reason","rule"],"title":"EntityAnalysisVerificationFailure"},"EntityAnalysisSectionVerificationOutcome":{"type":"string","enum":["passed","failed"],"title":"EntityAnalysisSectionVerificationOutcome"},"EntityAnalysisSectionVerificationProblem":{"type":"string","enum":["invalidSection","notApplicable","missingCitation","unreadSource","quoteNotFound","citedLegalPage","restatement","prose"],"title":"EntityAnalysisSectionVerificationProblem"},"EntityAnalysisSectionVerification":{"type":"object","properties":{"failure":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisVerificationFailure"}},"key":{"type":"string"},"outcome":{"$ref":"#/components/schemas/EntityAnalysisSectionVerificationOutcome"},"passage":{"type":["string","null"]},"problem":{"$ref":"#/components/schemas/EntityAnalysisSectionVerificationProblem"},"prosePolicyVersion":{"type":["string","null"]},"proseProblem":{"oneOf":[{"$ref":"#/components/schemas/ProseProblem"},{"type":"null"}]},"rule":{"type":["string","null"]},"violation":{"type":["string","null"]}},"required":["failure","key","outcome"],"title":"EntityAnalysisSectionVerification"},"EntityAnalysisVerification":{"type":"object","properties":{"section":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisSectionVerification"}},"version":{"type":"integer"}},"required":["section","version"],"title":"EntityAnalysisVerification"},"EntityAnalysisDraft":{"type":"object","properties":{"entityId":{"type":"string","format":"uuid","description":"Entity researched by this run."},"runId":{"type":"string","format":"uuid","description":"Run that owns this private draft."},"section":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisSection"},"description":"Current sections, each identified by its snippet type key."},"verification":{"oneOf":[{"$ref":"#/components/schemas/EntityAnalysisVerification"},{"type":"null"}],"description":"Acceptance and publication outcomes recorded for this draft version."},"version":{"type":"integer","minimum":0,"description":"Latest analysis-section event sequence; zero before the first section."}},"required":["entityId","runId","section","version"],"description":"Private analysis for one research run, with section acceptance outcomes.","title":"EntityAnalysisDraft"},"EntityAnalysisSectionMutation":{"type":"object","properties":{"citation":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisCitation"},"description":"Stored source documents and verbatim evidence quotes."},"figure":{"type":"array","items":{"$ref":"#/components/schemas/EntityAnalysisFigure"},"description":"At most two figures grounded in the section's quotes; omit for no figures."},"key":{"type":"string","description":"Exact research snippet typeValue, matching the section path key."},"origin":{"$ref":"#/components/schemas/EntityAnalysisSectionOrigin","description":"Author hint; the server assigns origin from the credential."},"paragraph":{"type":["array","null"],"items":{"$ref":"#/components/schemas/EntityAnalysisParagraph"},"description":"Catalog-ordered paragraphs; omit when supplying writerBrief."},"title":{"type":"string","description":"Heading displayed above this section."},"writerBrief":{"oneOf":[{"$ref":"#/components/schemas/WriterBrief"},{"type":"null"}],"description":"Finished brief for the shared prose writer, supplied instead of paragraph."}},"required":["citation","key","origin","title"],"description":"Replace a private analysis section with paragraphs or a finished writer brief.","title":"EntityAnalysisSectionMutation"},"EntityAnalysisSource":{"type":"object","properties":{"publicSource":{"oneOf":[{"$ref":"#/components/schemas/EntityResearchPublicSource"},{"type":"null"}],"description":"Published page URL and fetch times; absent for unavailable, private, internal, or legal sources."},"sourceDocumentId":{"type":"string","format":"uuid","description":"Source document UUID a draft quote points to."}},"required":["sourceDocumentId"],"description":"Public page behind a source document a draft quotes; never persisted in a draft.","title":"EntityAnalysisSource"},"CursorSliceHarnessRunEvent":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/HarnessRunEvent"}},"nextCursor":{"type":["string","null"]}},"required":["content"],"title":"CursorSliceHarnessRunEvent"},"EntityAnalysisTool":{"type":"string","enum":["RENDER_SECTION","LIST_SECTION"],"description":"Analysis tool","title":"EntityAnalysisTool"},"EntityAnalysisInvocation":{"type":"object","properties":{"instruction":{"type":["string","null"],"description":"Instruction for the tool within the conversation turn character limit"},"sectionKey":{"type":["string","null"],"description":"Exact snippet catalog typeValue; required for RENDER_SECTION"},"tool":{"$ref":"#/components/schemas/EntityAnalysisTool","description":"Analysis tool to invoke"}},"required":["tool"],"description":"One analysis tool invocation","title":"EntityAnalysisInvocation"},"HarnessRunTurn":{"type":"object","properties":{"figure":{"type":["boolean","null"],"description":"True asks the analyst to also illustrate the section with figures"},"invocation":{"oneOf":[{"$ref":"#/components/schemas/EntityAnalysisInvocation"},{"type":"null"}],"description":"Analysis tool invocation instead of a text message"},"text":{"type":["string","null"],"description":"Nonblank user message within the conversation turn character limit"}},"description":"One conversation turn; set exactly one of text or invocation","title":"HarnessRunTurn"},"SystemBuildDetail":{"type":"object","properties":{"artifact":{"type":["string","null"],"description":"Artifact identifier"},"group":{"type":["string","null"],"description":"Group identifier"},"name":{"type":["string","null"],"description":"Project name"},"revision":{"type":["string","null"],"description":"Deployed Git commit revision"},"time":{"type":["string","null"],"format":"date-time","description":"Build timestamp"},"version":{"type":["string","null"],"description":"Project version"}},"description":"Application build metadata","title":"SystemBuildDetail"},"SystemBuild":{"type":"object","properties":{"build":{"$ref":"#/components/schemas/SystemBuildDetail","description":"Application build metadata"}},"required":["build"],"description":"Build metadata exposed by the public info alias","title":"SystemBuild"},"SystemGlobalMetrics":{"type":"object","properties":{"cities":{"type":"integer","format":"int64"},"companies":{"type":"integer","format":"int64"},"countries":{"type":"integer","format":"int64"},"dataPoints":{"type":"integer","format":"int64"},"fundingLast30Days":{"type":"number","format":"double","description":"Total positive funding announced by visible companies in the trailing 30-day window."},"fundraiseRoundsLast30Days":{"type":"integer","format":"int64","description":"Count of positive funding rounds announced by visible companies in the trailing 30-day window."},"investors":{"type":"integer","format":"int64"},"people":{"type":"integer","format":"int64"},"refreshedAt":{"type":"string","format":"date-time"},"totalFunding":{"type":"number","format":"double"}},"required":["cities","companies","countries","dataPoints","fundingLast30Days","fundraiseRoundsLast30Days","investors","people","refreshedAt","totalFunding"],"description":"Global platform metrics snapshot","title":"SystemGlobalMetrics"},"NewsPublishedEvent":{"type":"object","properties":{"cursor":{"type":"string","description":"Opaque watermark to resume after this event."},"data":{"$ref":"#/components/schemas/News"},"eventId":{"type":"string","description":"Deterministic event id, equal to the webhook-id header."},"name":{"$ref":"#/components/schemas/NewsSubscriptionEvent"},"timestamp":{"type":"string","format":"date-time","description":"When the article was linked to the entity."}},"required":["cursor","data","eventId","name","timestamp"],"description":"Webhook POST body for one news article newly linked to the subscribed entity.","title":"NewsPublishedEvent"}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Your aVenture API key (https://aventure.vc/settings/api-keys) or OAuth access token"},"clerkApiKeyAuth":{"type":"http","scheme":"bearer","description":"Your aVenture API key (https://aventure.vc/settings/api-keys)"}}}}