Skip to content

Commit 0758efd

Browse files
BRBussyclaude
andauthored
Enhance compliance client API and add user profile search (#266)
* start extension * industry classisiication * update * add client status, vat registration, contact details and business name to compliance client proto Extend client.proto with creation_date, status (ClientStatus enum), verification_status_reason, description, paas_agreement_version, and roles fields. Extend company.proto with vat_registration_number, contact_details, and business_name fields. Add new client_status.proto with CLIENT_STATUS_ACTIVE, CLIENT_STATUS_INACTIVE, and CLIENT_STATUS_COMPLETE_PROFILE values. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * client upgrades * typo * fix: remove stale BatchGetUserProfilesByUser doc examples that broke Go tests The RPC method was removed from protobuf definitions but the generated documentation examples were not cleaned up, causing compilation failures. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * relocate business name --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5719012 commit 0758efd

44 files changed

Lines changed: 2226 additions & 279 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"log"
6+
7+
clientv1 "github.com/meshtrade/api/go/compliance/client/v1"
8+
)
9+
10+
func main() {
11+
ctx := context.Background()
12+
13+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
14+
// environment variable or default discovery methods. Zero config required
15+
// unless you want custom configuration.
16+
service, err := clientv1.NewClientService()
17+
if err != nil {
18+
log.Fatalf("Failed to create service: %v", err)
19+
}
20+
defer service.Close()
21+
22+
// Fail verification with comments explaining the reason
23+
request := &clientv1.FailClientVerificationRequest{
24+
Client: "compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR",
25+
Comments: []string{"Missing proof of address documentation"},
26+
}
27+
28+
// Call the FailClientVerification method
29+
client, err := service.FailClientVerification(ctx, request)
30+
if err != nil {
31+
log.Fatalf("FailClientVerification failed: %v", err)
32+
}
33+
34+
log.Printf("Verification failed, status: %s", client.VerificationStatus)
35+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import co.meshtrade.api.compliance.client.v1.ClientService;
2+
import co.meshtrade.api.compliance.client.v1.Service.FailClientVerificationRequest;
3+
import co.meshtrade.api.compliance.client.v1.Client.Client;
4+
5+
import java.util.Optional;
6+
7+
public class FailClientVerificationExample {
8+
public static void main(String[] args) {
9+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
10+
// environment variable or default discovery methods. Zero config required
11+
// unless you want custom configuration.
12+
try (ClientService service = new ClientService()) {
13+
// Fail verification with comments explaining the reason
14+
FailClientVerificationRequest request = FailClientVerificationRequest.newBuilder()
15+
.setClient("compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR")
16+
.addComments("Missing proof of address documentation")
17+
.build();
18+
19+
// Call the FailClientVerification method
20+
Client client = service.failClientVerification(request, Optional.empty());
21+
22+
System.out.println("Verification failed, status: " + client.getVerificationStatus());
23+
} catch (Exception e) {
24+
System.err.println("FailClientVerification failed: " + e.getMessage());
25+
e.printStackTrace();
26+
}
27+
}
28+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from meshtrade.compliance.client.v1 import (
2+
ClientService,
3+
FailClientVerificationRequest,
4+
)
5+
6+
7+
def main():
8+
# Default configuration is used and credentials come from MESH_API_CREDENTIALS
9+
# environment variable or default discovery methods. Zero config required
10+
# unless you want custom configuration.
11+
service = ClientService()
12+
13+
with service:
14+
# Fail verification with comments explaining the reason
15+
request = FailClientVerificationRequest(
16+
client="compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR",
17+
comments=["Missing proof of address documentation"],
18+
)
19+
20+
# Call the FailClientVerification method
21+
client = service.fail_client_verification(request)
22+
23+
print(f"Verification failed, status: {client.verification_status}")
24+
25+
26+
if __name__ == "__main__":
27+
main()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"log"
6+
"time"
7+
8+
clientv1 "github.com/meshtrade/api/go/compliance/client/v1"
9+
"google.golang.org/protobuf/types/known/timestamppb"
10+
)
11+
12+
func main() {
13+
ctx := context.Background()
14+
15+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
16+
// environment variable or default discovery methods. Zero config required
17+
// unless you want custom configuration.
18+
service, err := clientv1.NewClientService()
19+
if err != nil {
20+
log.Fatalf("Failed to create service: %v", err)
21+
}
22+
defer service.Close()
23+
24+
// Mark client as verified with next review date in one year
25+
request := &clientv1.MarkClientVerifiedRequest{
26+
Client: "compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR",
27+
NextVerificationDate: timestamppb.New(time.Now().AddDate(1, 0, 0)),
28+
}
29+
30+
// Call the MarkClientVerified method
31+
client, err := service.MarkClientVerified(ctx, request)
32+
if err != nil {
33+
log.Fatalf("MarkClientVerified failed: %v", err)
34+
}
35+
36+
log.Printf("Client verified, next review: %s", client.NextVerificationDate.AsTime())
37+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import co.meshtrade.api.compliance.client.v1.ClientService;
2+
import co.meshtrade.api.compliance.client.v1.Service.MarkClientVerifiedRequest;
3+
import co.meshtrade.api.compliance.client.v1.Client.Client;
4+
import com.google.protobuf.Timestamp;
5+
6+
import java.time.Instant;
7+
import java.time.temporal.ChronoUnit;
8+
import java.util.Optional;
9+
10+
public class MarkClientVerifiedExample {
11+
public static void main(String[] args) {
12+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
13+
// environment variable or default discovery methods. Zero config required
14+
// unless you want custom configuration.
15+
try (ClientService service = new ClientService()) {
16+
// Mark client as verified with next review date in one year
17+
Instant nextReview = Instant.now().plus(365, ChronoUnit.DAYS);
18+
Timestamp nextVerificationDate = Timestamp.newBuilder()
19+
.setSeconds(nextReview.getEpochSecond())
20+
.setNanos(nextReview.getNano())
21+
.build();
22+
23+
MarkClientVerifiedRequest request = MarkClientVerifiedRequest.newBuilder()
24+
.setClient("compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR")
25+
.setNextVerificationDate(nextVerificationDate)
26+
.build();
27+
28+
// Call the MarkClientVerified method
29+
Client client = service.markClientVerified(request, Optional.empty());
30+
31+
System.out.println("Client verified, next review: " + client.getNextVerificationDate());
32+
} catch (Exception e) {
33+
System.err.println("MarkClientVerified failed: " + e.getMessage());
34+
e.printStackTrace();
35+
}
36+
}
37+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from datetime import datetime, timedelta
2+
3+
from google.protobuf.timestamp_pb2 import Timestamp
4+
5+
from meshtrade.compliance.client.v1 import (
6+
ClientService,
7+
MarkClientVerifiedRequest,
8+
)
9+
10+
11+
def main():
12+
# Default configuration is used and credentials come from MESH_API_CREDENTIALS
13+
# environment variable or default discovery methods. Zero config required
14+
# unless you want custom configuration.
15+
service = ClientService()
16+
17+
with service:
18+
# Mark client as verified with next review date in one year
19+
next_review = Timestamp()
20+
next_review.FromDatetime(datetime.now() + timedelta(days=365))
21+
22+
request = MarkClientVerifiedRequest(
23+
client="compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR",
24+
next_verification_date=next_review,
25+
)
26+
27+
# Call the MarkClientVerified method
28+
client = service.mark_client_verified(request)
29+
30+
print(f"Client verified, next review: {client.next_verification_date}")
31+
32+
33+
if __name__ == "__main__":
34+
main()
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"log"
6+
7+
clientv1 "github.com/meshtrade/api/go/compliance/client/v1"
8+
)
9+
10+
func main() {
11+
ctx := context.Background()
12+
13+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
14+
// environment variable or default discovery methods. Zero config required
15+
// unless you want custom configuration.
16+
service, err := clientv1.NewClientService()
17+
if err != nil {
18+
log.Fatalf("Failed to create service: %v", err)
19+
}
20+
defer service.Close()
21+
22+
// Start verification for a client
23+
request := &clientv1.StartClientVerificationRequest{
24+
Client: "compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR",
25+
}
26+
27+
// Call the StartClientVerification method
28+
client, err := service.StartClientVerification(ctx, request)
29+
if err != nil {
30+
log.Fatalf("StartClientVerification failed: %v", err)
31+
}
32+
33+
log.Printf("Verification started, status: %s", client.VerificationStatus)
34+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import co.meshtrade.api.compliance.client.v1.ClientService;
2+
import co.meshtrade.api.compliance.client.v1.Service.StartClientVerificationRequest;
3+
import co.meshtrade.api.compliance.client.v1.Client.Client;
4+
5+
import java.util.Optional;
6+
7+
public class StartClientVerificationExample {
8+
public static void main(String[] args) {
9+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
10+
// environment variable or default discovery methods. Zero config required
11+
// unless you want custom configuration.
12+
try (ClientService service = new ClientService()) {
13+
// Start verification for a client
14+
StartClientVerificationRequest request = StartClientVerificationRequest.newBuilder()
15+
.setClient("compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR")
16+
.build();
17+
18+
// Call the StartClientVerification method
19+
Client client = service.startClientVerification(request, Optional.empty());
20+
21+
System.out.println("Verification started, status: " + client.getVerificationStatus());
22+
} catch (Exception e) {
23+
System.err.println("StartClientVerification failed: " + e.getMessage());
24+
e.printStackTrace();
25+
}
26+
}
27+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from meshtrade.compliance.client.v1 import (
2+
ClientService,
3+
StartClientVerificationRequest,
4+
)
5+
6+
7+
def main():
8+
# Default configuration is used and credentials come from MESH_API_CREDENTIALS
9+
# environment variable or default discovery methods. Zero config required
10+
# unless you want custom configuration.
11+
service = ClientService()
12+
13+
with service:
14+
# Start verification for a client
15+
request = StartClientVerificationRequest(client="compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR")
16+
17+
# Call the StartClientVerification method
18+
client = service.start_client_verification(request)
19+
20+
print(f"Verification started, status: {client.verification_status}")
21+
22+
23+
if __name__ == "__main__":
24+
main()
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"log"
6+
7+
clientv1 "github.com/meshtrade/api/go/compliance/client/v1"
8+
)
9+
10+
func main() {
11+
ctx := context.Background()
12+
13+
// Default configuration is used and credentials come from MESH_API_CREDENTIALS
14+
// environment variable or default discovery methods. Zero config required
15+
// unless you want custom configuration.
16+
service, err := clientv1.NewClientService()
17+
if err != nil {
18+
log.Fatalf("Failed to create service: %v", err)
19+
}
20+
defer service.Close()
21+
22+
// Update the client's display name
23+
request := &clientv1.UpdateClientRequest{
24+
Client: &clientv1.Client{
25+
Name: "compliance/clients/01HQZXYZ9ABCDEFGHIJKLMNPQR",
26+
DisplayName: "Updated Client Name",
27+
ShortName: "UCN",
28+
},
29+
}
30+
31+
// Call the UpdateClient method
32+
client, err := service.UpdateClient(ctx, request)
33+
if err != nil {
34+
log.Fatalf("UpdateClient failed: %v", err)
35+
}
36+
37+
log.Printf("Client updated: %s", client.DisplayName)
38+
}

0 commit comments

Comments
 (0)