OneSignal user and messaging API contracts with version-scope caveats.
Scope
Primary execution surface: hybrid.
Developer Source Map
RudderStack Cross-Check
RudderStack is used here only as secondary engineering evidence for discovery and cross-check.
| Destination | Type | Link |
|---|
one_signal | Discovery lead | source |
Verified Contracts
No verified rows in this revision.
Candidate / Needs Review Items
Event Contracts
| Object / Event | Field | Applies To | Type | Requirement | Exact Format | Normalization | Hashing | Examples | Caveat | Primary Source | Status | Confidence |
|---|
event | event_contract | hybrid | object | Conditional | Version-scoped contract is not fully pinned between legacy player and v2 user/event surfaces. | Not clearly specified | Not clearly specified | - | Blocker: legacy_vs_current_model_conflict — Legacy player model and v2 user/event semantics are mixed; event rows require version-scoped split before verification. | documentation.onesignal.com | Needs manual review | Low |
User Data Contracts
| Object / Event | Field | Applies To | Type | Requirement | Exact Format | Normalization | Hashing | Examples | Caveat | Primary Source | Status | Confidence |
|---|
user | user_data_contract | hybrid | object | Conditional | Version-scoped contract is not fully pinned between legacy player and v2 user/event surfaces. | Not clearly specified | Not clearly specified | - | Blocker: version_scope_ambiguity — User model v2 update semantics vs legacy player identifiers require explicit version-scoped row partitioning. | documentation.onesignal.com | Needs manual review | Low |
Normalization Rules
| Object / Event | Field | Applies To | Type | Requirement | Exact Format | Normalization | Hashing | Examples | Caveat | Primary Source | Status | Confidence |
|---|
normalization | normalization_contract | hybrid | string | Optional | Not clearly specified in one canonical row-level contract; see blocker/caveat. | Not clearly specified | Not clearly specified | - | Blocker: legacy_vs_current_model_conflict — Normalization semantics differ across legacy and v2 model surfaces and are not explicitly consolidated in one canonical contract. | documentation.onesignal.com | Needs manual review | Low |
Transport / Payload Rules
| Object / Event | Field | Applies To | Type | Requirement | Exact Format | Normalization | Hashing | Examples | Caveat | Primary Source | Status | Confidence |
|---|
request | endpoint | hybrid | object | Required | Version-scoped contract is not fully pinned between legacy player and v2 user/event surfaces. | Not clearly specified | Not clearly specified | - | Blocker: legacy_vs_current_model_conflict — Transport semantics vary across legacy and v2 endpoints; auth/update parity is not yet version-scoped and contract-complete. | documentation.onesignal.com | Needs manual review | Low |
Excluded Items
| Object / Event | Field | Caveat | Primary Source | Status | Confidence |
|---|
normalization | hashing_contract | Excluded: row_definition_missing — Investigated, but not supportable strongly enough for verified publication. | documentation.onesignal.com | Excluded | Low |
Last Reviewed
2026-03-31