Add BigBang Casino Aggregator API#2557
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces the initial OpenAPI 3.0.3 specification for the BigBang Casino Aggregator API, defining endpoints for listing games and providers, launching games in real-money and demo modes, and checking player session status. The review feedback suggests several key improvements to enhance API robustness and usability: adding pagination parameters to the /games endpoint to handle large catalogs, defining a 404 response for non-existent sessions on the /session/{id} endpoint, and explicitly marking required fields in both the Game and Provider schemas to ensure contract safety.
| parameters: | ||
| - name: provider | ||
| in: query | ||
| schema: { type: string } | ||
| description: Filter by provider slug (pragmatic-play, greentube, etc.) | ||
| - name: vertical | ||
| in: query | ||
| schema: | ||
| type: string | ||
| enum: [slot, live, crash, table, scratch, instant, bonus-buy] | ||
| - name: min_rtp | ||
| in: query | ||
| schema: { type: number, format: float } | ||
| description: Minimum RTP percentage (e.g. 96.5) | ||
| - name: volatility | ||
| in: query | ||
| schema: | ||
| type: string | ||
| enum: [low, medium, high, extreme] | ||
| - name: lang | ||
| in: query | ||
| schema: { type: string } | ||
| description: Language code (ISO 639-1) for game name localization |
There was a problem hiding this comment.
The /games endpoint returns a list of games (1,400+ as per description) and includes a count in the response, but it lacks pagination parameters (such as limit and offset or page). Returning the entire catalog in a single request can lead to performance bottlenecks and high memory usage. Consider adding pagination parameters to this endpoint.
parameters:
- name: provider
in: query
schema: { type: string }
description: Filter by provider slug (pragmatic-play, greentube, etc.)
- name: vertical
in: query
schema:
type: string
enum: [slot, live, crash, table, scratch, instant, bonus-buy]
- name: min_rtp
in: query
schema: { type: number, format: float }
description: Minimum RTP percentage (e.g. 96.5)
- name: volatility
in: query
schema:
type: string
enum: [low, medium, high, extreme]
- name: lang
in: query
schema: { type: string }
description: Language code (ISO 639-1) for game name localization
- name: limit
in: query
schema: { type: integer, default: 20, minimum: 1, maximum: 100 }
description: Number of items to return
- name: offset
in: query
schema: { type: integer, default: 0, minimum: 0 }
description: Number of items to skip| responses: | ||
| '200': | ||
| description: Session state | ||
| content: | ||
| application/json: | ||
| schema: | ||
| type: object | ||
| properties: | ||
| session_id: { type: string } | ||
| player_id: { type: string } | ||
| game_code: { type: string } | ||
| state: | ||
| type: string | ||
| enum: [active, ended, expired] | ||
| started_at: { type: string, format: date-time } | ||
| ended_at: { type: string, format: date-time, nullable: true } |
There was a problem hiding this comment.
The /session/{id} endpoint should define a 404 response for cases where the requested session ID does not exist, ensuring clients can handle non-existent sessions properly.
responses:
'200':
description: Session state
content:
application/json:
schema:
type: object
properties:
session_id: { type: string }
player_id: { type: string }
game_code: { type: string }
state:
type: string
enum: [active, ended, expired]
started_at: { type: string, format: date-time }
ended_at: { type: string, format: date-time, nullable: true }
'404':
description: Session not found| Game: | ||
| type: object | ||
| properties: | ||
| code: { type: string, example: vs20fruitsw } | ||
| name: { type: string, example: Sweet Bonanza } | ||
| provider: { type: string, example: pragmatic-play } | ||
| vertical: | ||
| type: string | ||
| enum: [slot, live, crash, table, scratch, instant, bonus-buy] | ||
| thumb: { type: string, format: uri } | ||
| rtp: { type: number, format: float, example: 96.51 } | ||
| volatility: | ||
| type: string | ||
| enum: [low, medium, high, extreme] | ||
| paylines: { type: integer, example: 20 } | ||
| max_win: { type: integer, description: Max win multiplier of bet, example: 21100 } | ||
| languages: { type: array, items: { type: string } } | ||
| currencies: { type: array, items: { type: string } } |
There was a problem hiding this comment.
The Game schema defines several properties but does not specify which ones are required. To ensure API clients can safely parse the response without encountering unexpected null values, please define the list of required properties (e.g., code, name, provider, vertical).
Game:
type: object
required: [code, name, provider, vertical]
properties:
code: { type: string, example: vs20fruitsw }
name: { type: string, example: Sweet Bonanza }
provider: { type: string, example: pragmatic-play }
vertical:
type: string
enum: [slot, live, crash, table, scratch, instant, bonus-buy]
thumb: { type: string, format: uri }
rtp: { type: number, format: float, example: 96.51 }
volatility:
type: string
enum: [low, medium, high, extreme]
paylines: { type: integer, example: 20 }
max_win: { type: integer, description: Max win multiplier of bet, example: 21100 }
languages: { type: array, items: { type: string } }
currencies: { type: array, items: { type: string } }| Provider: | ||
| type: object | ||
| properties: | ||
| slug: { type: string, example: pragmatic-play } | ||
| name: { type: string, example: Pragmatic Play } | ||
| game_count: { type: integer } | ||
| verticals: { type: array, items: { type: string } } |
There was a problem hiding this comment.
The Provider schema defines several properties but does not specify which ones are required. Defining required properties (e.g., slug, name) ensures better contract safety for clients.
Provider:
type: object
required: [slug, name]
properties:
slug: { type: string, example: pragmatic-play }
name: { type: string, example: Pragmatic Play }
game_count: { type: integer }
verticals: { type: array, items: { type: string } }
Adds the BigBang Casino Aggregator API to the directory.
Provider: bigbangcasino.bet
Category: entertainment
Spec source: https://api.bigbangcasino.bet/openapi.yaml (self-hosted)
B2B casino game aggregator API — 1,400+ games across 14 providers (Pragmatic Play, Greentube, Habanero, Evoplay,
Playtech, PG Soft, BGaming, 3 Oaks, Mascot Gaming, Inout Games, Gamzix, Hacksaw, Novomatic, Bellink). One signed REST
integration with normalized RGS callbacks. Free sandbox tier. Crypto-friendly billing.
Includes
x-apisguru-categories: [entertainment],x-providerName: bigbangcasino.bet,x-originpointing at theself-hosted spec, and
x-logowith brand color. YAML validates cleanly.