Skip to content

Conversation

@gcatanese
Copy link
Contributor

In this branch LEM services and models have been updated to support LEM v4.

See our documentation:

Note: generation of comments (attribute description) needs to be improved, to do in a different ticket.

Changes

Breaking Changes 🛠

  • BusinessLine: remove capability
  • SourceOfFunds: remove acquiringBusinessLineId
  • SourceOfFunds: make adyenProcessedFunds required

Other Changes 💎

  • Individual: add support
  • Organization: add support , doingBusinessAsAbsent, registrationNumberAbsent
  • SoleProprietorship: add doingBusinessAsAbsent, registrationNumberAbsent
  • Trust: add doingBusinessAsAbsent
  • UnincorporatedPartnership: add doingBusinessAsAbsent
  • ServiceEnum: add new value"issuing"
  • SourceOfFunds: add several new attributes (amount, assetMonthsHeld, etc..)
  • SourceOfFunds: add array of Financier
  • SourceOfFunds. TypeEnum: add several new values ("employment", "donations", etc..)
  • TaxInformation: add numberAbsent
  • Document: add proofOfDirector

@gcatanese gcatanese requested review from a team as code owners October 15, 2025 09:10
@gemini-code-assist
Copy link

Summary of Changes

Hello @gcatanese, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request updates the client library to align with version 4 of the Legal Entity Management (LEM) API. The changes involve a comprehensive overhaul of existing models, including the removal of deprecated fields, the introduction of new data structures and fields to support expanded functionalities, and updates to API endpoints. This ensures compatibility with the latest LEM API specification and provides access to new features for managing legal entities.

Highlights

  • API Version Update: The Legal Entity Management (LEM) API has been updated from version 3 to version 4 across all relevant services and models.
  • Breaking Changes: The BusinessLine model no longer includes the capability field, and the SourceOfFunds model has removed acquiringBusinessLineId and made adyenProcessedFunds a required attribute.
  • New Model Fields: Several models have been enhanced with new fields: Individual now includes support; Organization has new fields like support, doingBusinessAsAbsent, and registrationNumberAbsent; SoleProprietorship, Trust, and UnincorporatedPartnership also gain doingBusinessAsAbsent; TaxInformation includes numberAbsent; and Document now supports proofOfDirector.
  • Expanded SourceOfFunds: The SourceOfFunds model has been significantly expanded with new attributes such as amount, assetMonthsHeld, cryptocurrencyExchange, dateOfFundsReceived, dateOfSourceEvent, originatorLegalEntityId, purpose, relationship, and website. Additionally, a new Financier model has been introduced and integrated into SourceOfFunds.
  • Enum Additions: The ServiceEnum in BusinessLine now includes an 'issuing' value, and the SourceOfFunds.TypeEnum has been greatly expanded to include various new income types like 'employment', 'donations', 'inheritance', and more.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the Legal Entity Management API models and services to v4. The changes, including breaking changes, new fields, and enum values, are mostly well-implemented and align with the PR description. My review focuses on a few areas for improvement, primarily around ensuring API contracts are strictly enforced in the code (especially for required fields) and documenting all source-breaking changes, such as the re-ordering of enum integer values.

Comment on lines +48 to +58
/// <summary>
/// Enum Issuing for value: issuing
/// </summary>
[EnumMember(Value = "issuing")]
Issuing = 2,

/// <summary>
/// Enum Banking for value: banking
/// </summary>
[EnumMember(Value = "banking")]
Banking = 2
Banking = 3

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The underlying integer value for Banking in ServiceEnum has changed from 2 to 3 due to the insertion of the new Issuing member. This is a source-breaking change for consumers who might rely on the integer values of enums. To maintain backward compatibility of integer values, it's recommended to append new enum members at the end. Please consider keeping Banking = 2 and assigning Issuing = 3.

            /// <summary>
            /// Enum Banking for value: banking
            /// </summary>
            [EnumMember(Value = "banking")]
            Banking = 2,

            /// <summary>
            /// Enum Issuing for value: issuing
            /// </summary>
            [EnumMember(Value = "issuing")]
            Issuing = 3

Comment on lines +48 to +58
/// <summary>
/// Enum Issuing for value: issuing
/// </summary>
[EnumMember(Value = "issuing")]
Issuing = 2,

/// <summary>
/// Enum Banking for value: banking
/// </summary>
[EnumMember(Value = "banking")]
Banking = 2
Banking = 3

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The underlying integer value for Banking in ServiceEnum has changed from 2 to 3 due to the insertion of the new Issuing member. This is a source-breaking change for consumers who might rely on the integer values of enums. To maintain backward compatibility, it's recommended to append new enum members at the end. Please consider keeping Banking = 2 and assigning Issuing = 3.

            /// <summary>
            /// Enum Banking for value: banking
            /// </summary>
            [EnumMember(Value = "banking")]
            Banking = 2,

            /// <summary>
            /// Enum Issuing for value: issuing
            /// </summary>
            [EnumMember(Value = "issuing")]
            Issuing = 3

Comment on lines 42 to 66
/// <summary>
/// Enum GbSortCode for value: gbSortCode
/// Enum AuBsbCode for value: auBsbCode
/// </summary>
[EnumMember(Value = "gbSortCode")]
GbSortCode = 1,
[EnumMember(Value = "auBsbCode")]
AuBsbCode = 1,

/// <summary>
/// Enum UsRoutingNumber for value: usRoutingNumber
/// Enum CaRoutingNumber for value: caRoutingNumber
/// </summary>
[EnumMember(Value = "usRoutingNumber")]
UsRoutingNumber = 2,
[EnumMember(Value = "caRoutingNumber")]
CaRoutingNumber = 2,

/// <summary>
/// Enum AuBsbCode for value: auBsbCode
/// Enum GbSortCode for value: gbSortCode
/// </summary>
[EnumMember(Value = "auBsbCode")]
AuBsbCode = 3,
[EnumMember(Value = "gbSortCode")]
GbSortCode = 3,

/// <summary>
/// Enum CaRoutingNumber for value: caRoutingNumber
/// Enum UsRoutingNumber for value: usRoutingNumber
/// </summary>
[EnumMember(Value = "caRoutingNumber")]
CaRoutingNumber = 4
[EnumMember(Value = "usRoutingNumber")]
UsRoutingNumber = 4

}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The underlying integer values of TypeEnum have been reordered, which is a source-breaking change for consumers who might cast these enum values to integers. For example, GbSortCode was 1 and is now 3. While the library's README warns against relying on enum integer values, this change should be explicitly documented in the pull request description as a breaking change to alert consumers.

@gcatanese gcatanese merged commit 8b295eb into main Oct 20, 2025
4 checks passed
@gcatanese gcatanese deleted the lem-v4 branch October 20, 2025 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant