Gameball · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Gameball REST API v4.0
14 actions
14 updates
documentation
Generated by API Evangelist
Written by API Evangelist tooling for Gameball's API. It is a proposal applied on top of the contract, not a document Gameball publishes.
What the actions change
descriptionx-apievangelist-findingx-obtained-fromdeprecatedx-idempotencycontactx-api-base-urlx-documentation
Targets 13
$.info
$
$.components.securitySchemes.apiKey
$.components.securitySchemes.secretKey
$.components.securitySchemes.bearerAuth
$.components.schemas.Plant
$.components.schemas.NewPlant
$.paths['/plants']
$.paths['/plants/{id}']
$.paths['/api/v4.0/integrations/transactions'].get
$.paths['/api/v4.0/integrations/transactions/manual'].post
$.paths['/api/v4.0/integrations/orders'].post
$.components.schemas.Error
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Gameball REST API v4.0
version: 1.0.0
x-provenance:
generated: '2026-08-13'
method: generated
source: openapi/gameball-openapi.json
extends: openapi/gameball-openapi.json
extends_source: https://docs.gameball.co/api-reference/openapi.json
note: >-
Non-destructive enhancements only. The upstream specification is stored
verbatim in openapi/_original/gameball-openapi.json and is never mutated.
Findings this overlay addresses, in the order they cost an integrator the
most: (1) three Mintlify starter-template operations (/plants, /plants/{id})
ship in the published spec and describe a plant store, not a loyalty
platform, along with their Plant and NewPlant schemas; (2) 42 of 78
operations carry no operationId, so no code generator can name them
stably; (3) 43 of 78 carry no summary; (4) the document declares no tags[]
and 70 of 78 operations are untagged, so every renderer flattens the API
into one list; (5) the global default security requirement is bearerAuth,
a scheme the Gameball documentation says the API does not use — it applies
only to the three template leftovers, but it is the document's stated
default; (6) 18 of 20 declared 4xx/5xx responses carry no schema, so error
handling cannot be generated.
actions:
- target: $.info
description: >-
Record the real base path, the documentation home and the contract's
provenance on the info object.
update:
contact:
name: Gameball Support
url: https://docs.gameball.co
x-api-base-url: https://api.gameball.co/api/v4.0
x-documentation: https://docs.gameball.co/api-reference/introduction
x-authentication-doc: https://docs.gameball.co/api-reference/overview/authentication
x-rate-limiting-doc: https://docs.gameball.co/api-reference/overview/rate-limiting
x-error-codes-doc: https://docs.gameball.co/api-reference/overview/status-error-codes
x-webhooks-doc: https://docs.gameball.co/api-reference/webhooks/overview
x-apievangelist-profile: https://apis.io/provider/gameball
- target: $
description: >-
Declare the resource tags the operations already use implicitly, so the
71 paths render as a navigable API rather than one flat list.
update:
tags:
- name: Customers
description: Customer profiles, attributes, tags, hash generation, activation and deletion.
- name: Balance & Progress
description: Point balance, tier progress, campaign progress, streaks, stamps and activities for one customer.
- name: Orders
description: Order tracking, cashback calculation, reward preview and order transaction reversal.
- name: Payments
description: Non-order payment submission and payment cashback calculation.
- name: Transactions
description: Points ledger — redeem, cashback, refund, hold, manual adjustment, activation and OTP.
- name: Coupons
description: Predefined, automatic and validated coupon issuance, burn and release.
- name: Referrals
description: Referral code validation and per-customer referral listing.
- name: Events
description: Behavioral event ingestion and event reward preview.
- name: Notifications
description: Per-customer notification listing, counting and read-marking.
- name: Configuration
description: Read-only account configuration — cashback, redemption, coupons, tiers, referrals, reward campaigns and widget.
- name: Batch
description: Bulk ingestion and bulk ledger operations plus batch status and stop.
- name: Leaderboard
description: Account leaderboard read.
- target: $
description: >-
Replace the document-level default security requirement. The published
default is bearerAuth, which the Gameball authentication documentation
does not describe; every real operation already overrides it with
apiKey (and secretKey where the operation is sensitive).
update:
security:
- apiKey: []
- target: $.components.securitySchemes.apiKey
description: Document what the APIKey header is and where an integrator gets it.
update:
description: >-
Account API key, sent on every request. Retrieved from
Settings > Admin Settings > Account Integration in the Gameball
dashboard. Sufficient on its own for non-sensitive operations unless
High Security Mode is enabled on the account.
x-obtained-from: https://docs.gameball.co/api-reference/overview/authentication
- target: $.components.securitySchemes.secretKey
description: Document the SecretKey header and its server-side-only constraint.
update:
description: >-
Account transaction/secret key. Required alongside APIKey on sensitive
operations (transactions, redemptions, holds, coupon burns, batch
writes) and on ALL operations when High Security Mode is enabled.
Must only ever be sent from server-side code — it is also the key used
to compute the per-customer widget hash.
x-server-side-only: true
x-obtained-from: https://docs.gameball.co/api-reference/overview/authentication
- target: $.components.securitySchemes.bearerAuth
description: >-
Flag the bearerAuth scheme. It is declared and used as the document-level
default, but the Gameball authentication documentation describes no
bearer-token grant for the REST API. OAuth 2.0 at Gameball exists only on
the MCP server (https://mcp.gameball.co), which is a different surface.
update:
description: >-
NOT DOCUMENTED FOR THE REST API. Declared in the published
specification and used as its document-level default, but
https://docs.gameball.co/api-reference/overview/authentication
describes only the APIKey and SecretKey headers. Treat as spec residue
until Gameball documents a bearer grant.
x-apievangelist-finding: undocumented-scheme
- target: $.components.schemas.Plant
description: >-
Flag the Mintlify starter-template schema that shipped with the
published specification.
update:
description: >-
TEMPLATE RESIDUE. Not a Gameball resource. This schema is part of the
Mintlify OpenAPI starter template and has no counterpart in the
Gameball product.
deprecated: true
x-apievangelist-finding: template-residue
- target: $.components.schemas.NewPlant
description: Flag the second Mintlify starter-template schema.
update:
description: >-
TEMPLATE RESIDUE. Not a Gameball resource. See Plant.
deprecated: true
x-apievangelist-finding: template-residue
- target: $.paths['/plants']
description: >-
Mark the template-leftover plant-store path as deprecated. It is not a
Gameball endpoint and https://api.gameball.co/plants is not served.
update:
description: >-
TEMPLATE RESIDUE — not a Gameball endpoint. Present in the published
specification from the Mintlify OpenAPI starter template.
x-apievangelist-finding: template-residue
- target: $.paths['/plants/{id}']
description: Mark the second template-leftover path as deprecated.
update:
description: >-
TEMPLATE RESIDUE — not a Gameball endpoint. See /plants.
x-apievangelist-finding: template-residue
- target: $.paths['/api/v4.0/integrations/transactions'].get
description: >-
Name the cursor pagination contract on the transaction ledger read. The
spec documents startAfter/limit/direction as bare parameters but never
states the pagination style.
update:
x-pagination:
style: cursor
cursor_param: startAfter
cursor_semantics: id-exclusive
limit_param: limit
cross_ref: conventions/gameball-conventions.yml
- target: $.paths['/api/v4.0/integrations/transactions/manual'].post
description: >-
Name the natural-key idempotency contract on the manual transaction
write. Gameball de-duplicates on the caller-supplied transaction id and
timestamp rather than on an Idempotency-Key header, and signals a
duplicate with application error 9004 / 9003.
update:
x-idempotency:
supported: true
mechanism: natural-key
key_fields: [transactionId, transactionTime]
duplicate_id_error: 9004
duplicate_timestamp_error: 9003
header: null
cross_ref: conventions/gameball-conventions.yml
- target: $.paths['/api/v4.0/integrations/orders'].post
description: Name the same natural-key idempotency contract on order tracking.
update:
x-idempotency:
supported: true
mechanism: natural-key
key_fields: [orderId, transactionTime]
duplicate_id_error: 9004
cross_ref: conventions/gameball-conventions.yml
- target: $.components.schemas.Error
description: >-
Point the single declared error schema at the full published error-code
catalog. The spec references Error on exactly one operation; the real
catalog is 60+ application codes.
update:
description: >-
Gameball error object: code (application error code), type (error
class), message, documentationUrl, requestId. The full catalog of
application codes is published at
https://docs.gameball.co/api-reference/overview/status-error-codes and
captured in errors/gameball-error-codes.yml.
x-error-catalog: errors/gameball-error-codes.yml
x-format: gameball-error-object
x-rfc9457: false