Operator API: your integration must ensure forward compatibility
Announced: October 5, 2026
Action required by: 20 October 2026
We regularly extend the Operator API with new optional fields to support new features. These are additive, non-breaking changes. However, integrations that validate our payloads strictly and reject any unknown field can fail when a new field appears. This notice sets out what we expect from every Operator integration, and what to change if your implementation validates strictly today.
What's changing?
As part of normal API evolution, Hub88 may add new optional fields to:
Requests Hub88 sends to you. This includes Wallet API calls to your endpoints, such as
/transaction/bet,/transaction/win,/transaction/rollbackand/user/balance.Responses Hub88 returns to you. This includes Games API, Freebets API and Transactions API responses.
We may also add new values to existing enum-like fields.
These changes are made without a version bump. Your integration must accept them without failing.
Why is it changing?
Until now, our documentation hasn't stated how Operators should handle new fields. Some serialisation libraries reject unknown fields by default, including Java/Jackson, where FAIL_ON_UNKNOWN_PROPERTIES is enabled by default. The Wallet API carries the most risk. If your wallet rejects a Hub88 request because it contains a new field, bets, wins and rollbacks can fail in production.
We're making the rule explicit so that every integration is built for it.
Impact
If your integration already ignores unknown fields, no action is needed.
If your integration uses strict schema validation, a future Hub88 release that adds a field could cause your requests to fail. Common examples are Jackson with default settings, Go's
DisallowUnknownFields, Pydanticextra="forbid", and custom JSON Schema validators withadditionalProperties: false. On the Wallet API, a failed request means a failed bet, win or rollback.
⚠️ Action required by 20 October 2026
Review how your integration deserialises Hub88 payloads, and make sure that:
Unknown fields are ignored, not rejected.
New values in enum-like fields are handled where possible.
X-Hub88-Signatureis verified against the raw request body. Always verify the signature against the exact bytes you received, before deserialising. If you deserialise first and then re-serialise the object to verify it, any unknown fields you drop will change the body, and signature verification will fail.
After 20 October 2026, Hub88 will continue to add optional fields as described above. An integration that rejects unknown fields may fail when those fields are released.
Technical Guidance
The examples below target the following current language/framework versions. Implementations using older major versions should consult the corresponding version-specific documentation, as JSON deserialization defaults and APIs differ between major releases.
Java — JDK 25+ with Jackson Databind 3.2.x
Configure Jackson to tolerate fields added to the API response. In Jackson 3.x, unknown JSON properties are ignored by default, so no additional configuration is required for this behavior. If the application explicitly enables strict unknown-property handling, ensure that
FAIL_ON_UNKNOWN_PROPERTIESis disabled.For individual models where the behavior should be explicit, use the Jackson 3.x equivalent of
@JsonIgnoreProperties(ignoreUnknown = true).For enum-like fields, do not assume that the server will never introduce new values. Use a nullable/fallback representation or an explicit custom deserializer where appropriate. If using Jackson enum deserialization, configure an appropriate unknown-enum fallback rather than allowing a newly introduced value to fail the entire response.
Important: verify
X-Hub88-Signatureagainst the raw HTTP request body bytes, before JSON deserialization. Do not deserialize and re-serialize the request body and then calculate the signature, because unknown fields, field ordering, whitespace, escaping, or other serialization differences can change the signed payload. Jackson's JSON deserialization should therefore happen only after signature verification.
Go — Go 1.27+ (
encoding/json)The standard
encoding/jsondecoder ignores unknown JSON object fields when unmarshalling into a struct by default. Do not callDecoder.DisallowUnknownFields()for Hub88 API responses, as doing so would make the client incompatible with newly added response fields.If the application uses the newer
encoding/json/v2API, retain its default behavior of ignoring unknown members; do not enableRejectUnknownMembersfor these API responses.For enum-like fields represented by a custom Go type, implement unmarshalling so that an unknown string value does not cause the entire response to fail. Prefer a fallback such as an
Unknownvalue or preserve the raw string where the business logic permits.Important: verify
X-Hub88-Signatureagainst the raw HTTP request body bytes before callingjson.Unmarshal/Decoder.Decode. Never marshal the decoded Go struct back to JSON and use that output for signature verification.
Python — Python 3.13+ with Pydantic 2.13.x
Configure Pydantic models to ignore additional fields using
ConfigDict(extra='ignore'). This is also Pydantic's default behavior, but specifying it explicitly is recommended for API models where forward compatibility is an intentional requirement.Do not use
extra='forbid'for Hub88 API responses, because a newly introduced response field would cause validation to fail.For enum-like fields, avoid making the model fail solely because Hub88 introduces a new value. Where appropriate, model the field as a string or provide a custom validation strategy that preserves an unknown value/falls back to an
UNKNOWNrepresentation.Important: verify
X-Hub88-Signatureagainst the raw HTTP request body bytes before passing the payload tomodel_validate_json()or another Pydantic validation method. Do not validate, convert, and then re-serialize the Pydantic model for signature verification.
General rule: Hub88 response models must be forward-compatible with additive changes. Clients should ignore unknown response fields and tolerate newly introduced enum-like values where the field's semantics allow it. Signature verification is separate from deserialization and must always operate on the original raw request body.
If you have any questions or need support updating your integration, please contact your Hub88 account manager or our technical support team.
Last updated
Was this helpful?

