Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: 3gppscout Com Positions API
version: 0.2.0
description: 'Operations tagged positions across 2 of this provider''s published API definitions: 3gppscout-com-openapi.json, api.json. Each path carries the servers of the definition it was published in.'
tags:
- name: Positions
paths:
/positions:
get:
tags:
- Positions
summary: Get Positions
description: 'Company positions from 3GPP contributions, each with a verbatim quote, and side-by-side comparison.
One company (`org`): its validated positions, optionally on a `topic` (matched by meaning), meeting, group,
agenda item, or stance. Several companies (`orgs=lekha-wireless,mavenir&topic=NTN timing advance`): compare
mode. `groups` puts each company''s positions about the same technical object side by side (`target_key`),
each group lists related meeting `decisions`, and `organizations` gives each company''s coverage: an empty
positions list with coverage means that company made no in-scope contribution on the topic.
Each position has stance (proposes, supports, opposes, prefers_alternative, raises_concern,
requests_clarification, observes), claim, quote (exact text from the contribution), unit_label, page,
target, and its TDoc (ID, title, doc_kind, status, meeting, agenda item, official_url). Only submitters and
co-submitters hold positions; summary editors never do.
How to answer a comparison: compare within each group, quote both sides, cite the decisions, and state each
company''s coverage. A position is a proposal, not an agreement.
Errors: 400 `invalid_parameter`, 409 `organization_ambiguous` (candidates returned), 503 `catalog_timeout`.'
operationId: get_company_positions
parameters:
- name: org
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'One company: name, alias, or org_id, e.g. ''Lekha Wireless''.'
title: Org
description: 'One company: name, alias, or org_id, e.g. ''Lekha Wireless''.'
- name: orgs
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Several companies to compare, comma-separated, e.g. 'lekha-wireless,mavenir'.
title: Orgs
description: Several companies to compare, comma-separated, e.g. 'lekha-wireless,mavenir'.
- name: topic
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Free-text topic matched by meaning, e.g. 'NTN timing advance'.
title: Topic
description: Free-text topic matched by meaning, e.g. 'NTN timing advance'.
- name: meeting
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated meeting IDs, e.g. R1-126.
title: Meeting
description: Comma-separated meeting IDs, e.g. R1-126.
- name: group
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated working groups, e.g. R1,R2.
title: Group
description: Comma-separated working groups, e.g. R1,R2.
- name: agenda_item
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Agenda item, e.g. 10.7.1 (use with meeting).
title: Agenda Item
description: Agenda item, e.g. 10.7.1 (use with meeting).
- name: stance
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Comma-separated stances: proposes, supports, opposes, prefers_alternative, raises_concern, requests_clarification, observes.'
title: Stance
description: 'Comma-separated stances: proposes, supports, opposes, prefers_alternative, raises_concern, requests_clarification, observes.'
- name: limit
in: query
required: false
schema:
type: integer
maximum: 60
minimum: 1
default: 20
title: Limit
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Cursor
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/positions/search:
post:
tags:
- Positions
summary: Search Positions
description: 'Search every company''s positions in 3GPP contributions: "who proposed what about X".
Matches by meaning and by exact term (IE names such as ta-CommonDrift, spec numbers, quoted phrases), then
reranks. Each result is one claim with all its submitting companies (`organizations`), stance, claim,
verbatim quote, target, page, and TDoc (ID, title, doc_kind, status, meeting, agenda item, official_url).
`companies` counts results per company. Optional filters: orgs, group, meeting, stance.
Positions are proposals and observations, not agreements; use list_meeting_decisions for outcomes. To put
two companies side by side, use get_company_positions with several orgs.
Errors: 400 `invalid_parameter`, 409 `organization_ambiguous`, 502 `search_unavailable`.'
operationId: search_positions
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PositionSearchRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
PositionSearchRequest:
properties:
query:
type: string
maxLength: 400
minLength: 2
title: Query
description: What to find, e.g. 'common TA drift' or 'K_offset update for LEO'.
orgs:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Orgs
description: Limit to these companies (names, aliases, or org_ids).
group:
anyOf:
- type: string
- type: 'null'
title: Group
description: Working group, e.g. R1 or RAN1.
meeting:
anyOf:
- type: string
- type: 'null'
title: Meeting
description: Meeting ID, e.g. R1-126.
stance:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Stance
description: 'Any of: proposes, supports, opposes, prefers_alternative, raises_concern, requests_clarification, observes.'
limit:
type: integer
maximum: 60.0
minimum: 1.0
title: Limit
default: 20
type: object
required:
- query
title: PositionSearchRequest
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
x-refined-from:
- 3gppscout-com-openapi.json
- api.json