Skip to content

VAPI-3164 Add <Refer> BXML verb support - #242

Open
nkuma246 wants to merge 19 commits into
mainfrom
VAPI-3164
Open

VAPI-3164 Add <Refer> BXML verb support#242
nkuma246 wants to merge 19 commits into
mainfrom
VAPI-3164

Conversation

@nkuma246

@nkuma246nkuma246 commented May 26, 2026

Copy link
Copy Markdown

Adds the <Refer> BXML verb.

  • src/main/java/com/bandwidth/sdk/model/bxml/Refer.java: new Refer verb, registered in Bxml.java.
  • Reuses the existing SipUri class (implements OutboundDestination) for the SIP URI child instead of a separate nested Refer.ReferSipUri, built via the same stock Lombok @Builder as Transfer - no cross-field validation restricting which SipUri attributes are legal per verb.
  • Tests in ReferVerbTest.java covering minimal and full-attribute XML serialization.

Tests: mvn test -Dtest="com.bandwidth.sdk.unit.models.*Test" - 1190/1190 pass.

VAPI-3438

@bwappsec

bwappsec commented May 26, 2026

Copy link
Copy Markdown
Contributor

Snyk checks have passed. No issues have been found so far.

StatusScan Engine Critical High Medium LowTotal (0)
Open Source Security0000 0 issues
Licenses0000 0 issues
Code Security0000 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@nkuma246
nkuma246 marked this pull request as ready for review May 27, 2026 10:37
@nkuma246
nkuma246 requested review from a team as code ownersMay 27, 2026 10:37
@nkuma246
nkuma246 marked this pull request as draft May 27, 2026 10:37
@atelegu
atelegu marked this pull request as ready for review June 22, 2026 12:54

CopilotAI 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.

Pull request overview

Adds SDK support for the new <Refer> BXML verb and introduces a corresponding ReferCompleteCallback model in the generated OpenAPI surface, along with documentation and unit tests.

Changes:

  • Added Refer verb model, registered it in Bxml, and added JAXB serialization unit tests.
  • Added ReferCompleteCallback model + docs, and registered its Gson type adapter.
  • Updated shared callback eventType documentation across multiple generated callback models/docs/specs to include referComplete.

Reviewed changes

Copilot reviewed 53 out of 53 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/test/java/com/bandwidth/sdk/unit/models/bxml/ReferVerbTest.javaAdds JAXB serialization tests for <Refer> verb output.
src/main/java/com/bandwidth/sdk/model/TransferDisconnectCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/TransferCompleteCallback.javaUpdates generated model docs (currently describing Refer Complete).
src/main/java/com/bandwidth/sdk/model/TransferAnswerCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/TranscriptionAvailableCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ReferCompleteCallback.javaAdds new generated callback model for Refer Complete events.
src/main/java/com/bandwidth/sdk/model/RedirectCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/RecordingCompleteCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/RecordingAvailableCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/MachineDetectionCompleteCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/InitiateCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/GatherCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/DtmfCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/DisconnectCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ConferenceRedirectCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ConferenceRecordingAvailableCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ConferenceMemberJoinCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ConferenceMemberExitCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ConferenceCreatedCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/ConferenceCompletedCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/bxml/Refer.javaAdds the <Refer> BXML verb model and its attributes.
src/main/java/com/bandwidth/sdk/model/bxml/Bxml.javaRegisters <Refer> as a supported verb within <Bxml>.
src/main/java/com/bandwidth/sdk/model/BridgeTargetCompleteCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/BridgeCompleteCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/model/AnswerCallback.javaUpdates eventType doc list to include referComplete.
src/main/java/com/bandwidth/sdk/JSON.javaRegisters Gson adapter factory for ReferCompleteCallback.
README.mdAdds model doc link for ReferCompleteCallback.
docs/TransferDisconnectCallback.mdUpdates eventType doc list to include referComplete.
docs/TransferCompleteCallback.mdUpdates generated markdown model doc (currently describing Refer Complete).
docs/TransferAnswerCallback.mdUpdates eventType doc list to include referComplete.
docs/TranscriptionAvailableCallback.mdUpdates eventType doc list to include referComplete.
docs/ReferCompleteCallback.mdAdds markdown documentation for ReferCompleteCallback.
docs/Refer.mdAdds documentation page for the <Refer> BXML verb.
docs/RedirectCallback.mdUpdates eventType doc list to include referComplete.
docs/RecordingCompleteCallback.mdUpdates eventType doc list to include referComplete.
docs/RecordingAvailableCallback.mdUpdates eventType doc list to include referComplete.
docs/MachineDetectionCompleteCallback.mdUpdates eventType doc list to include referComplete.
docs/InitiateCallback.mdUpdates eventType doc list to include referComplete.
docs/GatherCallback.mdUpdates eventType doc list to include referComplete.
docs/DtmfCallback.mdUpdates eventType doc list to include referComplete.
docs/DisconnectCallback.mdUpdates eventType doc list to include referComplete.
docs/ConferenceRedirectCallback.mdUpdates eventType doc list to include referComplete.
docs/ConferenceRecordingAvailableCallback.mdUpdates eventType doc list to include referComplete.
docs/ConferenceMemberJoinCallback.mdUpdates eventType doc list to include referComplete.
docs/ConferenceMemberExitCallback.mdUpdates eventType doc list to include referComplete.
docs/ConferenceCreatedCallback.mdUpdates eventType doc list to include referComplete.
docs/ConferenceCompletedCallback.mdUpdates eventType doc list to include referComplete.
docs/BridgeTargetCompleteCallback.mdUpdates eventType doc list to include referComplete.
docs/BridgeCompleteCallback.mdUpdates eventType doc list to include referComplete.
docs/AnswerCallback.mdUpdates eventType doc list to include referComplete.
bandwidth.ymlAdds referCompleteCallback schema and updates eventType list; updates transferCompleteCallback description text.
api/openapi.yamlAdds referCompleteCallback schema and updates eventType list; updates transferCompleteCallback description text.
.openapi-generator/FILESIncludes newly generated model/doc files in generator manifest.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadapi/openapi.yaml Outdated
Comment threadREADME.md
Comment threaddocs/TransferCompleteCallback.md
Comment threadbandwidth.yml Outdated

@stampercaseystampercasey 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.

Review from Claude Code — see inline comments for individual findings. Four blockers, all in the verb attributes and callback model.

Comment threadsrc/main/java/com/bandwidth/sdk/model/bxml/Refer.java Outdated
Comment threadsrc/main/java/com/bandwidth/sdk/model/bxml/Refer.java Outdated
Comment threadsrc/main/java/com/bandwidth/sdk/model/ReferCompleteCallback.java Outdated
Comment threadsrc/main/java/com/bandwidth/sdk/model/ReferCompleteCallback.java Outdated
Comment threadsrc/main/java/com/bandwidth/sdk/model/ReferCompleteCallback.java Outdated
Comment threadsrc/test/java/com/bandwidth/sdk/unit/models/bxml/ReferVerbTest.java Outdated
Comment threaddocs/Refer.md Outdated
stampercasey
stampercasey previously approved these changes Jun 24, 2026
ReferCompleteCallback (and its ReferCallStatusEnum dependency) will land
later via a separate api-specs-driven PR once VAPI-3440 merges, so it
doesn't belong in this PR yet.
Refer's nested Refer.ReferSipUri is also removed in favor of the existing
Transfer-flavored SipUri class, matching the merged csharp-sdk reference
implementation (Bandwidth/csharp-sdk#201) which kept Refer plain: no
validation, no custom builder, just a shared SipUri property.
bandwidth.yml/api/openapi.yaml still carried the full referCompleteCallback
schema and a referComplete addition to the shared eventType enum
description after ReferCompleteCallback.java was deleted; nothing
generates from it anymore. Also removed the corresponding
.openapi-generator/FILES entries and a stray README.md indentation glitch.
The eventType enum description was regenerated with referComplete added
to every callback model's docs/*.md and javadoc comment, plus the
standalone eventType schema's line wrap in api/openapi.yaml. Since
ReferCompleteCallback is out of scope for this PR, these are unrelated
diff noise - reverted to match main exactly.
api/openapi.yaml still carried an unrelated pre-existing rewrap of
transferCompleteCallback's description with no connection to this PR -
reverted the whole file to match main. Also dropped docs/Refer.md: Refer
is hand-written (not generated from api/openapi.yaml), so it's the only
BXML verb with a hand-maintained doc page, matching the csharp-sdk
reviewer's call to delete the equivalent doc there (customers use the
BXML dev docs guide instead).
.tag("test-tag")
.build();

Refer referMinimal = Refer.builder()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

we dont need to test this

}

@Test
public void referVerbMinimal() throws JAXBException {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

can be removed

ckoegel flagged the referMinimal field/test as unnecessary; keeping only
referVerbWithAllAttributes.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@nkuma246@bwappsec@stampercasey@ckoegel@atelegu