protobuf-platform 1.2.669 → 1.2.671

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
@@ -2,14 +2,14 @@
2
2
 
3
3
  Read [Project Rules](../../platform-rules/PROJECT_RULES.md) for the canonical shared execution policy; this file specializes the protobuf commands.
4
4
 
5
- - Repository directory: `protobuf`; npm package: `protobuf-platform`. Work locally on `main`, never switch to local `staging`. The Project Rules' final push command targets `origin HEAD:staging` without changing this local branch; do not execute it without explicit push authorization. This is a contract package, not a running service; it owns no database, queues or migrations.
5
+ - Repository directory: `protobuf`; npm package: `protobuf-platform`. Work locally on `main`, never switch to local `staging`, and never apply the service-staging push flow to this repository. Protobuf `main` mutation, publication and push follow the dedicated lifecycle in Project Rules. This is a contract package, not a running service; it owns no database, queues or migrations.
6
6
  - Inspect this repository first for every business master task. Reuse existing contracts when sufficient and record `PROTOBUF_CHANGE_NOT_REQUIRED` when no change is needed.
7
7
  - A new/material contract decision or breaking change needs explicit approval of that exact change; additive approval never authorizes breaking compatibility. If approval is missing, report `PROTOBUF_CHANGE_APPROVAL_REQUIRED` with the exact contract, insufficiency, compatibility and affected repositories. Contract work precedes dependent implementation.
8
8
  - Sources are domain `*.proto` files; `update_protobuf.sh` writes colocated `*_pb.js` and `*_grpc_pb.js`; `index.js` exports domain bindings.
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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "protobuf-platform",
3
- "version": "1.2.669",
3
+ "version": "1.2.671",
4
4
  "description": "Protobuf structures",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -614,6 +614,8 @@ message AttemptWithdrawalRequest {
614
614
  optional string request_currency = 39;
615
615
  optional string antifraud_session = 40;
616
616
  optional string user_agent = 41;
617
+ // Card security code for the withdrawal attempt. Consumers must keep it transient.
618
+ optional string cvv = 42;
617
619
  }
618
620
  message GetWithdrawalRequest {
619
621
  int32 id = 1;
@@ -24791,7 +24791,8 @@ proto.payment.AttemptWithdrawalRequest.toObject = function(includeInstance, msg)
24791
24791
  cryptoWallet: jspb.Message.getFieldWithDefault(msg, 38, ""),
24792
24792
  requestCurrency: jspb.Message.getFieldWithDefault(msg, 39, ""),
24793
24793
  antifraudSession: jspb.Message.getFieldWithDefault(msg, 40, ""),
24794
- userAgent: jspb.Message.getFieldWithDefault(msg, 41, "")
24794
+ userAgent: jspb.Message.getFieldWithDefault(msg, 41, ""),
24795
+ cvv: jspb.Message.getFieldWithDefault(msg, 42, "")
24795
24796
  };
24796
24797
 
24797
24798
  if (includeInstance) {
@@ -24992,6 +24993,10 @@ proto.payment.AttemptWithdrawalRequest.deserializeBinaryFromReader = function(ms
24992
24993
  var value = /** @type {string} */ (reader.readString());
24993
24994
  msg.setUserAgent(value);
24994
24995
  break;
24996
+ case 42:
24997
+ var value = /** @type {string} */ (reader.readString());
24998
+ msg.setCvv(value);
24999
+ break;
24995
25000
  default:
24996
25001
  reader.skipField();
24997
25002
  break;
@@ -25308,6 +25313,13 @@ proto.payment.AttemptWithdrawalRequest.serializeBinaryToWriter = function(messag
25308
25313
  f
25309
25314
  );
25310
25315
  }
25316
+ f = /** @type {string} */ (jspb.Message.getField(message, 42));
25317
+ if (f != null) {
25318
+ writer.writeString(
25319
+ 42,
25320
+ f
25321
+ );
25322
+ }
25311
25323
  };
25312
25324
 
25313
25325
 
@@ -26733,6 +26745,42 @@ proto.payment.AttemptWithdrawalRequest.prototype.hasUserAgent = function() {
26733
26745
  };
26734
26746
 
26735
26747
 
26748
+ /**
26749
+ * optional string cvv = 42;
26750
+ * @return {string}
26751
+ */
26752
+ proto.payment.AttemptWithdrawalRequest.prototype.getCvv = function() {
26753
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 42, ""));
26754
+ };
26755
+
26756
+
26757
+ /**
26758
+ * @param {string} value
26759
+ * @return {!proto.payment.AttemptWithdrawalRequest} returns this
26760
+ */
26761
+ proto.payment.AttemptWithdrawalRequest.prototype.setCvv = function(value) {
26762
+ return jspb.Message.setField(this, 42, value);
26763
+ };
26764
+
26765
+
26766
+ /**
26767
+ * Clears the field making it undefined.
26768
+ * @return {!proto.payment.AttemptWithdrawalRequest} returns this
26769
+ */
26770
+ proto.payment.AttemptWithdrawalRequest.prototype.clearCvv = function() {
26771
+ return jspb.Message.setField(this, 42, undefined);
26772
+ };
26773
+
26774
+
26775
+ /**
26776
+ * Returns whether this field is set.
26777
+ * @return {boolean}
26778
+ */
26779
+ proto.payment.AttemptWithdrawalRequest.prototype.hasCvv = function() {
26780
+ return jspb.Message.getField(this, 42) != null;
26781
+ };
26782
+
26783
+
26736
26784
 
26737
26785
 
26738
26786
 
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,