Static ReadonlyAuthorizesTrue when the action authorizes its caller itself, so a public entry point such as the
RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller
must hold, or reads and writes only with the caller's own permissions. Leave it false for an
action that acts with more authority than its caller, or that reaches data or sends messages
the caller chooses but could not otherwise reach.
The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.
Whether this action can bound what it returns to an audience (RunActionParams.Audience): everyone
besides the caller who will see its output, such as the other participants of a shared conversation.
false by default, and the engine enforces it: when a run's audience adds a reader beyond the caller,
ActionEngineServer.RunAction refuses the action with result code AUDIENCE_UNSUPPORTED, without running
it. Override to return true only when the action honours the audience in full — every record, snippet
and count it returns is something every reader may see (pass the audience to the search engine, check each
reader's entitlement to anything it scopes by, and leave out aggregates computed before that filtering).
ProtectedCreateBuild the client. Overridden in tests; the only place ApolloRESTClient is
constructed in this surface.
ProtectedInternalInternal method that must be implemented by derived action classes. This is where the actual action logic should be implemented.
The action execution parameters including typed context
Promise resolving to the action result
ProtectedInvalidProtectedMissingA uniform missing-input failure.
Optionaldetail: stringProtectedResolveResolve the key and construct the client, or return the failure result to hand straight back to the caller.
CompanyID is optional here, unlike in the CDP actions this ports from,
because a single-tenant instance with APOLLO_API_KEY set has no company
to name. Supplying it switches on the per-company credential path.
Executes the action with the provided parameters.
The action execution parameters including context
Promise resolving to the action result
Searches Apollo's people database for net-new prospects by organization, title and seniority — the list-building workhorse.
This endpoint does not return emails or phones. That is Apollo's design, not an omission here: contact details come from the enrichment actions in this package, which are metered separately.
At least one filter is required. Apollo will accept a request with none and return an unscoped result set, which burns the rate limit to produce something nobody asked for, so that case is rejected before the call.
Inputs:
Each list param accepts a real array, a JSON array string, or a comma-separated string.
Outputs: People / Pagination / Count (people on this page) / TotalEntries (all pages) / KeySource
Since 2026 Apollo obfuscates these results (
lastNameObfuscated, no LinkedIn URL): a person's details need a paidpeople/bulk_matchby id, which the enrichment actions do.