Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,22 @@ All notable changes to the library will be documented in this file.
The format of the file is based on [Keep a Changelog](http://keepachangelog.com/)
and this library adheres to [Semantic Versioning](http://semver.org/) as mentioned in [README.md][readme] file.

## [ [6.4.1](https://github.com/infobip/infobip-api-java-client/releases/tag/6.4.1) ] - 2026-05-07

### Changed
* **Numbers**:
* Extended `NumbersBrandRegistrationStatusPublic` with `PENDING_APPEAL` status support
* Extended `NumbersCampaignRegistrar` with `LIBERTY` registrar support
* Replaced `UPDATE_REQUESTED_BY_CARRIERS` with `REJECTED_EXTERNALLY` in `NumbersCampaignStage` enum
* Extended `NumbersCampaignType` with `RCS_SENDER_LAUNCH` type support
* Extended `NumbersExternalTenDlcCampaign` with `policy` field support
* Extended `NumbersNetwork` with `LIBERTY` network support
* Extended `NumbersTenDlcCampaign` with `policy` field support
* Extended `NumbersTenDlcUseCase` with `SWEEPSTAKE` use case support

### Fixed
* Fixed `getCampaignNetworkStatuses` response type to return a list instead of a single object.

## [ [6.4.0](https://github.com/infobip/infobip-api-java-client/releases/tag/6.4.0) ] - 2026-03-31

⚠️ **IMPORTANT NOTE:** This release contains compile time breaking changes.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Simply add the following in your project's POM file under `dependencies` tag:
<dependency>
<groupId>com.infobip</groupId>
<artifactId>infobip-api-java-client</artifactId>
<version>6.4.0</version>
<version>6.4.1</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.infobip</groupId>
<artifactId>infobip-api-java-client</artifactId>
<version>6.4.0</version>
<version>6.4.1</version>
<packaging>jar</packaging>

<name>infobip-api-java-client</name>
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/infobip/RequestFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
*/
final class RequestFactory {

private static final String USER_AGENT_HEADER_VALUE = "infobip-api-client-java/6.4.0";
private static final String USER_AGENT_HEADER_VALUE = "infobip-api-client-java/6.4.1";

private final ApiKey apiKey;
private final BaseUrl baseUrl;
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/infobip/api/NumbersApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -1943,13 +1943,13 @@ private GetCampaignNetworkStatusesRequest(UUID campaignId) {
/**
* Executes the getCampaignNetworkStatuses request.
*
* @return NumbersNetworkStatus The deserialized response.
* @return List&lt;NumbersNetworkStatus&gt; The deserialized response.
* @throws ApiException If the API call fails or an error occurs during the request or response processing.
*/
public NumbersNetworkStatus execute() throws ApiException {
public List<NumbersNetworkStatus> execute() throws ApiException {
RequestDefinition getCampaignNetworkStatusesDefinition = getCampaignNetworkStatusesDefinition(campaignId);
return apiClient.execute(
getCampaignNetworkStatusesDefinition, new TypeReference<NumbersNetworkStatus>() {}.getType());
getCampaignNetworkStatusesDefinition, new TypeReference<List<NumbersNetworkStatus>>() {}.getType());
}

/**
Expand All @@ -1958,11 +1958,11 @@ public NumbersNetworkStatus execute() throws ApiException {
* @param callback The {@link ApiCallback} to be invoked.
* @return The {@link okhttp3.Call} associated with the API request.
*/
public okhttp3.Call executeAsync(ApiCallback<NumbersNetworkStatus> callback) {
public okhttp3.Call executeAsync(ApiCallback<List<NumbersNetworkStatus>> callback) {
RequestDefinition getCampaignNetworkStatusesDefinition = getCampaignNetworkStatusesDefinition(campaignId);
return apiClient.executeAsync(
getCampaignNetworkStatusesDefinition,
new TypeReference<NumbersNetworkStatus>() {}.getType(),
new TypeReference<List<NumbersNetworkStatus>>() {}.getType(),
callback);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public enum NumbersBrandRegistrationStatusPublic {
ACTIVE("ACTIVE"),
PENDING("PENDING"),
PENDING_2FA("PENDING_2FA"),
PENDING_APPEAL("PENDING_APPEAL"),
REJECTED("REJECTED");

private final String value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ public enum NumbersCampaignRegistrar {
INTEROP("INTEROP"),
GOOGLE_VOICE("GOOGLE_VOICE"),
US_CELLULAR_MMS("US_CELLULAR_MMS"),
ZIPWHIP("ZIPWHIP");
ZIPWHIP("ZIPWHIP"),
LIBERTY("LIBERTY");

private final String value;

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/infobip/model/NumbersCampaignStage.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public enum NumbersCampaignStage {
UPDATE_REQUESTED_BY_INTERNAL_REVIEWER("UPDATE_REQUESTED_BY_INTERNAL_REVIEWER"),
APPROVED_BY_INTERNAL_REVIEWER("APPROVED_BY_INTERNAL_REVIEWER"),
SUBMITTED("SUBMITTED"),
UPDATE_REQUESTED_BY_CARRIERS("UPDATE_REQUESTED_BY_CARRIERS"),
REJECTED_EXTERNALLY("REJECTED_EXTERNALLY"),
REGISTERED("REGISTERED"),
REJECTED("REJECTED"),
ON_HOLD("ON_HOLD"),
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/com/infobip/model/NumbersCampaignType.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public enum NumbersCampaignType {
DCA2_TEN_DIGIT_LONG_CODE("DCA2_TEN_DIGIT_LONG_CODE"),
TOLL_FREE_NUMBER("TOLL_FREE_NUMBER"),
TOLL_FREE_UNIFIED_NUMBER("TOLL_FREE_UNIFIED_NUMBER"),
TOLL_FREE_EXTERNALLY_VERIFIED("TOLL_FREE_EXTERNALLY_VERIFIED");
TOLL_FREE_EXTERNALLY_VERIFIED("TOLL_FREE_EXTERNALLY_VERIFIED"),
RCS_SENDER_LAUNCH("RCS_SENDER_LAUNCH");

private final String value;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ public class NumbersExternalTenDlcCampaign extends NumbersCampaign {

private Set<String> numbers = null;

private NumbersPolicyType policy;

private Set<String> numberKeys = null;

private Set<NumbersNumberPreview> numberPreviews = null;
Expand Down Expand Up @@ -139,6 +141,37 @@ public void setNumbers(Set<String> numbers) {
this.numbers = numbers;
}

/**
* Sets policy.
*
* @param policy
* @return This {@link NumbersExternalTenDlcCampaign instance}.
*/
public NumbersExternalTenDlcCampaign policy(NumbersPolicyType policy) {
this.policy = policy;
return this;
}

/**
* Returns policy.
*
* @return policy
*/
@JsonProperty("policy")
public NumbersPolicyType getPolicy() {
return policy;
}

/**
* Sets policy.
*
* @param policy
*/
@JsonProperty("policy")
public void setPolicy(NumbersPolicyType policy) {
this.policy = policy;
}

/**
* Sets numberKeys.
* <p>
Expand Down Expand Up @@ -295,6 +328,7 @@ public boolean equals(Object o) {
NumbersExternalTenDlcCampaign numbersExternalTenDlcCampaign = (NumbersExternalTenDlcCampaign) o;
return Objects.equals(this.externalCampaignId, numbersExternalTenDlcCampaign.externalCampaignId)
&& Objects.equals(this.numbers, numbersExternalTenDlcCampaign.numbers)
&& Objects.equals(this.policy, numbersExternalTenDlcCampaign.policy)
&& Objects.equals(this.numberKeys, numbersExternalTenDlcCampaign.numberKeys)
&& Objects.equals(this.numberPreviews, numbersExternalTenDlcCampaign.numberPreviews)
&& Objects.equals(this.numberPool, numbersExternalTenDlcCampaign.numberPool)
Expand All @@ -303,7 +337,8 @@ public boolean equals(Object o) {

@Override
public int hashCode() {
return Objects.hash(externalCampaignId, numbers, numberKeys, numberPreviews, numberPool, super.hashCode());
return Objects.hash(
externalCampaignId, numbers, policy, numberKeys, numberPreviews, numberPool, super.hashCode());
}

@Override
Expand All @@ -321,6 +356,9 @@ public String toString() {
.append(" numbers: ")
.append(toIndentedString(numbers))
.append(newLine)
.append(" policy: ")
.append(toIndentedString(policy))
.append(newLine)
.append(" numberKeys: ")
.append(toIndentedString(numberKeys))
.append(newLine)
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/com/infobip/model/NumbersNetwork.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public enum NumbersNetwork {
US_CELLULAR("US_CELLULAR"),
INTEROP("INTEROP"),
CLEARSKY("CLEARSKY"),
GOOGLE_VOICE("GOOGLE_VOICE");
GOOGLE_VOICE("GOOGLE_VOICE"),
LIBERTY("LIBERTY");

private final String value;

Expand Down
38 changes: 38 additions & 0 deletions src/main/java/com/infobip/model/NumbersTenDlcCampaign.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ public class NumbersTenDlcCampaign extends NumbersCampaign {

private List<String> supportingDocuments = null;

private NumbersPolicyType policy;

private Set<String> numberKeys = null;

private Set<String> numbers = null;
Expand Down Expand Up @@ -1061,6 +1063,37 @@ public void setSupportingDocuments(List<String> supportingDocuments) {
this.supportingDocuments = supportingDocuments;
}

/**
* Sets policy.
*
* @param policy
* @return This {@link NumbersTenDlcCampaign instance}.
*/
public NumbersTenDlcCampaign policy(NumbersPolicyType policy) {
this.policy = policy;
return this;
}

/**
* Returns policy.
*
* @return policy
*/
@JsonProperty("policy")
public NumbersPolicyType getPolicy() {
return policy;
}

/**
* Sets policy.
*
* @param policy
*/
@JsonProperty("policy")
public void setPolicy(NumbersPolicyType policy) {
this.policy = policy;
}

/**
* Sets numberKeys.
* <p>
Expand Down Expand Up @@ -1293,6 +1326,7 @@ public boolean equals(Object o) {
&& Objects.equals(this.customerCareEmail, numbersTenDlcCampaign.customerCareEmail)
&& Objects.equals(this.mmsSampleFiles, numbersTenDlcCampaign.mmsSampleFiles)
&& Objects.equals(this.supportingDocuments, numbersTenDlcCampaign.supportingDocuments)
&& Objects.equals(this.policy, numbersTenDlcCampaign.policy)
&& Objects.equals(this.numberKeys, numbersTenDlcCampaign.numberKeys)
&& Objects.equals(this.numbers, numbersTenDlcCampaign.numbers)
&& Objects.equals(this.numberPreviews, numbersTenDlcCampaign.numberPreviews)
Expand Down Expand Up @@ -1324,6 +1358,7 @@ public int hashCode() {
customerCareEmail,
mmsSampleFiles,
supportingDocuments,
policy,
numberKeys,
numbers,
numberPreviews,
Expand Down Expand Up @@ -1403,6 +1438,9 @@ public String toString() {
.append(" supportingDocuments: ")
.append(toIndentedString(supportingDocuments))
.append(newLine)
.append(" policy: ")
.append(toIndentedString(policy))
.append(newLine)
.append(" numberKeys: ")
.append(toIndentedString(numberKeys))
.append(newLine)
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/com/infobip/model/NumbersTenDlcUseCase.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ public enum NumbersTenDlcUseCase {
TWO_FACTOR_AUTH("TWO_FACTOR_AUTH"),
VOTING_POLLING("VOTING_POLLING"),
POLITICAL("POLITICAL"),
M2M("M2M");
M2M("M2M"),
SWEEPSTAKE("SWEEPSTAKE");

private final String value;

Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/infobip/RequestFactoryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class RequestFactoryTest {

private static final String GIVEN_API_KEY_VALUE = "apiKeyValue";
private static final ApiKey GIVEN_API_KEY = ApiKey.from(GIVEN_API_KEY_VALUE);
private static final String EXPECTED_USER_AGENT_HEADER_VALUE = "infobip-api-client-java/6.4.0";
private static final String EXPECTED_USER_AGENT_HEADER_VALUE = "infobip-api-client-java/6.4.1";

private final OkHttpClient client = new OkHttpClient();
private final JSON json = new JSON();
Expand Down
52 changes: 35 additions & 17 deletions src/test/java/com/infobip/api/NumbersApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -4641,18 +4641,28 @@ void shouldGetCampaignNetworkStatuses() {
NumbersNetworkState givenState1 = NumbersNetworkState.ACTIVE;
String givenMessageClass1 = "A";
Integer givenThroughput1 = 4500;
NumbersNetwork givenNetwork2 = NumbersNetwork.T_MOBILE;
NumbersNetworkState givenState2 = NumbersNetworkState.ACTIVE;
String givenMessageClass2 = "20";
Integer givenThroughput2 = 2000;
String givenBrandTier2 = "LOW";

String givenResponse = "{\n"
+ " \"network\": \"ATT\",\n"
+ " \"state\": \"ACTIVE\",\n"
+ " \"messageClass\": \""
+ givenMessageClass1
+ "\",\n"
+ " \"throughput\": "
+ givenThroughput1
+ ",\n"
+ " \"brandTier\": null\n"
+ "}\n";
String givenResponse = "[\n"
+ " {\n"
+ " \"network\": \"ATT\",\n"
+ " \"state\": \"ACTIVE\",\n"
+ " \"messageClass\": \"A\",\n"
+ " \"throughput\": 4500,\n"
+ " \"brandTier\": null\n"
+ " },\n"
+ " {\n"
+ " \"network\": \"T_MOBILE\",\n"
+ " \"state\": \"ACTIVE\",\n"
+ " \"messageClass\": \"20\",\n"
+ " \"throughput\": 2000,\n"
+ " \"brandTier\": \"LOW\"\n"
+ " }\n"
+ "]\n";

setUpSuccessGetRequest(
CAMPAIGN_NETWORK_STATUSES.replace("{campaignId}", givenCampaignId.toString()), Map.of(), givenResponse);
Expand All @@ -4661,13 +4671,21 @@ void shouldGetCampaignNetworkStatuses() {

var call = api.getCampaignNetworkStatuses(givenCampaignId);

Consumer<NumbersNetworkStatus> assertions = response -> {
Consumer<List<NumbersNetworkStatus>> assertions = response -> {
then(response).isNotNull();
then(response.getNetwork()).isEqualTo(givenNetwork1);
then(response.getState()).isEqualTo(givenState1);
then(response.getMessageClass()).isEqualTo(givenMessageClass1);
then(response.getThroughput()).isEqualTo(givenThroughput1);
then(response.getBrandTier()).isNull();
then(response).hasSize(2);
NumbersNetworkStatus status1 = response.get(0);
then(status1.getNetwork()).isEqualTo(givenNetwork1);
then(status1.getState()).isEqualTo(givenState1);
then(status1.getMessageClass()).isEqualTo(givenMessageClass1);
then(status1.getThroughput()).isEqualTo(givenThroughput1);
then(status1.getBrandTier()).isNull();
NumbersNetworkStatus status2 = response.get(1);
then(status2.getNetwork()).isEqualTo(givenNetwork2);
then(status2.getState()).isEqualTo(givenState2);
then(status2.getMessageClass()).isEqualTo(givenMessageClass2);
then(status2.getThroughput()).isEqualTo(givenThroughput2);
then(status2.getBrandTier()).isEqualTo(givenBrandTier2);
};

testSuccessfulCall(call::execute, assertions);
Expand Down
Loading