protobuf-platform 1.2.670 → 1.2.672

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -9,7 +9,7 @@ Read [Project Rules](../../platform-rules/PROJECT_RULES.md) for the canonical sh
9
9
  - npm with `package-lock.json`; generated output is CommonJS. Run `npm run proto:build`, inspect generated diff, and review old/new producer-consumer compatibility (field tags/types, optional/default behavior, enum values, RPC methods and exports). Fix Critical/Medium findings before committing.
10
10
  - The build script uses `~/node-x64/bin/npm`; `proto:build:x64` uses `~/node-v22.21.1-darwin-x64/bin/npm`. Verify the selected local runtime and grpc-tools binary. `proto:install:x64` deletes node_modules AND the lockfile: it is a recovery script, not ordinary dependency installation.
11
11
  - For a contract release, prepare one version bump with `npm version patch --no-git-tag-version` (or the already-approved version), verify package.json and package-lock.json agree, review generated/package contents, and create a local atomic commit including version files. Avoid a second bump if already prepared.
12
- - For an explicitly approved additive change, run `npm publish` after validation and the release commit, using existing authorized registry credentials. Do not run `npm run publish-update` after preparing the version: it would bump again. On an ambiguous result, inspect the registry before retrying; never blindly republish or bump.
12
+ - For an approved contract release, run `npm publish` after validation and the release commit, using existing authorized registry credentials. Publication required by the approved contract is autonomous execution, including an approved breaking release after its compatibility/rollout decision; do not ask for a separate publication acknowledgement. Do not run `npm run publish-update` after preparing the version: it would bump again. On an ambiguous result, inspect the registry before retrying; never blindly republish or bump.
13
13
  - Local npm machine authentication was verified from this repository against `https://registry.npmjs.org/` on 2026-09-15; identity and package metadata resolved. Use the existing setup without requesting OTP or a manual publication handoff. This read-only check did not exercise publication permissions. If auth actually fails, diagnose the exact error and request only the minimum action needed to restore machine authentication; never expose a token.
14
14
  - Verify the exact release with `npm view protobuf-platform@<release-version> version`, then run only `sh sync_internal_libs.sh` directly in each affected service repository under the Project Rules. Verify installed/dependency/lockfile state and the expected contract, then continue the same master task automatically without a publication acknowledgement or manual sync handoff. Request human action only for genuinely unavailable authentication or permissions; never expose credentials.
15
15
  - package.json has no lint command; its test script is a failing placeholder. For documentation-only edits use diff/link review; generation is required when contracts change, not for editing these instructions.
@@ -227,6 +227,9 @@ message WagerPoint {
227
227
  optional string game_type = 7;
228
228
  optional int32 provider_id = 8;
229
229
  repeated int32 game_ids = 9;
230
+ optional int32 loyalty_level_id = 10;
231
+ optional double loyalty_multiplier = 11;
232
+ optional bool clear_loyalty_override = 12;
230
233
  }
231
234
  message PointItem {
232
235
  optional int32 id = 1;
@@ -9753,7 +9753,10 @@ proto.loyalty.WagerPoint.toObject = function(includeInstance, msg) {
9753
9753
  scope: jspb.Message.getFieldWithDefault(msg, 6, ""),
9754
9754
  gameType: jspb.Message.getFieldWithDefault(msg, 7, ""),
9755
9755
  providerId: jspb.Message.getFieldWithDefault(msg, 8, 0),
9756
- gameIdsList: (f = jspb.Message.getRepeatedField(msg, 9)) == null ? undefined : f
9756
+ gameIdsList: (f = jspb.Message.getRepeatedField(msg, 9)) == null ? undefined : f,
9757
+ loyaltyLevelId: jspb.Message.getFieldWithDefault(msg, 10, 0),
9758
+ loyaltyMultiplier: jspb.Message.getFloatingPointFieldWithDefault(msg, 11, 0.0),
9759
+ clearLoyaltyOverride: jspb.Message.getBooleanFieldWithDefault(msg, 12, false)
9757
9760
  };
9758
9761
 
9759
9762
  if (includeInstance) {
@@ -9828,6 +9831,18 @@ proto.loyalty.WagerPoint.deserializeBinaryFromReader = function(msg, reader) {
9828
9831
  msg.addGameIds(values[i]);
9829
9832
  }
9830
9833
  break;
9834
+ case 10:
9835
+ var value = /** @type {number} */ (reader.readInt32());
9836
+ msg.setLoyaltyLevelId(value);
9837
+ break;
9838
+ case 11:
9839
+ var value = /** @type {number} */ (reader.readDouble());
9840
+ msg.setLoyaltyMultiplier(value);
9841
+ break;
9842
+ case 12:
9843
+ var value = /** @type {boolean} */ (reader.readBool());
9844
+ msg.setClearLoyaltyOverride(value);
9845
+ break;
9831
9846
  default:
9832
9847
  reader.skipField();
9833
9848
  break;
@@ -9920,6 +9935,27 @@ proto.loyalty.WagerPoint.serializeBinaryToWriter = function(message, writer) {
9920
9935
  f
9921
9936
  );
9922
9937
  }
9938
+ f = /** @type {number} */ (jspb.Message.getField(message, 10));
9939
+ if (f != null) {
9940
+ writer.writeInt32(
9941
+ 10,
9942
+ f
9943
+ );
9944
+ }
9945
+ f = /** @type {number} */ (jspb.Message.getField(message, 11));
9946
+ if (f != null) {
9947
+ writer.writeDouble(
9948
+ 11,
9949
+ f
9950
+ );
9951
+ }
9952
+ f = /** @type {boolean} */ (jspb.Message.getField(message, 12));
9953
+ if (f != null) {
9954
+ writer.writeBool(
9955
+ 12,
9956
+ f
9957
+ );
9958
+ }
9923
9959
  };
9924
9960
 
9925
9961
 
@@ -10212,6 +10248,114 @@ proto.loyalty.WagerPoint.prototype.clearGameIdsList = function() {
10212
10248
  };
10213
10249
 
10214
10250
 
10251
+ /**
10252
+ * optional int32 loyalty_level_id = 10;
10253
+ * @return {number}
10254
+ */
10255
+ proto.loyalty.WagerPoint.prototype.getLoyaltyLevelId = function() {
10256
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
10257
+ };
10258
+
10259
+
10260
+ /**
10261
+ * @param {number} value
10262
+ * @return {!proto.loyalty.WagerPoint} returns this
10263
+ */
10264
+ proto.loyalty.WagerPoint.prototype.setLoyaltyLevelId = function(value) {
10265
+ return jspb.Message.setField(this, 10, value);
10266
+ };
10267
+
10268
+
10269
+ /**
10270
+ * Clears the field making it undefined.
10271
+ * @return {!proto.loyalty.WagerPoint} returns this
10272
+ */
10273
+ proto.loyalty.WagerPoint.prototype.clearLoyaltyLevelId = function() {
10274
+ return jspb.Message.setField(this, 10, undefined);
10275
+ };
10276
+
10277
+
10278
+ /**
10279
+ * Returns whether this field is set.
10280
+ * @return {boolean}
10281
+ */
10282
+ proto.loyalty.WagerPoint.prototype.hasLoyaltyLevelId = function() {
10283
+ return jspb.Message.getField(this, 10) != null;
10284
+ };
10285
+
10286
+
10287
+ /**
10288
+ * optional double loyalty_multiplier = 11;
10289
+ * @return {number}
10290
+ */
10291
+ proto.loyalty.WagerPoint.prototype.getLoyaltyMultiplier = function() {
10292
+ return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 11, 0.0));
10293
+ };
10294
+
10295
+
10296
+ /**
10297
+ * @param {number} value
10298
+ * @return {!proto.loyalty.WagerPoint} returns this
10299
+ */
10300
+ proto.loyalty.WagerPoint.prototype.setLoyaltyMultiplier = function(value) {
10301
+ return jspb.Message.setField(this, 11, value);
10302
+ };
10303
+
10304
+
10305
+ /**
10306
+ * Clears the field making it undefined.
10307
+ * @return {!proto.loyalty.WagerPoint} returns this
10308
+ */
10309
+ proto.loyalty.WagerPoint.prototype.clearLoyaltyMultiplier = function() {
10310
+ return jspb.Message.setField(this, 11, undefined);
10311
+ };
10312
+
10313
+
10314
+ /**
10315
+ * Returns whether this field is set.
10316
+ * @return {boolean}
10317
+ */
10318
+ proto.loyalty.WagerPoint.prototype.hasLoyaltyMultiplier = function() {
10319
+ return jspb.Message.getField(this, 11) != null;
10320
+ };
10321
+
10322
+
10323
+ /**
10324
+ * optional bool clear_loyalty_override = 12;
10325
+ * @return {boolean}
10326
+ */
10327
+ proto.loyalty.WagerPoint.prototype.getClearLoyaltyOverride = function() {
10328
+ return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));
10329
+ };
10330
+
10331
+
10332
+ /**
10333
+ * @param {boolean} value
10334
+ * @return {!proto.loyalty.WagerPoint} returns this
10335
+ */
10336
+ proto.loyalty.WagerPoint.prototype.setClearLoyaltyOverride = function(value) {
10337
+ return jspb.Message.setField(this, 12, value);
10338
+ };
10339
+
10340
+
10341
+ /**
10342
+ * Clears the field making it undefined.
10343
+ * @return {!proto.loyalty.WagerPoint} returns this
10344
+ */
10345
+ proto.loyalty.WagerPoint.prototype.clearClearLoyaltyOverride = function() {
10346
+ return jspb.Message.setField(this, 12, undefined);
10347
+ };
10348
+
10349
+
10350
+ /**
10351
+ * Returns whether this field is set.
10352
+ * @return {boolean}
10353
+ */
10354
+ proto.loyalty.WagerPoint.prototype.hasClearLoyaltyOverride = function() {
10355
+ return jspb.Message.getField(this, 12) != null;
10356
+ };
10357
+
10358
+
10215
10359
 
10216
10360
 
10217
10361
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "protobuf-platform",
3
- "version": "1.2.670",
3
+ "version": "1.2.672",
4
4
  "description": "Protobuf structures",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/user/user.proto CHANGED
@@ -7,6 +7,10 @@ service User {
7
7
  //Fetch settings for particular service
8
8
  rpc signUp(RegistrationRequest) returns (LoggedInResponse);
9
9
  rpc signIn(LoginRequest) returns (LoggedInResponse);
10
+ // Dedicated BackOffice batch import for player invitations.
11
+ rpc importPlayerInvitations(ImportPlayerInvitationsRequest) returns (ImportPlayerInvitationsResponse);
12
+ // Public neutral invitation activation. The token never contains an internal user id.
13
+ rpc activatePlayerInvitation(ActivatePlayerInvitationRequest) returns (ActivatePlayerInvitationResponse);
10
14
  rpc loginOrCreateTelegram(TelegramLoginRequest) returns (LoggedInResponse);
11
15
  rpc loginOrCreateTelegramOidc(TelegramOidcLoginRequest) returns (LoggedInResponse);
12
16
  rpc loginOrCreateGoogle(GoogleLoginRequest) returns (LoggedInResponse);
@@ -2657,3 +2661,59 @@ message PrecisionRgAdmissionResponse {
2657
2661
  string commit_receipt_id = 7;
2658
2662
  EvaluateResponsibleGamingDecisionResponse decision = 8;
2659
2663
  }
2664
+
2665
+ message ImportPlayerInvitationsRequest {
2666
+ bytes csv_bytes = 1;
2667
+ bool dry_run = 2;
2668
+ string batch_reference = 3;
2669
+ optional string csv_file_name = 4;
2670
+ }
2671
+
2672
+ message PlayerInvitationImportRowResult {
2673
+ int32 row_number = 1;
2674
+ string source_system = 2;
2675
+ string external_player_id = 3;
2676
+ string result_code = 4;
2677
+ optional string error_code = 5;
2678
+ optional string user_public_id = 6;
2679
+ optional string stage = 7;
2680
+ int64 duration_ms = 8;
2681
+ }
2682
+
2683
+ message PlayerInvitationImportBatchSummary {
2684
+ string batch_reference = 1;
2685
+ bool dry_run = 2;
2686
+ int32 total = 3;
2687
+ int32 created = 4;
2688
+ int32 already_imported = 5;
2689
+ int32 conflicts = 6;
2690
+ int32 failed = 7;
2691
+ int32 ready_for_invitation = 8;
2692
+ int64 duration_ms = 9;
2693
+ }
2694
+
2695
+ message ImportPlayerInvitationsResponse {
2696
+ PlayerInvitationImportBatchSummary summary = 1;
2697
+ repeated PlayerInvitationImportRowResult rows = 2;
2698
+ optional string invitation_csv_file_name = 3;
2699
+ optional string invitation_csv_content = 4;
2700
+ }
2701
+
2702
+ enum PlayerInvitationActivationOutcome {
2703
+ PLAYER_INVITATION_ACTIVATION_OUTCOME_UNSPECIFIED = 0;
2704
+ PLAYER_INVITATION_ACTIVATION_OUTCOME_ACTIVATED = 1;
2705
+ PLAYER_INVITATION_ACTIVATION_OUTCOME_INVALID = 2;
2706
+ PLAYER_INVITATION_ACTIVATION_OUTCOME_EXPIRED = 3;
2707
+ PLAYER_INVITATION_ACTIVATION_OUTCOME_ALREADY_USED = 4;
2708
+ PLAYER_INVITATION_ACTIVATION_OUTCOME_ALREADY_ACTIVATED = 5;
2709
+ }
2710
+
2711
+ message ActivatePlayerInvitationRequest {
2712
+ string token = 1;
2713
+ string password = 2;
2714
+ }
2715
+
2716
+ message ActivatePlayerInvitationResponse {
2717
+ PlayerInvitationActivationOutcome outcome = 1;
2718
+ optional string user_public_id = 2;
2719
+ }
@@ -4,6 +4,28 @@
4
4
  var grpc = require('@grpc/grpc-js');
5
5
  var user_pb = require('./user_pb.js');
6
6
 
7
+ function serialize_user_ActivatePlayerInvitationRequest(arg) {
8
+ if (!(arg instanceof user_pb.ActivatePlayerInvitationRequest)) {
9
+ throw new Error('Expected argument of type user.ActivatePlayerInvitationRequest');
10
+ }
11
+ return Buffer.from(arg.serializeBinary());
12
+ }
13
+
14
+ function deserialize_user_ActivatePlayerInvitationRequest(buffer_arg) {
15
+ return user_pb.ActivatePlayerInvitationRequest.deserializeBinary(new Uint8Array(buffer_arg));
16
+ }
17
+
18
+ function serialize_user_ActivatePlayerInvitationResponse(arg) {
19
+ if (!(arg instanceof user_pb.ActivatePlayerInvitationResponse)) {
20
+ throw new Error('Expected argument of type user.ActivatePlayerInvitationResponse');
21
+ }
22
+ return Buffer.from(arg.serializeBinary());
23
+ }
24
+
25
+ function deserialize_user_ActivatePlayerInvitationResponse(buffer_arg) {
26
+ return user_pb.ActivatePlayerInvitationResponse.deserializeBinary(new Uint8Array(buffer_arg));
27
+ }
28
+
7
29
  function serialize_user_AdminResetResponsibleGamingPolicyRequest(arg) {
8
30
  if (!(arg instanceof user_pb.AdminResetResponsibleGamingPolicyRequest)) {
9
31
  throw new Error('Expected argument of type user.AdminResetResponsibleGamingPolicyRequest');
@@ -741,6 +763,28 @@ function deserialize_user_GrantUserRewardResponse(buffer_arg) {
741
763
  return user_pb.GrantUserRewardResponse.deserializeBinary(new Uint8Array(buffer_arg));
742
764
  }
743
765
 
766
+ function serialize_user_ImportPlayerInvitationsRequest(arg) {
767
+ if (!(arg instanceof user_pb.ImportPlayerInvitationsRequest)) {
768
+ throw new Error('Expected argument of type user.ImportPlayerInvitationsRequest');
769
+ }
770
+ return Buffer.from(arg.serializeBinary());
771
+ }
772
+
773
+ function deserialize_user_ImportPlayerInvitationsRequest(buffer_arg) {
774
+ return user_pb.ImportPlayerInvitationsRequest.deserializeBinary(new Uint8Array(buffer_arg));
775
+ }
776
+
777
+ function serialize_user_ImportPlayerInvitationsResponse(arg) {
778
+ if (!(arg instanceof user_pb.ImportPlayerInvitationsResponse)) {
779
+ throw new Error('Expected argument of type user.ImportPlayerInvitationsResponse');
780
+ }
781
+ return Buffer.from(arg.serializeBinary());
782
+ }
783
+
784
+ function deserialize_user_ImportPlayerInvitationsResponse(buffer_arg) {
785
+ return user_pb.ImportPlayerInvitationsResponse.deserializeBinary(new Uint8Array(buffer_arg));
786
+ }
787
+
744
788
  function serialize_user_IngestUserKycDocumentToProviderRequest(arg) {
745
789
  if (!(arg instanceof user_pb.IngestUserKycDocumentToProviderRequest)) {
746
790
  throw new Error('Expected argument of type user.IngestUserKycDocumentToProviderRequest');
@@ -2570,6 +2614,30 @@ signUp: {
2570
2614
  responseSerialize: serialize_user_LoggedInResponse,
2571
2615
  responseDeserialize: deserialize_user_LoggedInResponse,
2572
2616
  },
2617
+ // Dedicated BackOffice batch import for player invitations.
2618
+ importPlayerInvitations: {
2619
+ path: '/user.User/importPlayerInvitations',
2620
+ requestStream: false,
2621
+ responseStream: false,
2622
+ requestType: user_pb.ImportPlayerInvitationsRequest,
2623
+ responseType: user_pb.ImportPlayerInvitationsResponse,
2624
+ requestSerialize: serialize_user_ImportPlayerInvitationsRequest,
2625
+ requestDeserialize: deserialize_user_ImportPlayerInvitationsRequest,
2626
+ responseSerialize: serialize_user_ImportPlayerInvitationsResponse,
2627
+ responseDeserialize: deserialize_user_ImportPlayerInvitationsResponse,
2628
+ },
2629
+ // Public neutral invitation activation. The token never contains an internal user id.
2630
+ activatePlayerInvitation: {
2631
+ path: '/user.User/activatePlayerInvitation',
2632
+ requestStream: false,
2633
+ responseStream: false,
2634
+ requestType: user_pb.ActivatePlayerInvitationRequest,
2635
+ responseType: user_pb.ActivatePlayerInvitationResponse,
2636
+ requestSerialize: serialize_user_ActivatePlayerInvitationRequest,
2637
+ requestDeserialize: deserialize_user_ActivatePlayerInvitationRequest,
2638
+ responseSerialize: serialize_user_ActivatePlayerInvitationResponse,
2639
+ responseDeserialize: deserialize_user_ActivatePlayerInvitationResponse,
2640
+ },
2573
2641
  loginOrCreateTelegram: {
2574
2642
  path: '/user.User/loginOrCreateTelegram',
2575
2643
  requestStream: false,