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 +2 -2
- package/package.json +1 -1
- package/payment/payment.proto +2 -0
- package/payment/payment_pb.js +49 -1
- package/user/user.proto +60 -0
- package/user/user_grpc_pb.js +68 -0
- package/user/user_pb.js +1952 -136
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
|
|
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
|
|
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
package/payment/payment.proto
CHANGED
|
@@ -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;
|
package/payment/payment_pb.js
CHANGED
|
@@ -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
|
+
}
|
package/user/user_grpc_pb.js
CHANGED
|
@@ -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,
|