openapi: 3.2.0 info: title: Gtm Linkedin Auto Scrapes API version: '1.0' contact: name: GTM API url: https://gtm-api.com email: support@gtm-api.com license: name: Proprietary url: https://gtm-api.com/license description: 'Operations tagged linkedin_auto_scrapes across 2 of this provider''s published API definitions: gtm-api-openapi-openapi.yml, gtm-api-linkedin-openapi.yaml. Each path carries the servers of the definition it was published in.' servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway security: - BearerJwt: [] TeamSid: [] tags: - name: linkedin_auto_scrapes description: Registry package `mcp.linkedin/linkedin_auto_scrapes`, served on MCP mount `linkedin.auto-scrapes`. paths: /api/linkedin-auto-scrapes: post: operationId: create_linkedin_auto_scrape summary: Create LinkedIn auto-scrape description: 'Save a scraping source as a collector and start it. Give the source EXACTLY one way: a bare url (people and company searches only) or the pair source_method plus source_input. Anything else is 422. Use for the standing ask, "keep pulling everyone behind this link". To wire outreach, author the plan FIRST on the mass-actions mount (preview_mass_action, then create_mass_action with scope kind none) and pass its ma_ac_ sid here: every new lead is appended to that run as one item. Omit mass_action_sid to collect only, omit replay_frequency for a one-shot. Run 1 dispatches AT ONCE: real LinkedIn automation starts, and a linked run begins enrolling. Watch it with search_linkedin_auto_scrape_runs, read the leads with search_linkedin_auto_scrape_results. Rejections are all pre-flight 422: invalid_url, invalid_source_method, method_not_available, source_input_incomplete, account_not_in_team, sales_nav_required (sales-nav sources and company-decision-makers need Sales Navigator), mass_action_incompatible. Contract: - MCP tool `create_linkedin_auto_scrape`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `create`, response envelope `create`. - Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.' tags: - linkedin_auto_scrapes requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateLinkedinAutoScrapeRequest' responses: '200': description: '`create` success envelope.' content: application/json: schema: $ref: '#/components/schemas/CreateLinkedinAutoScrapeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: create_linkedin_auto_scrape x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: create x-gtm-envelope: create x-gtm-availability: ga x-gtm-dangerous: true x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: complex servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/search: post: operationId: search_linkedin_auto_scrapes summary: Search LinkedIn auto-scrapes description: 'List the team''s collectors: saved jobs that paginate one LinkedIn or Sales Navigator list surface on a cadence and file deduped leads. Use for: which collectors are live or paused and why (status, paused_reason), what a given account collects (linkedin_account_sid), which ones feed outreach (mass_action_sid, is_null:true = collect-only), what runs next (sort next_run_at asc), and which produce (total_new_results). NOT for the leads themselves (search_linkedin_auto_scrape_results) or for one execution (search_linkedin_auto_scrape_runs). q: substring of the title, the ln_as_ sid or the pasted source URL (not the executor name or the mass-action title). include: linkedin_account (the executor row) and last_run (the newest run, the only place an in-flight run shows up). Sort: created_at (default desc) | updated_at | next_run_at | last_run_at | total_new_results. page_size:0 returns the count alone. Contract: - MCP tool `search_linkedin_auto_scrapes`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `search`, response envelope `search`. - Flags: read only.' tags: - linkedin_auto_scrapes requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/SearchLinkedinAutoScrapesRequest' responses: '200': description: '`search` success envelope.' content: application/json: schema: $ref: '#/components/schemas/SearchLinkedinAutoScrapesResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: search_linkedin_auto_scrapes x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: search x-gtm-envelope: search x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/{sid}: get: operationId: get_linkedin_auto_scrape summary: Get LinkedIn auto-scrape description: 'Fetch one collector by sid: status and paused_reason, next_run_at and last_run_at, runs_count and total_new_results, and mass_action_sid (null = collect-only). include: linkedin_account (the executor row), last_run (the newest run, null when the job has never run). Executions and leads are separate reads: search_linkedin_auto_scrape_runs and search_linkedin_auto_scrape_results. Contract: - MCP tool `get_linkedin_auto_scrape`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `get`, response envelope `get`. - Flags: read only.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Path segment `{sid}`. schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ - name: include[] in: query required: false description: Query parameter `include`. style: form explode: true schema: type: array items: type: string enum: - linkedin_account - last_run responses: '200': description: '`get` success envelope.' content: application/json: schema: $ref: '#/components/schemas/GetLinkedinAutoScrapeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: get_linkedin_auto_scrape x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: get x-gtm-envelope: get x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: trivial patch: operationId: update_linkedin_auto_scrape summary: Update LinkedIn auto-scrape description: 'Patch a collector. Only title and replay_frequency are writable, and at least one must be sent (else 422 nothing_to_update). The source is immutable by design: a different source is a different collector, so create a new one. The outreach link moves through set_linkedin_auto_scrape_mass_action / unset_linkedin_auto_scrape_mass_action, and status through pause_linkedin_auto_scrape / resume_linkedin_auto_scrape. A cadence change re-plans next_run_at only when the clock is already armed; a run in flight keeps its claim and picks the new cadence up when it finalizes. Contract: - MCP tool `update_linkedin_auto_scrape`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `update`, response envelope `update`. - Flags: none.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Auto-scrape sid (ln_as_...). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ description: Auto-scrape sid (ln_as_...). requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/UpdateLinkedinAutoScrapeRequest' responses: '200': description: '`update` success envelope.' content: application/json: schema: $ref: '#/components/schemas/UpdateLinkedinAutoScrapeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: update_linkedin_auto_scrape x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: update x-gtm-envelope: update x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical delete: operationId: delete_linkedin_auto_scrape summary: Delete LinkedIn auto-scrape description: 'Retire a collector for good: soft-delete, so no further run is ever minted and a run in flight abandons at its next page boundary. Runs and collected leads are retained for audit and stay readable by sid. The linked mass-action is INDEPENDENT and keeps draining the leads already enrolled in it: stop that separately with delete_mass_action. To stop collecting for a while without losing the job, use pause_linkedin_auto_scrape instead. No undo through MCP. Contract: - MCP tool `delete_linkedin_auto_scrape`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `delete`, response envelope `delete_simple`. - Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Path segment `{sid}`. schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ responses: '200': description: '`delete_simple` success envelope.' content: application/json: schema: $ref: '#/components/schemas/DeleteLinkedinAutoScrapeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: delete_linkedin_auto_scrape x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: delete x-gtm-envelope: delete_simple x-gtm-availability: ga x-gtm-dangerous: true x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/{sid}/pause: post: operationId: pause_linkedin_auto_scrape summary: Pause LinkedIn auto-scrape description: 'Freeze recurrence: status becomes paused with paused_reason ''manual'' and next_run_at is cleared, so no new run is minted. A run already in flight FINISHES (pausing never abandons it). Idempotent. Use to stop collecting over a holiday or while an outreach plan is being reworked; use delete_linkedin_auto_scrape to retire the job outright. Contract: - MCP tool `pause_linkedin_auto_scrape`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `action`, response envelope `action`. - Flags: none.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Auto-scrape sid (ln_as_...). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ description: Auto-scrape sid (ln_as_...). responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/PauseLinkedinAutoScrapeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: pause_linkedin_auto_scrape x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/{sid}/resume: post: operationId: resume_linkedin_auto_scrape summary: Resume LinkedIn auto-scrape description: 'Re-arm a paused collector: status becomes active, paused_reason clears, consecutive_failures resets to 0 and next_run_at is set to now, so the next scheduler tick mints a run. Works on any paused job, including a paused one-shot (a repeat pass is cheap because identity dedup makes it near zero new). 409 invalid_status_transition when the job is already active: an exhausted one-shot stays active with a null clock, and resuming it is exactly how you run it again. Contract: - MCP tool `resume_linkedin_auto_scrape`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `action`, response envelope `action`. - Flags: none.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Auto-scrape sid (ln_as_...). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ description: Auto-scrape sid (ln_as_...). responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/ResumeLinkedinAutoScrapeResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: resume_linkedin_auto_scrape x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/{sid}/run-now: post: operationId: run_linkedin_auto_scrape_now summary: Run LinkedIn auto-scrape now description: 'Mint a manual run immediately, off schedule, and return its run_sid in result. Asynchronous: a worker drives the page loop, so poll get_linkedin_auto_scrape_run for status, new_count and enrolled_count. Use when the operator will not wait for the next slot. Only one run may be in flight per collector: 409 run_in_progress while one is pending or in_progress, and 409 auto_scrape_not_active on a paused job (resume it first). Contract: - MCP tool `run_linkedin_auto_scrape_now`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `action`, response envelope `action`. - Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Auto-scrape sid (ln_as_...). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ description: Auto-scrape sid (ln_as_...). responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/RunLinkedinAutoScrapeNowResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: run_linkedin_auto_scrape_now x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: true x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/{sid}/set-mass-action: post: operationId: set_linkedin_auto_scrape_mass_action summary: Link LinkedIn auto-scrape to a mass-action description: 'Wire this collector to a mass-action: from the next run on, every newly discovered lead is appended to that run as one item, which is how collection turns into outreach. Author the run FIRST on the mass-actions mount (preview_mass_action, then create_mass_action, normally with scope kind none) and pass its ma_ac_ sid here. Slot semantics: an existing link is replaced and returned as previous_mass_action_sid, and that older run keeps draining what it already holds. A run in flight is unaffected, it keeps the link it was minted with. 422 when the mass-action is missing, foreign, deleted, or its target family cannot accept this collector result_kind. Contract: - MCP tool `set_linkedin_auto_scrape_mass_action`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `action`, response envelope `action`. - Flags: none.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Auto-scrape sid (ln_as_...). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ description: Auto-scrape sid (ln_as_...). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SetLinkedinAutoScrapeMassActionRequest' responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/SetLinkedinAutoScrapeMassActionResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: set_linkedin_auto_scrape_mass_action x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway /api/linkedin-auto-scrapes/{sid}/unset-mass-action: post: operationId: unset_linkedin_auto_scrape_mass_action summary: Unlink LinkedIn auto-scrape from its mass-action description: 'Cut the outreach wire: clear mass_action_sid so the collector goes back to collect-only from the next run. This does NOT stop the mass-action. Leads already enrolled keep running, and stopping them is delete_mass_action on the mass-actions mount. A run in flight keeps enrolling into the link it was minted with. 409 no_mass_action_set when nothing is linked. To point the collector at a different plan, call set_linkedin_auto_scrape_mass_action instead: it replaces the slot in one call. Contract: - MCP tool `unset_linkedin_auto_scrape_mass_action`, registry package `mcp.linkedin/linkedin_auto_scrapes`, mount `linkedin.auto-scrapes`. - Operation `action`, response envelope `action`. - Flags: none.' tags: - linkedin_auto_scrapes parameters: - name: sid in: path required: true description: Auto-scrape sid (ln_as_...). schema: type: string minLength: 18 maxLength: 18 pattern: ^ln_as_ description: Auto-scrape sid (ln_as_...). responses: '200': description: '`action` success envelope.' content: application/json: schema: $ref: '#/components/schemas/UnsetLinkedinAutoScrapeMassActionResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: unset_linkedin_auto_scrape_mass_action x-gtm-mcp-mount: linkedin.auto-scrapes x-gtm-entity: linkedin_auto_scrapes x-gtm-operation: action x-gtm-envelope: action x-gtm-availability: ga x-gtm-dangerous: false x-gtm-mass-action: false x-gtm-step-eligible: false x-gtm-schedule-required: false x-gtm-tool-class: typical servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway components: schemas: PauseLinkedinAutoScrapeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at result: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - action - item - result - meta McpError: type: object properties: success: type: boolean enum: - false error: type: object properties: code: type: string enum: - validation_failed - nothing_to_update - not_found - relation_not_found - invalid_transition - limit_exceeded - payment_required - duplicate_rejected - conflict - delete_blocked - unauthorized - forbidden - rate_limited - internal_error - service_unavailable - not_implemented message: type: string recoverable: type: boolean suggestion: type: string field_errors: type: object additionalProperties: type: array items: type: object properties: rule: type: string message: type: string required: - rule - message blockers: type: array items: type: object properties: type: type: string description: Machine-readable blocker type (active_flow, pending_tasks, …). severity: type: string enum: - hard - soft description: hard = external action required; soft = acknowledge is enough. description: type: string entity_sid: type: - string - 'null' count: type: integer resolution: type: string description: 'Hard: tool name to call. Soft: code for acknowledge[].' resolution_hint: type: string required: - type - severity - description - entity_sid - resolution - resolution_hint context: type: object additionalProperties: {} required: - code - message - recoverable meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - error SearchLinkedinAutoScrapesRequest: type: object description: Request body of `search_linkedin_auto_scrapes`. properties: filter: type: object properties: q: type: string description: 'Free-text LIKE over title + sid + source_input.url (the pasted list URL of the url-family sources; params, anchor and post sources have no url and match on title + sid only). The executor name and the mass-action title are not searched: slice by linkedin_account_sid / mass_action_sid.' sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false linkedin_account_sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false source_method: type: object properties: eq: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies ne: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies in: type: array items: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies nin: type: array items: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies additionalProperties: false detected_platform: type: object properties: eq: type: string enum: - linkedin - sales_navigator - recruiter ne: type: string enum: - linkedin - sales_navigator - recruiter in: type: array items: type: string enum: - linkedin - sales_navigator - recruiter nin: type: array items: type: string enum: - linkedin - sales_navigator - recruiter additionalProperties: false result_kind: type: object properties: eq: type: string enum: - person - company in: type: array items: type: string enum: - person - company additionalProperties: false replay_frequency: type: object properties: eq: type: string enum: - hourly - daily - weekly - monthly in: type: array items: type: string enum: - hourly - daily - weekly - monthly is_null: type: boolean additionalProperties: false description: is_null:true selects the one-shot jobs (no cadence). status: type: object properties: eq: type: string enum: - active - paused in: type: array items: type: string enum: - active - paused additionalProperties: false paused_reason: type: object properties: eq: type: string enum: - manual - too_many_failures - account_unavailable in: type: array items: type: string enum: - manual - too_many_failures - account_unavailable is_null: type: boolean additionalProperties: false description: Why a paused job stopped. account_unavailable is the only reason the platform lifts by itself. mass_action_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: is_null:true selects collect-only jobs; eq finds every collector feeding one mass-action. next_run_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false description: Due horizon. is_null:true means paused, an exhausted one-shot, or a run already in flight. last_run_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false total_new_results: type: object properties: eq: type: integer gte: type: integer lte: type: integer gt: type: integer lt: type: integer additionalProperties: false created_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false updated_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false deleted_at: type: object properties: gte: type: string lte: type: string is_null: type: boolean additionalProperties: false description: Omit for live jobs only; send any operator to bring deleted collectors into scope. include: type: array items: type: string enum: - linkedin_account - last_run description: Relations to eager-load (see entity Includes). sort: type: object properties: field: type: string enum: - created_at - updated_at - next_run_at - last_run_at - total_new_results direction: type: string enum: - asc - desc description: Default desc. required: - field page_size: type: integer minimum: 0 maximum: 200 description: 0..200, default 50. page_size=0 = count-only, page_size=1 = getFirst. cursor: type: - string - 'null' description: Opaque forward cursor from a previous response pagination.next_cursor. RunLinkedinAutoScrapeNowResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at result: type: object properties: run_sid: type: string description: The minted run (ln_ar_...); read it with get_linkedin_auto_scrape_run. run_number: type: number status: type: string enum: - pending - in_progress - completed - failed required: - run_sid - run_number - status meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - action - item - result - meta SearchLinkedinAutoScrapesResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - search items: type: array items: type: object properties: item: type: object properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at included: type: object additionalProperties: {} required: - item - included pagination: type: object properties: next_cursor: type: - string - 'null' has_more: type: boolean total_count: type: - integer - 'null' required: - next_cursor - has_more - total_count applied_filters: type: object additionalProperties: {} includes: type: array items: type: string meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms counts: type: object properties: {} required: - success - operation - items - pagination - applied_filters - includes - meta GetLinkedinAutoScrapeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - get item: type: object properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at included: type: object additionalProperties: {} includes: type: array items: type: string meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - item - included - includes - meta UpdateLinkedinAutoScrapeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - update item: type: object properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at updated_fields: type: array items: type: string previous_values: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - item - updated_fields - previous_values - meta SetLinkedinAutoScrapeMassActionRequest: type: object description: Request body of `set_linkedin_auto_scrape_mass_action`. properties: mass_action_sid: type: string minLength: 18 maxLength: 18 pattern: ^ma_ac_ description: Mass-action sid (ma_ac_...) authored beforehand with preview_mass_action then create_mass_action. required: - mass_action_sid CreateLinkedinAutoScrapeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - create item: type: object properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at already_exists: type: boolean meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - item - already_exists - meta CreateLinkedinAutoScrapeRequest: type: object description: Request body of `create_linkedin_auto_scrape`. properties: linkedin_account_sid: type: string minLength: 18 maxLength: 18 pattern: ^ln_ac_ description: 'Executor LinkedIn account sid (ln_ac_...): whose browser paginates the source.' title: type: - string - 'null' maxLength: 255 description: Human label for the list view. Server derives "{result_kind} {source_method}" when omitted. url: type: string maxLength: 2048 description: LinkedIn or Sales Navigator people/company SEARCH url. Mutually exclusive with source_method plus source_input. source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies description: The paginated verb to replay. Required (with source_input) for every non-search source. source_input: type: object additionalProperties: {} description: 'The verb''s own arguments. One key is mandatory per family: url, filters, anchor_company_ln_id, anchor_nickname (similar-profiles takes the vanity slug, never a URN), or activity_urn. filters takes the SAME schema as the matching scrape_linkedin_search_* (the merged tools; the old _by_params names are gone) tool (see it for the facet vocabulary and typeahead workflow). On get-post-comments an optional sort_order (RELEVANCE | CHRONOLOGICAL | REVERSE_CHRONOLOGICAL) is FROZEN here at create and used on every page of every run - a cursor belongs to the ordering it was minted under, so the walk''s sort can never change mid-run; a value outside that vocabulary is a 422.' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly description: 'Cadence: hourly | daily | weekly | monthly. Omit or null for a one-shot job that runs once.' mass_action_sid: type: - string - 'null' minLength: 18 maxLength: 18 pattern: ^ma_ac_ description: Standing mass-action new leads enrol into. Cross-checked for same team, live, and target family compatible with result_kind. required: - linkedin_account_sid ResumeLinkedinAutoScrapeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at result: type: object additionalProperties: {} meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - action - item - result - meta UpdateLinkedinAutoScrapeRequest: type: object description: Request body of `update_linkedin_auto_scrape`. properties: title: type: - string - 'null' maxLength: 255 replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly description: null turns a recurring collector into a one-shot; it does NOT resume a paused one. DeleteLinkedinAutoScrapeResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - delete item: type: object additionalProperties: {} already_deleted: type: boolean soft_deleted: type: boolean retained: type: array items: type: string meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - item - already_deleted - soft_deleted - retained - meta SetLinkedinAutoScrapeMassActionResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at result: type: object properties: mass_action: type: object additionalProperties: {} description: The linked mass-action row, embedded for confirmation. previous_mass_action_sid: type: - string - 'null' description: What the slot held before. It keeps draining its already-enrolled items; null on the first link. required: - mass_action - previous_mass_action_sid meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - action - item - result - meta UnsetLinkedinAutoScrapeMassActionResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - action action: type: string description: kebab-case verb; matches the route segment. item: type: - object - 'null' properties: sid: type: string team_sid: type: string linkedin_account_sid: type: string source_method: type: string enum: - search-people-by-url - search-people-by-params - search-sales-nav-people-by-url - search-sales-nav-people-by-params - similar-profiles - company-employees - company-decision-makers - get-post-comments - get-post-reactors - get-post-resharers - search-service-providers - search-service-providers-by-url - search-companies-by-url - search-companies-by-params - search-sales-nav-companies-by-url - search-sales-nav-companies-by-params - similar-companies source_input: type: object additionalProperties: {} detected_platform: type: string enum: - linkedin - sales_navigator - recruiter result_kind: type: string enum: - person - company status: type: string enum: - active - paused consecutive_failures: type: number runs_count: type: number total_new_results: type: number title: type: - string - 'null' replay_frequency: type: - string - 'null' enum: - hourly - daily - weekly - monthly paused_reason: type: - string - 'null' enum: - manual - too_many_failures - account_unavailable next_run_at: type: - string - 'null' last_run_at: type: - string - 'null' mass_action_sid: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions deleted_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: - string - 'null' team_sid: type: string actor_name: type: - string - 'null' description: The OAuth client that acted ("Claude", "n8n"); null for a user, an API key or a system job. oauth_client_sid: type: - string - 'null' description: The acting OAuth client (id_oc_*); null off the OAuth path. reason: type: - string - 'null' description: Why a system actor wrote the row (snapshot_capture_job, ...); null otherwise. permissions: type: object additionalProperties: {} description: 'Internal audit context: the grant set the actor held at write time. Not a contract.' cluster_id: type: - integer - 'null' description: 'Internal audit context: the cluster that served the write.' trace_id: type: - string - 'null' description: 'Internal audit context: the trace id of the request that wrote the row.' required: - actor_type - actor_sid - team_sid - permissions created_at: type: string updated_at: type: string deleted_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - source_method - source_input - detected_platform - result_kind - status - consecutive_failures - runs_count - total_new_results - title - replay_frequency - paused_reason - next_run_at - last_run_at - mass_action_sid - created_by - deleted_by - created_at - updated_at - deleted_at result: type: object properties: unset_mass_action_sid: type: string description: The mass-action that was unlinked. It keeps running. required: - unset_mass_action_sid meta: type: object properties: trace_id: type: string description: UUID v7; same 128-bit value as the X-Trace-Id header. span_id: type: string pattern: ^[0-9a-f]{16}$ description: 16 hex chars, root span of this request. timestamp: type: string description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time. duration_ms: type: integer minimum: 0 description: Server-side wall clock. team_sid: type: - string - 'null' description: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends. actor_type: type: - string - 'null' description: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends. required: - trace_id - span_id - timestamp - duration_ms required: - success - operation - action - item - result - meta responses: McpServerError: description: MCP error envelope with `error.code` internal_error or service_unavailable. content: application/json: schema: $ref: '#/components/schemas/McpError' McpClientError: description: MCP error envelope. `error.code` is one of validation_failed, nothing_to_update, not_found, relation_not_found, invalid_transition, limit_exceeded, payment_required, duplicate_rejected, conflict, delete_blocked, unauthorized, forbidden, rate_limited, not_implemented. content: application/json: schema: $ref: '#/components/schemas/McpError' securitySchemes: BearerJwt: type: http scheme: bearer bearerFormat: JWT description: Access token issued by gtm.service.id. Its `access_identity` claim carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is authoritative. TeamSid: type: apiKey in: header name: Team-SID description: Team scope for tokens that do not carry one. Ignored when the token already names a team. x-refined-from: - gtm-api-openapi-openapi.yml - gtm-api-linkedin-openapi.yaml