Skip to content

MX-203: Fix the API 03. TRANSFER TO THIRD PARTY - #120

Merged
IOhacker merged 1 commit into
openMF:developfrom
IOhacker:develop
Apr 12, 2026
Merged

MX-203: Fix the API 03. TRANSFER TO THIRD PARTY#120
IOhacker merged 1 commit into
openMF:developfrom
IOhacker:develop

Conversation

@IOhacker

@IOhacker IOhacker commented Apr 12, 2026

Copy link
Copy Markdown
Contributor

MX-203: Fix the API 03. TRANSFER TO THIRD PARTY

Summary by CodeRabbit

  • New Features

    • Enabled self-service transfers by adding required permissions and request parameters.
    • Improved transfer validation and daily-limit handling.
  • Chores

    • Transfer amount now uses a higher-precision numeric type for improved financial accuracy.
    • Account number fields in client, loan, and savings APIs changed to string to preserve formatting (e.g., leading zeros).

@coderabbitai

coderabbitai Bot commented Apr 12, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@IOhacker has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 11 minutes and 57 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 11 minutes and 57 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1192e40e-3dea-44f7-8b58-974603108fe8

📥 Commits

Reviewing files that changed from the base of the PR and between 9e72524 and 1d172a4.

📒 Files selected for processing (9)
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/account/data/SelfAccountTransferDataValidator.java
  • src/main/java/org/apache/fineract/selfservice/client/api/SelfClientsApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/loanaccount/api/SelfLoansApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java
  • src/main/java/org/apache/fineract/selfservice/savings/api/SelfSavingsAccountApiResourceSwagger.java
  • src/main/resources/db/changelog/tenant/module/selfservice/module-changelog-master.xml
  • src/main/resources/db/changelog/tenant/module/selfservice/parts/008-grant-selfservice-savings-account-create-transfer-permissions.xml
📝 Walkthrough

Walkthrough

Reworks self-service account transfer creation to accept raw JSON, validate it, and log a CommandWrapper via the command service instead of directly invoking the account-transfers API; adds transfer-related API constants, updates Swagger types (BigDecimal/String) and adds Liquibase changelogs to grant selfservice permissions.

Changes

Cohort / File(s) Summary
Account Transfer Resource & Validator
src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java, src/main/java/org/apache/fineract/selfservice/account/data/SelfAccountTransferDataValidator.java
create(...) now accepts raw JSON (String) and builds/logs a CommandWrapper via commandsSourceWritePlatformService instead of delegating; validator updated to validate raw JSON and treat null total as zero in daily-limit logic; signature and parameter handling changed.
Account Transfer Swagger DTO
src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java
PostNewTransferRequest.transferAmount changed from Float to BigDecimal; whitespace/indentation adjusted.
Client & Loan Swagger DTOs
src/main/java/org/apache/fineract/selfservice/client/api/SelfClientsApiResourceSwagger.java, src/main/java/org/apache/fineract/selfservice/loanaccount/api/SelfLoansApiResourceSwagger.java
Several nested response DTOs: accountNo fields changed from Long to String.
Savings Swagger DTO (formatting)
src/main/java/org/apache/fineract/selfservice/savings/api/SelfSavingsAccountApiResourceSwagger.java
Whitespace and indentation-only changes.
API Constants
src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java
Added public transfer-related parameter constants and exported unmodifiable set CREATE_TRANSFER_REQUEST_DATA_PARAMETERS.
Liquibase changelogs
src/main/resources/db/changelog/tenant/module/selfservice/module-changelog-master.xml, .../parts/006-grant-selfservice-savings-account-read-permissions.xml, .../parts/008-grant-selfservice-savings-account-create-transfer-permissions.xml
Added include for new permissions changelog; updated existing permission SQL code reference and added a new idempotent changelog to grant create-transfer/read-savingsaccount permission to Self Service User role.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant SelfServiceAPI as SelfAccountTransferApiResource
    participant Validator as SelfAccountTransferDataValidator
    participant CommandService as PortfolioCommandSourceWritePlatformService
    participant DB as Database

    Client->>SelfServiceAPI: POST /accounttransfers (raw JSON)
    SelfServiceAPI->>Validator: validateCreate(type, rawJson)
    Validator-->>SelfServiceAPI: validation result
    SelfServiceAPI->>CommandService: logCommandSource(CommandWrapper(createAccountTransfer, rawJson))
    CommandService->>DB: persist command / enqueue processing
    DB-->>CommandService: ack
    CommandService-->>SelfServiceAPI: CommandProcessingResult
    SelfServiceAPI-->>Client: return CommandProcessingResult
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

⏱️ 10-30 Min Review

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title references the specific API feature being fixed (Transfer to Third Party) and includes an issue identifier (MX-203), directly corresponding to changes in the SelfAccountTransferApiResource and related transfer validation/permissions logic.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (2)
src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java (2)

108-109: Add Jakarta validation on request body.

Annotate the request object with @Valid and enforce DTO constraints at the API boundary.

As per coding guidelines, "Validate inputs with @Valid and Jakarta validation annotations."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`
around lines 108 - 109, In the SelfAccountTransferApiResource#create method,
annotate the request parameter AccountTransferRequest apiRequestBodyAsJson with
`@Valid` so Jakarta Bean Validation runs at the API boundary, add the
corresponding import (jakarta.validation.Valid), and ensure
AccountTransferRequest DTO has appropriate constraint annotations (e.g.,
`@NotNull/`@Size) to be enforced; this makes validation occur automatically when
the create(...) method is invoked.

117-148: Move limit-check logic out of the controller.

checkForLimits(...) contains business rules and should live in an application/service component to keep controller responsibilities narrow.

As per coding guidelines, "Controllers must delegate all logic to application or domain layers."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`
around lines 117 - 148, Move the business rules out of the controller by
extracting checkForLimits into an application/service class (e.g.,
SelfAccountTransferLimitService) and have SelfAccountTransferApiResource call
that service; specifically, create a method validateTransferLimits(...) that
contains the current logic which uses
tptBeneficiaryReadPlatformService.getTransferLimit(...),
configurationDomainService.isDailyTPTLimitEnabled()/getDailyTPTLimit(), and
accountTransfersReadPlatformService.getTotalTransactionAmount(...), and preserve
the thrown exceptions BeneficiaryTransferLimitExceededException and
DailyTPTTransactionAmountLimitExceededException; inject the new service into
SelfAccountTransferApiResource, replace the internal checkForLimits call with a
delegate call to validateTransferLimits(fromAccount, toAccount, transactionDate,
transactionAmount, userId) and remove business logic from the controller method.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`:
- Around line 140-145: The current guard skips enforcement when
totTransactionAmount is null or zero; instead treat null as BigDecimal.ZERO and
always validate the single transfer and the aggregate. Replace the conditional
using totTransactionAmount with: compute BigDecimal currentTotal =
(totTransactionAmount == null ? BigDecimal.ZERO : totTransactionAmount) and then
if (dailyTPTLimitBD.compareTo(transactionAmount) < 0 ||
dailyTPTLimitBD.compareTo(currentTotal.add(transactionAmount)) < 0) throw the
existing DailyTPTTransactionAmountLimitExceededException (use
fromAccount.getAccountId() and fromAccount.getAccountType() as before). Ensure
you reference totTransactionAmount, transactionAmount, dailyTPTLimitBD and the
exception class in the updated check.
- Around line 108-110: The call to validateCreate currently passes
apiRequestBodyAsJson.toString(), which is not valid JSON; update the create
method to either (A) pass a real JSON string produced by a serializer (e.g.,
serialize AccountTransferRequest to JSON with your configured ObjectMapper) into
validateCreate(type, jsonString) so fromApiJsonHelper.parse() can succeed, or
(B) change validateCreate to accept the typed DTO and validate its fields
directly (e.g., add an overload validateCreate(String type,
AccountTransferRequest dto) or extract fields from AccountTransferRequest and
call existing validation helpers). Locate the create method in
SelfAccountTransferApiResource and adjust the call to validateCreate or the
validateCreate signature accordingly (references: AccountTransferRequest,
create(...), validateCreate(...), fromApiJsonHelper.parse()).

In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java`:
- Around line 131-132: The Schema example for the dateFormat field uses the
week-based year token "YYYY" which can be incorrect around year boundaries;
update the `@Schema` example on the public String dateFormat field in
SelfAccountTransferApiResourceSwagger to use the calendar-year token "yyyy"
(e.g., change "dd  MMMM YYYY" to "dd  MMMM yyyy").

---

Nitpick comments:
In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`:
- Around line 108-109: In the SelfAccountTransferApiResource#create method,
annotate the request parameter AccountTransferRequest apiRequestBodyAsJson with
`@Valid` so Jakarta Bean Validation runs at the API boundary, add the
corresponding import (jakarta.validation.Valid), and ensure
AccountTransferRequest DTO has appropriate constraint annotations (e.g.,
`@NotNull/`@Size) to be enforced; this makes validation occur automatically when
the create(...) method is invoked.
- Around line 117-148: Move the business rules out of the controller by
extracting checkForLimits into an application/service class (e.g.,
SelfAccountTransferLimitService) and have SelfAccountTransferApiResource call
that service; specifically, create a method validateTransferLimits(...) that
contains the current logic which uses
tptBeneficiaryReadPlatformService.getTransferLimit(...),
configurationDomainService.isDailyTPTLimitEnabled()/getDailyTPTLimit(), and
accountTransfersReadPlatformService.getTotalTransactionAmount(...), and preserve
the thrown exceptions BeneficiaryTransferLimitExceededException and
DailyTPTTransactionAmountLimitExceededException; inject the new service into
SelfAccountTransferApiResource, replace the internal checkForLimits call with a
delegate call to validateTransferLimits(fromAccount, toAccount, transactionDate,
transactionAmount, userId) and remove business logic from the controller method.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5ee92fee-e6fd-42bb-941c-8c475817c9da

📥 Commits

Reviewing files that changed from the base of the PR and between 8bc5e49 and 63f978e.

📒 Files selected for processing (6)
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/account/data/SelfAccountTransferDataValidator.java
  • src/main/java/org/apache/fineract/selfservice/client/api/SelfClientsApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/loanaccount/api/SelfLoansApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/savings/api/SelfSavingsAccountApiResourceSwagger.java

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (3)
src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java (1)

48-60: Rename newly added constant fields to UPPER_CASE.

These public static final fields are introduced in camelCase; please align them with Java constant convention.

Proposed refactor
-    public static final String toOfficeIdParamName = "toOfficeId";
-    public static final String toClientIdParamName = "toClientId";
-    public static final String toAccountTypeParamName = "toAccountType";
+    public static final String TO_OFFICE_ID_PARAM_NAME = "toOfficeId";
+    public static final String TO_CLIENT_ID_PARAM_NAME = "toClientId";
+    public static final String TO_ACCOUNT_TYPE_PARAM_NAME = "toAccountType";

As per coding guidelines, "Constants: UPPER_CASE."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java`
around lines 48 - 60, The new public static final fields in
SelfServiceApiConstants use camelCase; rename each to UPPER_CASE (e.g.,
toOfficeIdParamName -> TO_OFFICE_ID_PARAM_NAME, toClientIdParamName ->
TO_CLIENT_ID_PARAM_NAME, toAccountTypeParamName -> TO_ACCOUNT_TYPE_PARAM_NAME,
toAccountIdParamName -> TO_ACCOUNT_ID_PARAM_NAME, transferDateParamName ->
TRANSFER_DATE_PARAM_NAME, transferAmountParamName -> TRANSFER_AMOUNT_PARAM_NAME,
transferDescriptionParamName -> TRANSFER_DESCRIPTION_PARAM_NAME,
dateFormatParamName -> DATE_FORMAT_PARAM_NAME, localeParamName ->
LOCALE_PARAM_NAME, fromAccountIdParamName -> FROM_ACCOUNT_ID_PARAM_NAME,
fromAccountTypeParamName -> FROM_ACCOUNT_TYPE_PARAM_NAME, fromClientIdParamName
-> FROM_CLIENT_ID_PARAM_NAME, fromOfficeIdParamName ->
FROM_OFFICE_ID_PARAM_NAME) and update all usages across the codebase to
reference the new names.
src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java (2)

140-140: Prefer BigDecimal.valueOf() over new BigDecimal(Long).

Same recommendation as above for consistency.

Proposed fix
-                BigDecimal dailyTPTLimitBD = new BigDecimal(dailyTPTLimit);
+                BigDecimal dailyTPTLimitBD = BigDecimal.valueOf(dailyTPTLimit);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`
at line 140, Replace the direct BigDecimal constructor usage for
long-to-BigDecimal conversion to use BigDecimal.valueOf to avoid unexpected
behavior; locate the instantiation of dailyTPTLimitBD in
SelfAccountTransferApiResource (the line creating BigDecimal dailyTPTLimitBD =
new BigDecimal(dailyTPTLimit)) and change it to use
BigDecimal.valueOf(dailyTPTLimit) so the long value is converted safely and
consistently.

131-135: Prefer BigDecimal.valueOf() over new BigDecimal(Long).

Using BigDecimal.valueOf(long) is preferred as it may reuse cached instances for small values.

Proposed fix
         if (transferLimit != null && transferLimit > 0) {
-            if (transactionAmount.compareTo(new BigDecimal(transferLimit)) > 0) {
+            if (transactionAmount.compareTo(BigDecimal.valueOf(transferLimit)) > 0) {
                 throw new BeneficiaryTransferLimitExceededException();
             }
         }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`
around lines 131 - 135, The comparison uses new BigDecimal(transferLimit);
replace that with BigDecimal.valueOf(transferLimit) to avoid creating
unnecessary BigDecimal instances — locate the code inside
SelfAccountTransferApiResource where transactionAmount is compared to new
BigDecimal(transferLimit) (using the transferLimit variable) and change it to
transactionAmount.compareTo(BigDecimal.valueOf(transferLimit)) so the logic and
exception throw (BeneficiaryTransferLimitExceededException) remain the same.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`:
- Line 69: Remove the unused field accountTransfersApiResource from the
SelfAccountTransferApiResource class and delete its corresponding import: locate
the private final AccountTransfersApiResource accountTransfersApiResource
declaration in SelfAccountTransferApiResource and remove it, and also remove the
AccountTransfersApiResource import statement since the class now uses
commandsSourceWritePlatformService.logCommandSource() and no longer references
accountTransfersApiResource.

In
`@src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java`:
- Line 47: The comment "Funds Tranfer parameters" in SelfServiceApiConstants
(the transfer section) contains a typo; change "Tranfer" to "Transfer" so it
reads "Funds Transfer parameters" and ensure the surrounding comment remains
consistent with other comments in the class (look for the existing comment near
the transfer-related constants).

---

Nitpick comments:
In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java`:
- Line 140: Replace the direct BigDecimal constructor usage for
long-to-BigDecimal conversion to use BigDecimal.valueOf to avoid unexpected
behavior; locate the instantiation of dailyTPTLimitBD in
SelfAccountTransferApiResource (the line creating BigDecimal dailyTPTLimitBD =
new BigDecimal(dailyTPTLimit)) and change it to use
BigDecimal.valueOf(dailyTPTLimit) so the long value is converted safely and
consistently.
- Around line 131-135: The comparison uses new BigDecimal(transferLimit);
replace that with BigDecimal.valueOf(transferLimit) to avoid creating
unnecessary BigDecimal instances — locate the code inside
SelfAccountTransferApiResource where transactionAmount is compared to new
BigDecimal(transferLimit) (using the transferLimit variable) and change it to
transactionAmount.compareTo(BigDecimal.valueOf(transferLimit)) so the logic and
exception throw (BeneficiaryTransferLimitExceededException) remain the same.

In
`@src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java`:
- Around line 48-60: The new public static final fields in
SelfServiceApiConstants use camelCase; rename each to UPPER_CASE (e.g.,
toOfficeIdParamName -> TO_OFFICE_ID_PARAM_NAME, toClientIdParamName ->
TO_CLIENT_ID_PARAM_NAME, toAccountTypeParamName -> TO_ACCOUNT_TYPE_PARAM_NAME,
toAccountIdParamName -> TO_ACCOUNT_ID_PARAM_NAME, transferDateParamName ->
TRANSFER_DATE_PARAM_NAME, transferAmountParamName -> TRANSFER_AMOUNT_PARAM_NAME,
transferDescriptionParamName -> TRANSFER_DESCRIPTION_PARAM_NAME,
dateFormatParamName -> DATE_FORMAT_PARAM_NAME, localeParamName ->
LOCALE_PARAM_NAME, fromAccountIdParamName -> FROM_ACCOUNT_ID_PARAM_NAME,
fromAccountTypeParamName -> FROM_ACCOUNT_TYPE_PARAM_NAME, fromClientIdParamName
-> FROM_CLIENT_ID_PARAM_NAME, fromOfficeIdParamName ->
FROM_OFFICE_ID_PARAM_NAME) and update all usages across the codebase to
reference the new names.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 890dc3ad-2526-4177-beb4-0f5b027840fc

📥 Commits

Reviewing files that changed from the base of the PR and between 63f978e and 5fd79e5.

📒 Files selected for processing (7)
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResource.java
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/account/data/SelfAccountTransferDataValidator.java
  • src/main/java/org/apache/fineract/selfservice/registration/SelfServiceApiConstants.java
  • src/main/resources/db/changelog/tenant/module/selfservice/module-changelog-master.xml
  • src/main/resources/db/changelog/tenant/module/selfservice/parts/006-grant-selfservice-savings-account-read-permissions.xml
  • src/main/resources/db/changelog/tenant/module/selfservice/parts/008-grant-selfservice-savings-account-create-transfer-permissions.xml
✅ Files skipped from review due to trivial changes (2)
  • src/main/resources/db/changelog/tenant/module/selfservice/parts/006-grant-selfservice-savings-account-read-permissions.xml
  • src/main/resources/db/changelog/tenant/module/selfservice/parts/008-grant-selfservice-savings-account-create-transfer-permissions.xml
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java
  • src/main/java/org/apache/fineract/selfservice/account/data/SelfAccountTransferDataValidator.java

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java`:
- Line 27: Add Javadoc comments to the public nested Swagger classes to satisfy
the project's documentation standard: insert a brief Javadoc block above the
class declaration for GetAccountTransferTemplateResponse describing its purpose
and key fields/usage, and do the same for the other public nested Swagger
classes in this file (the other public nested classes referenced in the review).
Ensure each Javadoc follows the project's style (summary sentence, optional
`@since/`@author if used) and is placed directly above the class declaration so
all public classes have Javadoc.
- Around line 62-63: Update the misspelled example value "Jhon Doe" to "John
Doe" in the Swagger schema annotations inside
SelfAccountTransferApiResourceSwagger; locate the `@Schema`(example = "Jhon Doe")
occurrences (e.g., on the public String clientName field and the other similar
field around lines 89-90) and change the example to "John Doe" so API docs show
the correct name.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5a15ffe7-5670-48cf-8652-4f0dd9f11954

📥 Commits

Reviewing files that changed from the base of the PR and between 5fd79e5 and 9e72524.

📒 Files selected for processing (1)
  • src/main/java/org/apache/fineract/selfservice/account/api/SelfAccountTransferApiResourceSwagger.java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant