openapi: 3.2.0 info: title: Gtm Cloud Browser Sessions 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 cloud_browser_sessions 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: cloud_browser_sessions description: Registry package `mcp.linkedin/cloud_browser_sessions`, served on MCP mount `linkedin.browsers`. paths: /api/cloud-browser-sessions/metrics: post: operationId: get_cloud_browser_sessions_metrics summary: Cloud browser sessions metrics description: 'Period-bound aggregates over a filtered cloud-browser-session set. Requires period {from,to}. Returns total_count, active_count, avg_session_duration_seconds, login_success_rate, unique_devices_count and unique_ips_count. Optional filter and a single group_by axis (access_type / login_result / ip_country / antidetect_browser_sid / …). Contract: - MCP tool `get_cloud_browser_sessions_metrics`, registry package `mcp.linkedin/cloud_browser_sessions`, mount `linkedin.browsers`. - Operation `metrics`, response envelope `metrics`. - Flags: read only.' tags: - cloud_browser_sessions requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GetCloudBrowserSessionsMetricsRequest' responses: '200': description: '`metrics` success envelope.' content: application/json: schema: $ref: '#/components/schemas/GetCloudBrowserSessionsMetricsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: get_cloud_browser_sessions_metrics x-gtm-mcp-mount: linkedin.browsers x-gtm-entity: cloud_browser_sessions x-gtm-operation: metrics x-gtm-envelope: metrics 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/cloud-browser-sessions/search: post: operationId: search_cloud_browser_sessions summary: Search cloud browser sessions description: 'List cloud-browser sessions on the team with filters, sorting and cursor pagination. This is the audit trail of who connected to which browser, from where, and how each login attempt resolved. The smart-link access_key is redacted to cb_ak_ followed by asterisks and the key''s last 4 characters, so a session can be attributed to one of the browser''s access keys without exposing a redeemable token; it is null only when there was no key at all (an internal session). It is not a public filter. Contract: - MCP tool `search_cloud_browser_sessions`, registry package `mcp.linkedin/cloud_browser_sessions`, mount `linkedin.browsers`. - Operation `search`, response envelope `search`. - Flags: read only.' tags: - cloud_browser_sessions requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/SearchCloudBrowserSessionsRequest' responses: '200': description: '`search` success envelope.' content: application/json: schema: $ref: '#/components/schemas/SearchCloudBrowserSessionsResponse' 4XX: $ref: '#/components/responses/McpClientError' 5XX: $ref: '#/components/responses/McpServerError' x-gtm-mcp-tool: search_cloud_browser_sessions x-gtm-mcp-mount: linkedin.browsers x-gtm-entity: cloud_browser_sessions 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 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 SearchCloudBrowserSessionsResponse: 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 antidetect_browser_sid: type: string cloud_browser_sid: type: string linkedin_account_sid: type: - string - 'null' connected_user_sid: type: - string - 'null' access_key: type: - string - 'null' description: 'Masked smart-link key: cb_ak_ followed by asterisks and the key''s last 4 characters. Null when the session used no key at all (access_type internal). Join it to antidetect_browsers.cloud_browser_access[].key on the last 4 characters, never on equality.' access_type: type: string enum: - internal - external ip: type: string ip_country: type: - string - 'null' ip_city: type: - string - 'null' fingerprint: type: - object - 'null' properties: user_agent: type: string screen_resolution: type: string timezone: type: string language: type: string platform: type: string required: - user_agent - screen_resolution - timezone - language - platform fingerprint_hash: type: - string - 'null' referrer: type: - string - 'null' is_login_case: type: boolean login_confirmed_at: type: - string - 'null' login_result: type: - string - 'null' enum: - success - cookie_save_failed - browser_start_failed - abandoned login_error_reason: type: - string - 'null' connected_at: type: string disconnected_at: type: - string - 'null' session_duration_seconds: type: - number - 'null' disconnect_cause: type: - string - 'null' enum: - user - keep_alive_stale - ttl_expired - stuck_disconnecting - maintenance disconnect_reason: type: - string - 'null' created_at: type: string required: - sid - team_sid - antidetect_browser_sid - cloud_browser_sid - linkedin_account_sid - connected_user_sid - access_key - access_type - ip - ip_country - ip_city - fingerprint - fingerprint_hash - referrer - is_login_case - login_confirmed_at - login_result - login_error_reason - connected_at - disconnected_at - session_duration_seconds - disconnect_cause - disconnect_reason - created_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 GetCloudBrowserSessionsMetricsRequest: type: object description: Request body of `get_cloud_browser_sessions_metrics`. properties: filter: type: object properties: sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false antidetect_browser_sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false cloud_browser_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 is_null: type: boolean additionalProperties: false connected_user_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false access_type: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string additionalProperties: false ip: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false ip_country: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false ip_city: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false fingerprint_hash: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false is_login_case: type: object properties: eq: type: boolean additionalProperties: false login_result: 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 login_confirmed_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false connected_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false disconnected_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false session_duration_seconds: type: object properties: gte: type: integer lte: type: integer gt: type: integer lt: type: integer is_null: type: boolean additionalProperties: false disconnect_cause: 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 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 period: type: object properties: from: type: string description: ISO 8601 UTC window start (inclusive). to: type: string description: ISO 8601 UTC window end (exclusive); must be after from. required: - from - to description: Required metrics window [from, to). group_by: type: string enum: - access_type - login_result - is_login_case - ip_country - antidetect_browser_sid - linkedin_account_sid - connected_user_sid - disconnect_cause description: Optional single split axis. required: - period GetCloudBrowserSessionsMetricsResponse: type: object properties: success: type: boolean enum: - true operation: type: string enum: - metrics metrics: type: object properties: filter: type: object additionalProperties: {} period: type: object properties: from: type: string to: type: string required: - from - to aggregated: type: object properties: counts: type: object additionalProperties: {} metrics: type: object properties: avg_session_duration_seconds: type: - number - 'null' p95_session_duration_seconds: type: - number - 'null' unique_ips_count: type: number unique_devices_count: type: number login_success_rate: type: - number - 'null' required: - avg_session_duration_seconds - p95_session_duration_seconds - unique_ips_count - unique_devices_count - login_success_rate metrics: type: object properties: avg_session_duration_seconds: type: - number - 'null' p95_session_duration_seconds: type: - number - 'null' unique_ips_count: type: number unique_devices_count: type: number login_success_rate: type: - number - 'null' required: - avg_session_duration_seconds - p95_session_duration_seconds - unique_ips_count - unique_devices_count - login_success_rate applied_filters: 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 - metrics - meta SearchCloudBrowserSessionsRequest: type: object description: Request body of `search_cloud_browser_sessions`. properties: filter: type: object properties: sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false antidetect_browser_sid: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false cloud_browser_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 is_null: type: boolean additionalProperties: false connected_user_sid: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false access_type: type: object properties: eq: type: string ne: type: string in: type: array items: type: string nin: type: array items: type: string additionalProperties: false ip: type: object properties: eq: type: string in: type: array items: type: string additionalProperties: false ip_country: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false ip_city: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false fingerprint_hash: type: object properties: eq: type: string in: type: array items: type: string is_null: type: boolean additionalProperties: false is_login_case: type: object properties: eq: type: boolean additionalProperties: false login_result: 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 login_confirmed_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false connected_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string additionalProperties: false disconnected_at: type: object properties: gte: type: string lte: type: string gt: type: string lt: type: string is_null: type: boolean additionalProperties: false session_duration_seconds: type: object properties: gte: type: integer lte: type: integer gt: type: integer lt: type: integer is_null: type: boolean additionalProperties: false disconnect_cause: 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 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 sort: type: object properties: field: type: string 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. 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