openapi: 3.2.0 info: title: Gtm Data Requests 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 data_requests 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: data_requests description: Registry package `mcp.linkedin/data_requests`, served on MCP mount `linkedin.data`. paths: /api/data-requests/search: post: operationId: search_data_requests summary: Search data requests description: 'List/filter the request history: what was asked, where it ran, what came from cache. The go-to tool for retry forensics (idempotency_key:{eq}), per-person request history (ln_member_id:{eq}) and mid-flight visibility (status:{in:["pending","running"]}). This is a read-only ledger. To RUN scraping/enrichment call the linkedin-scraping / linkedin-enrichment surfaces instead. Contract: - MCP tool `search_data_requests`, registry package `mcp.linkedin/data_requests`, mount `linkedin.data`. - Operation `search`, response envelope `search`. - Flags: read only.' tags: - data_requests requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/SearchDataRequestsRequest' responses: '200': description: '`search` success envelope.' content: application/json: schema: $ref: '#/components/schemas/SearchDataRequestsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: search_data_requests x-gtm-mcp-mount: linkedin.data x-gtm-entity: data_requests 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/data-requests/{sid}: get: operationId: get_data_request summary: Get data request description: 'Fetch a single ledger row by sid to inspect one request referenced from a data-requests.* webhook or another row''s cached_from_sid pointer. Contract: - MCP tool `get_data_request`, registry package `mcp.linkedin/data_requests`, mount `linkedin.data`. - Operation `get`, response envelope `get`. - Flags: read only.' tags: - data_requests parameters: - name: sid in: path required: true description: Path segment `{sid}`. schema: type: string minLength: 18 maxLength: 18 pattern: ^er_rq_ - name: include[] in: query required: false description: Query parameter `include`. style: form explode: true schema: type: array items: type: string enum: - linkedin_account - cached_from responses: '200': description: '`get` success envelope.' content: application/json: schema: $ref: '#/components/schemas/GetDataRequestResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: get_data_request x-gtm-mcp-mount: linkedin.data x-gtm-entity: data_requests 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 servers: - url: https://app.gtm-api.com/linkedin/v4 description: Production, through the app.gtm-api.com gateway components: schemas: 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 SearchDataRequestsResponse: 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 - 'null' kind: type: string enum: - enrich - scrape method: type: string enum: - person_lite_profile - person_basic_profile - person_full_profile - person_experience - person_skills - person_education - person_posts - person_featured - person_contact_info - person_languages - person_certifications - person_recommendations - person_comment_activity - person_reaction_activity - person_interests - person_services - company_profile - company_lite_profile - company_public_identifier - company_posts - post_details - get_activity_urn_by_url - search_people_by_url - search_people_by_params - search_sales_nav_people_by_url - search_sales_nav_people_by_params - search_service_providers - search_service_providers_by_url - similar_profiles - search_jobs - search_jobs_by_url - search_events - search_events_by_url - search_groups - search_groups_by_url - search_courses - search_courses_by_url - search_products - search_products_by_url - search_schools - search_schools_by_url - search_companies_by_url - search_companies_by_params - search_sales_nav_companies_by_url - search_sales_nav_companies_by_params - similar_companies - company_employees - company_decision_makers - search_posts - search_posts_by_url - get_post_comments - get_post_reactors - get_post_resharers - search_param_id_lookup - search_sales_nav_param_id_lookup - search_recruiter_people_by_params - search_recruiter_people_by_url - search_recruiter_param_id_lookup status: type: string enum: - pending - running - completed - rejected - failed input_kind: type: string enum: - ln_id - sn_id - nickname - ln_member_id - url - activity_urn - params - domain input_value: type: string ln_member_id: type: - string - 'null' ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' executed_on: type: - string - 'null' enum: - own_account - infra_pool served_from_cache: type: boolean cached_from_sid: type: - string - 'null' idempotency_key: type: - string - 'null' result_ref: anyOf: - type: string - type: object additionalProperties: {} - type: array items: {} - {} description: 'The stored result payload (inline object/array, or a string pointer). Null on the receipt a scrape / enrich response embeds as result.data_request: that response carries the data as rows / the item, and get_data_request by sid reads the stored payload back.' error_code: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: string team_sid: type: string permissions: type: object additionalProperties: {} trace_id: type: - string - 'null' reason: type: - string - 'null' required: - actor_type - actor_sid - team_sid - permissions - reason created_at: type: string updated_at: type: string completed_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - kind - method - status - input_kind - input_value - ln_member_id - ln_id - sn_id - nickname - executed_on - served_from_cache - cached_from_sid - idempotency_key - result_ref - error_code - created_by - created_at - updated_at - completed_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 additionalProperties: {} required: - success - operation - items - pagination - applied_filters - includes - meta SearchDataRequestsRequest: type: object description: Request body of `search_data_requests`. properties: filter: type: object properties: sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false kind: type: object properties: eq: type: string enum: - enrich - scrape in: type: array items: type: string enum: - enrich - scrape additionalProperties: false method: type: object properties: eq: type: string enum: - person_lite_profile - person_basic_profile - person_full_profile - person_experience - person_skills - person_education - person_posts - person_featured - person_contact_info - person_languages - person_certifications - person_recommendations - person_comment_activity - person_reaction_activity - person_interests - person_services - company_profile - company_lite_profile - company_public_identifier - company_posts - post_details - get_activity_urn_by_url - search_people_by_url - search_people_by_params - search_sales_nav_people_by_url - search_sales_nav_people_by_params - search_service_providers - search_service_providers_by_url - similar_profiles - search_jobs - search_jobs_by_url - search_events - search_events_by_url - search_groups - search_groups_by_url - search_courses - search_courses_by_url - search_products - search_products_by_url - search_schools - search_schools_by_url - search_companies_by_url - search_companies_by_params - search_sales_nav_companies_by_url - search_sales_nav_companies_by_params - similar_companies - company_employees - company_decision_makers - search_posts - search_posts_by_url - get_post_comments - get_post_reactors - get_post_resharers - search_param_id_lookup - search_sales_nav_param_id_lookup - search_recruiter_people_by_params - search_recruiter_people_by_url - search_recruiter_param_id_lookup in: type: array items: type: string enum: - person_lite_profile - person_basic_profile - person_full_profile - person_experience - person_skills - person_education - person_posts - person_featured - person_contact_info - person_languages - person_certifications - person_recommendations - person_comment_activity - person_reaction_activity - person_interests - person_services - company_profile - company_lite_profile - company_public_identifier - company_posts - post_details - get_activity_urn_by_url - search_people_by_url - search_people_by_params - search_sales_nav_people_by_url - search_sales_nav_people_by_params - search_service_providers - search_service_providers_by_url - similar_profiles - search_jobs - search_jobs_by_url - search_events - search_events_by_url - search_groups - search_groups_by_url - search_courses - search_courses_by_url - search_products - search_products_by_url - search_schools - search_schools_by_url - search_companies_by_url - search_companies_by_params - search_sales_nav_companies_by_url - search_sales_nav_companies_by_params - similar_companies - company_employees - company_decision_makers - search_posts - search_posts_by_url - get_post_comments - get_post_reactors - get_post_resharers - search_param_id_lookup - search_sales_nav_param_id_lookup - search_recruiter_people_by_params - search_recruiter_people_by_url - search_recruiter_param_id_lookup nin: type: array items: type: string enum: - person_lite_profile - person_basic_profile - person_full_profile - person_experience - person_skills - person_education - person_posts - person_featured - person_contact_info - person_languages - person_certifications - person_recommendations - person_comment_activity - person_reaction_activity - person_interests - person_services - company_profile - company_lite_profile - company_public_identifier - company_posts - post_details - get_activity_urn_by_url - search_people_by_url - search_people_by_params - search_sales_nav_people_by_url - search_sales_nav_people_by_params - search_service_providers - search_service_providers_by_url - similar_profiles - search_jobs - search_jobs_by_url - search_events - search_events_by_url - search_groups - search_groups_by_url - search_courses - search_courses_by_url - search_products - search_products_by_url - search_schools - search_schools_by_url - search_companies_by_url - search_companies_by_params - search_sales_nav_companies_by_url - search_sales_nav_companies_by_params - similar_companies - company_employees - company_decision_makers - search_posts - search_posts_by_url - get_post_comments - get_post_reactors - get_post_resharers - search_param_id_lookup - search_sales_nav_param_id_lookup - search_recruiter_people_by_params - search_recruiter_people_by_url - search_recruiter_param_id_lookup additionalProperties: false status: type: object properties: eq: type: string enum: - pending - running - completed - rejected - failed ne: type: string enum: - pending - running - completed - rejected - failed in: type: array items: type: string enum: - pending - running - completed - rejected - failed nin: type: array items: type: string enum: - pending - running - completed - rejected - failed additionalProperties: false executed_on: type: object properties: eq: type: string enum: - own_account - infra_pool in: type: array items: type: string enum: - own_account - infra_pool is_null: type: boolean additionalProperties: false description: 'is_null:true ⇒ never dispatched (rejected / cache-served). `own_account` is what every dispatched row records. `infra_pool` is HISTORICAL: no run since 2026-08-16 produces it, so filtering on it matches only rows stored before that date.' served_from_cache: type: object properties: eq: type: boolean additionalProperties: false ln_member_id: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: Canonical person axis; ln_id/sn_id inputs normalize to this. 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 completed_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false description: is_null:true = still running or never ran. linkedin_account_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: The account that executed (or was asked to execute) the request. input_kind: type: object properties: eq: type: string enum: - ln_id - sn_id - nickname - ln_member_id - url - activity_urn - params - domain in: type: array items: type: string enum: - ln_id - sn_id - nickname - ln_member_id - url - activity_urn - params - domain additionalProperties: false input_value: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false description: 'The raw input as it was given, exact match: "did we already fetch this url / this slug".' ln_id: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: A profile URN; matches the PERSON (normalized to the member id), so a row stored under the Sales Navigator id is found too. sn_id: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: A Sales Navigator id; matches the person, like ln_id. nickname: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false cached_from_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false description: The row a cache-served request was answered from; eq = every request one fetch has served. error_code: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string is_null: type: boolean additionalProperties: false description: Why a request failed (not_found, linkedin_429, browser_not_alive, ...); is_null:false = everything that failed. idempotency_key: type: object properties: eq: type: string additionalProperties: false description: Exact-match retry-replay lookup. include: type: array items: type: string enum: - linkedin_account - cached_from description: Relations to eager-load (see entity Includes). sort: type: object properties: field: type: string enum: - created_at - completed_at 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. GetDataRequestResponse: 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 - 'null' kind: type: string enum: - enrich - scrape method: type: string enum: - person_lite_profile - person_basic_profile - person_full_profile - person_experience - person_skills - person_education - person_posts - person_featured - person_contact_info - person_languages - person_certifications - person_recommendations - person_comment_activity - person_reaction_activity - person_interests - person_services - company_profile - company_lite_profile - company_public_identifier - company_posts - post_details - get_activity_urn_by_url - search_people_by_url - search_people_by_params - search_sales_nav_people_by_url - search_sales_nav_people_by_params - search_service_providers - search_service_providers_by_url - similar_profiles - search_jobs - search_jobs_by_url - search_events - search_events_by_url - search_groups - search_groups_by_url - search_courses - search_courses_by_url - search_products - search_products_by_url - search_schools - search_schools_by_url - search_companies_by_url - search_companies_by_params - search_sales_nav_companies_by_url - search_sales_nav_companies_by_params - similar_companies - company_employees - company_decision_makers - search_posts - search_posts_by_url - get_post_comments - get_post_reactors - get_post_resharers - search_param_id_lookup - search_sales_nav_param_id_lookup - search_recruiter_people_by_params - search_recruiter_people_by_url - search_recruiter_param_id_lookup status: type: string enum: - pending - running - completed - rejected - failed input_kind: type: string enum: - ln_id - sn_id - nickname - ln_member_id - url - activity_urn - params - domain input_value: type: string ln_member_id: type: - string - 'null' ln_id: type: - string - 'null' sn_id: type: - string - 'null' nickname: type: - string - 'null' executed_on: type: - string - 'null' enum: - own_account - infra_pool served_from_cache: type: boolean cached_from_sid: type: - string - 'null' idempotency_key: type: - string - 'null' result_ref: anyOf: - type: string - type: object additionalProperties: {} - type: array items: {} - {} description: 'The stored result payload (inline object/array, or a string pointer). Null on the receipt a scrape / enrich response embeds as result.data_request: that response carries the data as rows / the item, and get_data_request by sid reads the stored payload back.' error_code: type: - string - 'null' created_by: type: - object - 'null' properties: actor_type: type: string enum: - user - support - api_key - system - agent actor_sid: type: string team_sid: type: string permissions: type: object additionalProperties: {} trace_id: type: - string - 'null' reason: type: - string - 'null' required: - actor_type - actor_sid - team_sid - permissions - reason created_at: type: string updated_at: type: string completed_at: type: - string - 'null' required: - sid - team_sid - linkedin_account_sid - kind - method - status - input_kind - input_value - ln_member_id - ln_id - sn_id - nickname - executed_on - served_from_cache - cached_from_sid - idempotency_key - result_ref - error_code - created_by - created_at - updated_at - completed_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 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