G2 · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the G2 API (v2)

10 actions 10 updates update extends ../openapi/g2-api-v2-openapi.yaml
Generated by API Evangelist Written by API Evangelist tooling for G2's API. It is a proposal applied on top of the contract, not a document G2 publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-reversalx-idempotentx-billablex-consequencex-agent-guidancex-api-evangelist-enrichedx-providerx-docs

Targets 10

$.info
$.servers
$.paths['/api/sandbox/products/{subject_product_id}/buyer_intent'].get
$.paths['/api/v2/products/{product_id}/g2_activate/unlocked_companies'].post
$.paths['/api/v2/users/me/research_boards'].post
$.paths['/api/v2/users/me/research_boards/{uuid}'].patch
$.paths['/api/v2/users/me/products/{product_id}/review'].post
$.components.schemas.Errors
$.components.securitySchemes.G2OAuth
$.components.securitySchemes.AccountAPIToken

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the G2 API (v2)
  version: 1.0.0
extends: ../openapi/g2-api-v2-openapi.yaml
x-provenance:
  generated: '2026-08-29'
  method: generated
  source: >-
    Derived from artifacts in this repo: conventions/g2-conventions.yml,
    errors/g2-problem-types.yml, rate-limits/g2-rate-limits.yml, sandbox/g2-sandbox.yml,
    mcp/g2-tool-crosswalk.yml. The original specification at
    https://data.g2.com/openapi/v2.yaml is never mutated.
  note: >-
    Everything asserted here is restated from G2's own contract or documentation. No behavior
    is invented.
actions:
  - target: $.info
    description: Record contact, licence-free status and the missing runtime facts the contract omits.
    update:
      x-api-evangelist-enriched: true
      x-provider: G2
      x-docs: https://documentation.g2.com/docs/g2-api
      x-developer-portal: https://my.g2.com/developers
      x-api-reference: https://data.g2.com/api/v2/docs/index.html
      x-media-type: application/vnd.api+json
      x-standard: JSON:API 1.0
      x-error-format: jsonapi-errors
      x-rfc9457: false
      x-rate-limit:
        limit: 100
        window: second
        scope: source-ip
        enforced_by: Cloudflare
        block_on_exhaustion_seconds: 60
        response_headers: none
      x-pagination:
        style: cursor
        size_param: 'page[size]'
        default: 25
        max: 250
        forward: 'page[after]'
        backward: 'page[before]'
      x-incremental-sync:
        filters: ['filter[updated_at_gt]', 'filter[updated_at_lt]', 'filter[created_at_gt]', 'filter[created_at_lt]']
      x-deprecation-policy: none published
      x-status-page: none published
      x-token-expiry: access tokens expire one year after creation
  - target: $.servers
    description: Note that the single server is templated on a defaultHost variable.
    update:
      - url: 'https://{defaultHost}'
        description: >-
          Templated server; defaultHost defaults to data.g2.com, the production API host.
        variables:
          defaultHost:
            default: data.g2.com
  - target: $.paths['/api/sandbox/products/{subject_product_id}/buyer_intent'].get
    description: Flag the only sandbox operation in the contract and bind it to its live twin.
    update:
      x-environment: sandbox
      x-live-twin: getBuyerIntentInteractions
      x-billable: false
  - target: $.paths['/api/v2/products/{product_id}/g2_activate/unlocked_companies'].post
    description: >-
      Flag the one billable, irreversible write in the contract and record the replay guarantee
      and partial-failure behavior G2 states in its own operation description.
    update:
      x-billable: true
      x-consequence: irreversible
      x-reversal: none
      x-idempotent: true
      x-idempotency-mechanism: natural key (opaque `sig` token)
      x-idempotency-replay-cost: 0 credits
      x-batch-cap: 25
      x-partial-failure: 'Always returns 200; per-sig failures appear in meta.skipped[]'
      x-rehearsal: getG2ActivateLockedCompanies
      x-precheck: getOrganizationCreditAccount
      x-agent-guidance: >-
        Confirm the credit balance and rehearse against locked_companies before calling. There
        is no refund, void or re-lock operation.
  - target: $.paths['/api/v2/users/me/research_boards'].post
    description: Record that create is reversible via delete, with no stated window.
    update:
      x-reversal: deleteResearchBoard
      x-reversal-window: not stated
      x-idempotent: false
  - target: $.paths['/api/v2/users/me/research_boards/{uuid}'].patch
    description: Record that update is a lossy overwrite with no restore path.
    update:
      x-reversal: none
      x-consequence: overwrite
      x-agent-guidance: >-
        Read the board with getResearchBoard and retain the prior state before patching; there
        is no version history or restore operation.
  - target: $.paths['/api/v2/users/me/products/{product_id}/review'].post
    description: Record upsert semantics.
    update:
      x-idempotent: upsert
      x-note: One review per user per product; replay updates rather than duplicating.
      x-reversal: none
  - target: $.components.schemas.Errors
    description: Name the envelope for agents that must branch on it.
    update:
      x-error-envelope: 'JSON:API errors array'
      x-machine-readable-code: false
      x-discriminator: 'HTTP status + errors[].title string'
      x-catalog: ../errors/g2-problem-types.yml
  - target: $.components.securitySchemes.G2OAuth
    description: Record the registration constraints that are not expressible in OpenAPI.
    update:
      x-dynamic-client-registration: false
      x-registration: https://my.g2.com/developers
      x-pkce: S256
      x-callback-returns-state: false
      x-scope-reference: ../scopes/g2-scopes.yml
  - target: $.components.securitySchemes.AccountAPIToken
    description: Record token lifetime and the per-endpoint permission grid.
    update:
      x-issued-at: https://my.g2.com/developers
      x-expiry: 1 year from creation
      x-permission-model: per-endpoint Access selection at token creation