3GPP Scout Positions API

The positions API from 3GPP Scout — 2 operation(s) for positions.

Operations 2

GET /positions Get Positions #
POST /positions/search Search Positions #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/3gppscout-com:3gppscout-com-positions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

3gppscout-com-positions-api-openapi.yml Raw ↑
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