diff --git a/pom.xml b/pom.xml
index fd037f7..73873e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.chargify
chargify-sdk
- 0.7.0
+ 0.9.0
jar
Chargify SDK for Java
diff --git a/src/main/java/com/chargify/Chargify.java b/src/main/java/com/chargify/Chargify.java
index a762df2..78376a9 100644
--- a/src/main/java/com/chargify/Chargify.java
+++ b/src/main/java/com/chargify/Chargify.java
@@ -1,9 +1,13 @@
package com.chargify;
import com.chargify.model.*;
+import com.chargify.model.product.Product;
+import com.chargify.model.product.ProductFamily;
+import com.chargify.model.product.ProductPricePoint;
import java.time.LocalDateTime;
import java.util.List;
+import java.util.Set;
public interface Chargify
{
@@ -21,6 +25,10 @@ public interface Chargify
Product findProductByApiHandle( String apiHandle );
+ Set findProductPricePointsByProductId( String productId );
+
+ Set findComponentPricePoints( int componentId );
+
List findAllProducts();
List findProductsByProductFamilyId( String productFamilyId );
@@ -47,6 +55,8 @@ public interface Chargify
Subscription migrateSubscription( String subscriptionId, String productHandle );
+ Subscription migrateSubscription( String subscriptionId, String productHandle, String pricePointHandle );
+
Subscription reactivateSubscription( String subscriptionId );
Subscription reactivateSubscription( String subscriptionId, SubscriptionReactivationData reactivationData );
@@ -54,8 +64,12 @@ public interface Chargify
ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( String subscriptionId, int componentId,
String pricePointHandle );
+ List bulkUpdateSubscriptionComponentPricePoint( String subscriptionId, List items );
+
Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, boolean delayed );
+ Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, String pricePointHandle, boolean delayed );
+
RenewalPreview previewSubscriptionRenewal( String subscriptionId );
List createSubscriptionMetadata( String subscriptionId, Metadata... metadata );
@@ -66,17 +80,21 @@ ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( String subsc
Component createComponent( String productFamilyId, Component component );
- Allocation createComponentAllocation( String subscriptionId, String componentId, Allocation allocation );
+ Allocation createComponentAllocation( String subscriptionId, int componentId, Allocation allocation );
+
+ AllocationPreview previewComponentAllocation( String subscriptionId, int componentId, int quantity );
List findComponentsByProductFamily( String productFamilyId );
- Component findComponentByIdAndProductFamily( String componentId, String productFamilyId );
+ Component findComponentByIdAndProductFamily( int componentId, String productFamilyId );
+
+ ComponentWithPricePoints findComponentWithPricePointsByIdAndProductFamily( int componentId, String productFamilyId );
List findSubscriptionComponents( String subscriptionId );
- SubscriptionComponent findSubscriptionComponentById( String subscriptionId, String componentId );
+ SubscriptionComponent findSubscriptionComponentById( String subscriptionId, int componentId );
- Usage reportSubscriptionComponentUsage( String subscriptionId, String componentId, Usage usage );
+ Usage reportSubscriptionComponentUsage( String subscriptionId, int componentId, Usage usage );
Customer createCustomer( Customer customer );
diff --git a/src/main/java/com/chargify/ChargifyService.java b/src/main/java/com/chargify/ChargifyService.java
index 8797b34..ec4ebb5 100644
--- a/src/main/java/com/chargify/ChargifyService.java
+++ b/src/main/java/com/chargify/ChargifyService.java
@@ -3,6 +3,9 @@
import com.chargify.exceptions.ChargifyResponseErrorHandler;
import com.chargify.exceptions.ResourceNotFoundException;
import com.chargify.model.*;
+import com.chargify.model.product.Product;
+import com.chargify.model.product.ProductFamily;
+import com.chargify.model.product.ProductPricePoint;
import com.chargify.model.wrappers.*;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.boot.web.client.RestTemplateBuilder;
@@ -20,6 +23,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
public final class ChargifyService implements Chargify
@@ -143,6 +147,36 @@ public Product findProductByApiHandle( String apiHandle )
}
}
+ @Override
+ public Set findProductPricePointsByProductId( String productId )
+ {
+ try
+ {
+ return httpClient.getForObject(
+ "/products/" + productId + "/price_points.json", ProductPricePointsWrapper.class )
+ .getPricePoints();
+ }
+ catch( ResourceNotFoundException e )
+ {
+ return null;
+ }
+ }
+
+ @Override
+ public Set findComponentPricePoints( int componentId )
+ {
+ try
+ {
+ return httpClient.getForObject(
+ "/components/" + componentId + "/price_points.json", ComponentPricePointsWrapper.class )
+ .getPricePoints();
+ }
+ catch( ResourceNotFoundException e )
+ {
+ return null;
+ }
+ }
+
@Override
public List findAllProducts()
{
@@ -288,6 +322,18 @@ public Subscription migrateSubscription( String subscriptionId, String productHa
.getSubscription();
}
+ @Override
+ public Subscription migrateSubscription( String subscriptionId, String productHandle, String pricePointHandle )
+ {
+ final Migration migration = new Migration();
+ migration.setProductHandle( productHandle );
+ migration.setPricePointHandle( pricePointHandle );
+
+ return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/migrations.json",
+ new MigrationWrapper( migration ), SubscriptionWrapper.class )
+ .getSubscription();
+ }
+
@Override
public Subscription reactivateSubscription( String subscriptionId )
{
@@ -316,20 +362,43 @@ public ComponentPricePointUpdate migrateSubscriptionComponentToPricePoint( Strin
{
return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/price_points.json",
new ComponentPricePointUpdatesWrapper(
- new ComponentPricePointUpdate( componentId, pricePointHandle ) ),
+ List.of( new ComponentPricePointUpdate( componentId, pricePointHandle ) ) ),
+ ComponentPricePointUpdatesWrapper.class )
+ .getPricePointUpdates().get( 0 );
+ }
+
+ @Override
+ public List bulkUpdateSubscriptionComponentPricePoint( String subscriptionId, List items )
+ {
+ return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/price_points.json",
+ new ComponentPricePointUpdatesWrapper( items ),
ComponentPricePointUpdatesWrapper.class )
- .getPricePointUpdates()[ 0 ];
+ .getPricePointUpdates();
}
@Override
public Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, boolean delayed )
{
- final Subscription subscription = new Subscription();
- subscription.setProductHandle( productHandle );
- subscription.setProductChangeDelayed( delayed );
+ final SubscriptionProductUpdate productUpdate = new SubscriptionProductUpdate();
+ productUpdate.setProductHandle( productHandle );
+ productUpdate.setChangeDelayed( delayed );
return httpClient.exchange( "/subscriptions/" + subscriptionId + ".json", HttpMethod.PUT,
- new HttpEntity<>( new SubscriptionWrapper( subscription ) ), SubscriptionWrapper.class )
+ new HttpEntity<>( new SubscriptionProductUpdateWrapper( productUpdate ) ), SubscriptionWrapper.class )
+ .getBody()
+ .getSubscription();
+ }
+
+ @Override
+ public Subscription changeSubscriptionProduct( String subscriptionId, String productHandle, String pricePointHandle, boolean delayed )
+ {
+ final SubscriptionProductUpdate productUpdate = new SubscriptionProductUpdate();
+ productUpdate.setProductHandle( productHandle );
+ productUpdate.setChangeDelayed( delayed );
+ productUpdate.setPricePointHandle( pricePointHandle );
+
+ return httpClient.exchange( "/subscriptions/" + subscriptionId + ".json", HttpMethod.PUT,
+ new HttpEntity<>( new SubscriptionProductUpdateWrapper( productUpdate ) ), SubscriptionWrapper.class )
.getBody()
.getSubscription();
}
@@ -404,7 +473,7 @@ public Component createComponent( String productFamilyId, Component component )
}
@Override
- public Allocation createComponentAllocation( String subscriptionId, String componentId, Allocation allocation )
+ public Allocation createComponentAllocation( String subscriptionId, int componentId, Allocation allocation )
{
return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/components/" + componentId +
"/allocations.json",
@@ -412,6 +481,15 @@ public Allocation createComponentAllocation( String subscriptionId, String compo
.getAllocation();
}
+ @Override
+ public AllocationPreview previewComponentAllocation( String subscriptionId, int componentId, int quantity )
+ {
+ return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/allocations/preview.json",
+ Map.of( "allocations", List.of( new AllocationPreview.ComponentAllocationDTO( componentId, quantity ) ) ),
+ AllocationPreviewWrapper.class )
+ .getAllocationPreview();
+ }
+
@Override
public List findComponentsByProductFamily( String productFamilyId )
{
@@ -422,7 +500,7 @@ public List findComponentsByProductFamily( String productFamilyId )
}
@Override
- public Component findComponentByIdAndProductFamily( String componentId, String productFamilyId )
+ public Component findComponentByIdAndProductFamily( int componentId, String productFamilyId )
{
try
{
@@ -437,6 +515,13 @@ public Component findComponentByIdAndProductFamily( String componentId, String p
}
}
+ @Override
+ public ComponentWithPricePoints findComponentWithPricePointsByIdAndProductFamily( int componentId, String productFamilyId )
+ {
+ return new ComponentWithPricePoints( findComponentByIdAndProductFamily( componentId, productFamilyId ),
+ findComponentPricePoints( componentId ) );
+ }
+
@Override
public List findSubscriptionComponents( String subscriptionId )
{
@@ -447,7 +532,7 @@ public List findSubscriptionComponents( String subscripti
}
@Override
- public SubscriptionComponent findSubscriptionComponentById( String subscriptionId, String componentId )
+ public SubscriptionComponent findSubscriptionComponentById( String subscriptionId, int componentId )
{
try
{
@@ -463,7 +548,7 @@ public SubscriptionComponent findSubscriptionComponentById( String subscriptionI
}
@Override
- public Usage reportSubscriptionComponentUsage( String subscriptionId, String componentId, Usage usage )
+ public Usage reportSubscriptionComponentUsage( String subscriptionId, int componentId, Usage usage )
{
return httpClient.postForObject( "/subscriptions/" + subscriptionId + "/components/" + componentId +
"/usages.json",
diff --git a/src/main/java/com/chargify/model/AllocationPreview.java b/src/main/java/com/chargify/model/AllocationPreview.java
new file mode 100644
index 0000000..c4ced35
--- /dev/null
+++ b/src/main/java/com/chargify/model/AllocationPreview.java
@@ -0,0 +1,113 @@
+package com.chargify.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+@JsonInclude( JsonInclude.Include.NON_NULL )
+public class AllocationPreview
+{
+ @JsonProperty( "start_date" )
+ private LocalDateTime startDate;
+ @JsonProperty( "end_date" )
+ private LocalDateTime endDate;
+ @JsonProperty( "period_type" )
+ private String periodType;
+ @JsonProperty( "total_in_cents" )
+ private Integer totalInCents;
+ @JsonProperty( "total_discount_in_cents" )
+ private Integer totalDiscountInCents;
+ @JsonProperty( "total_tax_in_cents" )
+ private Integer totalTaxInCents;
+ @JsonProperty( "subtotal_in_cents" )
+ private Integer subtotalInCents;
+ @JsonProperty( "existing_balance_in_cents" )
+ private Integer existingBalanceInCents;
+ @JsonProperty( "direction" )
+ private String direction;
+ @JsonProperty( "proration_scheme" )
+ private String prorationScheme;
+ @JsonProperty( "line_items" )
+ private List lineItems;
+ @JsonProperty( "allocations" )
+ private List allocations;
+
+
+ @NoArgsConstructor
+ @Data
+ @JsonInclude( JsonInclude.Include.NON_NULL )
+ public static class LineItem
+ {
+ @JsonProperty( "transaction_type" )
+ private String transactionType;
+ private ComponentKind kind;
+ @JsonProperty( "amount_in_cents" )
+ private Integer amountInCents;
+ private String memo;
+ @JsonProperty( "discount_amount_in_cents" )
+ private Integer discountAmountInCents;
+ @JsonProperty( "taxable_amount_in_cents" )
+ private Integer taxable_amount_in_cents;
+ @JsonProperty( "component_id" )
+ private Integer componentId;
+ @JsonProperty( "component_handle" )
+ private String componentHandle;
+ @JsonProperty( "accrue_charge" )
+ private Boolean accrueCharge;
+ @JsonProperty( "upgrade_charge" )
+ private String upgradeCharge;
+ }
+
+ @NoArgsConstructor
+ @Data
+ @JsonInclude( JsonInclude.Include.NON_NULL )
+ public static class Allocation
+ {
+ @JsonProperty( "allocation_id" )
+ private String allocationId;
+ @JsonProperty( "component_id" )
+ private Integer componentId;
+ @JsonProperty( "subscription_id" )
+ private Integer subscriptionId;
+ private Integer quantity;
+ @JsonProperty( "previous_quantity" )
+ private Integer previousQuantity;
+ private String memo;
+ private LocalDateTime timestamp;
+ @JsonProperty( "proration_upgrade_scheme" )
+ private String prorationUpgradeScheme;
+ @JsonProperty( "proration_downgrade_scheme" )
+ private String prorationDowngradeScheme;
+ @JsonProperty( "price_point_id" )
+ private Integer pricePointId;
+ @JsonProperty( "previous_price_point_id" )
+ private Integer previousPricePointId;
+ @JsonProperty( "component_handle" )
+ private String componentHandle;
+ @JsonProperty( "accrue_charge" )
+ private Boolean accrueCharge;
+ @JsonProperty( "upgrade_charge" )
+ private String upgradeCharge;
+ @JsonProperty( "downgrade_credit" )
+ private String downgradeCredit;
+ @JsonProperty( "created_at" )
+ private LocalDateTime createdAt;
+ }
+
+ @AllArgsConstructor
+ @Getter
+ public static class ComponentAllocationDTO
+ {
+ @JsonProperty( "component_id" )
+ private final int componentId;
+ private final int quantity;
+ }
+}
diff --git a/src/main/java/com/chargify/model/Component.java b/src/main/java/com/chargify/model/Component.java
index c1b613a..531cb05 100644
--- a/src/main/java/com/chargify/model/Component.java
+++ b/src/main/java/com/chargify/model/Component.java
@@ -28,7 +28,7 @@
@JsonInclude( JsonInclude.Include.NON_NULL )
public class Component implements Serializable
{
- private String id;
+ private Integer id;
private String name;
diff --git a/src/main/java/com/chargify/model/ComponentPricePointUpdate.java b/src/main/java/com/chargify/model/ComponentPricePointUpdate.java
index 1c84694..3c6ea83 100644
--- a/src/main/java/com/chargify/model/ComponentPricePointUpdate.java
+++ b/src/main/java/com/chargify/model/ComponentPricePointUpdate.java
@@ -2,38 +2,32 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+@Data
public final class ComponentPricePointUpdate
{
- private final int componentId;
- private final String pricePointHandle;
+ @JsonProperty( "component_id" )
+ private int componentId;
+ @JsonProperty( "price_point" )
+ private String pricePointHandle;
+ @JsonProperty( value = "message" )
+ private String message;
@JsonCreator
- public ComponentPricePointUpdate( @JsonProperty( "component_id" ) int componentId,
- @JsonProperty( "price_point" ) String pricePointHandle )
+ public ComponentPricePointUpdate()
{
- this.componentId = componentId;
- this.pricePointHandle = pricePointHandle;
}
- @JsonProperty( "component_id" )
- public int getComponentId()
+ public ComponentPricePointUpdate( int componentId, String pricePointHandle )
{
- return componentId;
+ this( componentId, pricePointHandle, null );
}
- @JsonProperty( "price_point" )
- public String getPricePointHandle()
+ public ComponentPricePointUpdate( int componentId, String pricePointHandle, String message )
{
- return pricePointHandle;
- }
-
- @Override
- public String toString()
- {
- return "ComponentPricePointUpdate{" +
- "componentId='" + componentId + '\'' +
- ", pricePointHandle='" + pricePointHandle + '\'' +
- '}';
+ this.componentId = componentId;
+ this.pricePointHandle = pricePointHandle;
+ this.message = message;
}
}
diff --git a/src/main/java/com/chargify/model/ComponentWithPricePoints.java b/src/main/java/com/chargify/model/ComponentWithPricePoints.java
new file mode 100644
index 0000000..9a7d5b0
--- /dev/null
+++ b/src/main/java/com/chargify/model/ComponentWithPricePoints.java
@@ -0,0 +1,19 @@
+package com.chargify.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Set;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@JsonInclude( JsonInclude.Include.NON_NULL )
+public class ComponentWithPricePoints implements Serializable
+{
+ private Component component;
+ private Set pricePoints;
+}
diff --git a/src/main/java/com/chargify/model/Migration.java b/src/main/java/com/chargify/model/Migration.java
index d1e22da..18195d5 100644
--- a/src/main/java/com/chargify/model/Migration.java
+++ b/src/main/java/com/chargify/model/Migration.java
@@ -2,7 +2,9 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+@Data
@JsonInclude( JsonInclude.Include.NON_NULL )
public class Migration
{
@@ -12,23 +14,6 @@ public class Migration
@JsonProperty( "include_trial")
private Integer includeTrial;
- public String getProductHandle()
- {
- return productHandle;
- }
-
- public void setProductHandle( String productHandle )
- {
- this.productHandle = productHandle;
- }
-
- public Integer getIncludeTrial()
- {
- return includeTrial;
- }
-
- public void setIncludeTrial( Integer includeTrial )
- {
- this.includeTrial = includeTrial;
- }
+ @JsonProperty( "product_price_point_handle")
+ private String pricePointHandle;
}
diff --git a/src/main/java/com/chargify/model/Price.java b/src/main/java/com/chargify/model/Price.java
index 25ff9d3..70ccd03 100644
--- a/src/main/java/com/chargify/model/Price.java
+++ b/src/main/java/com/chargify/model/Price.java
@@ -3,9 +3,11 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
import java.io.Serializable;
+@AllArgsConstructor
@JsonInclude( JsonInclude.Include.NON_NULL )
public final class Price implements Serializable
{
diff --git a/src/main/java/com/chargify/model/PricePoint.java b/src/main/java/com/chargify/model/PricePoint.java
index 58dd693..fc697a5 100644
--- a/src/main/java/com/chargify/model/PricePoint.java
+++ b/src/main/java/com/chargify/model/PricePoint.java
@@ -1,63 +1,35 @@
package com.chargify.model;
-import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
import java.io.Serializable;
@JsonInclude( JsonInclude.Include.NON_NULL )
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
public final class PricePoint implements Serializable
{
+ private Integer id;
+ @JsonProperty( "default" )
+ private boolean defaultPricePoint = false;
private String name;
private String handle;
+ @JsonProperty( "pricing_scheme" )
private String pricingScheme;
+ @JsonProperty( "component_id" )
+ private String componentId;
+ @JsonProperty( "archived_at" )
+ private String archivedAt;
+ @JsonProperty( "created_at" )
+ private String createdAt;
+ @JsonProperty( "updated_at" )
+ private String updatedAt;
+ @JsonProperty( "use_site_exchange_rate" )
+ private Boolean useSiteExchangeRate;
private Price[] prices;
-
- @JsonCreator
- public PricePoint()
- {
- }
-
- public String getName()
- {
- return name;
- }
-
- public void setName( String name )
- {
- this.name = name;
- }
-
- public String getHandle()
- {
- return handle;
- }
-
- public void setHandle( String handle )
- {
- this.handle = handle;
- }
-
- @JsonProperty( "pricing_scheme" )
- public String getPricingScheme()
- {
- return pricingScheme;
- }
-
- public void setPricingScheme( String pricingScheme )
- {
- this.pricingScheme = pricingScheme;
- }
-
- @JsonProperty( "prices" )
- public Price[] getPrices()
- {
- return prices;
- }
-
- public void setPrices( Price[] prices )
- {
- this.prices = prices;
- }
}
diff --git a/src/main/java/com/chargify/model/PricePointIntervalUnit.java b/src/main/java/com/chargify/model/PricePointIntervalUnit.java
new file mode 100644
index 0000000..32a7ffd
--- /dev/null
+++ b/src/main/java/com/chargify/model/PricePointIntervalUnit.java
@@ -0,0 +1,6 @@
+package com.chargify.model;
+
+public enum PricePointIntervalUnit
+{
+ day, month
+}
diff --git a/src/main/java/com/chargify/model/Product.java b/src/main/java/com/chargify/model/Product.java
deleted file mode 100644
index 64e63a7..0000000
--- a/src/main/java/com/chargify/model/Product.java
+++ /dev/null
@@ -1,390 +0,0 @@
-package com.chargify.model;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-@JsonInclude( JsonInclude.Include.NON_NULL )
-public class Product implements Serializable
-{
- private String id;
-
- private String name;
-
- private String handle;
-
- private String description;
-
- @JsonProperty( "accounting_code" )
- private String accountingCode;
-
- @JsonProperty( "request_credit_card" )
- private Boolean requestCreditCard;
-
- @JsonProperty( "expiration_interval" )
- private String expirationInterval;
-
- @JsonProperty( "expiration_interval_unit" )
- private String expirationIntervalUnit;
-
- @JsonProperty( "created_at" )
- private Date createdAt;
-
- @JsonProperty( "updated_at" )
- private Date updatedAt;
-
- @JsonProperty( "price_in_cents" )
- private int priceInCents;
-
- @JsonProperty( "interval" )
- private int recurringInterval;
-
- @JsonProperty( "interval_unit" )
- private IntervalUnit intervalUnit;
-
- @JsonProperty( "initial_charge_in_cents" )
- private String initialChargeInCents;
-
- @JsonProperty( "trial_price_in_cents" )
- private Integer trialPriceInCents;
-
- @JsonProperty( "trial_interval" )
- private Integer trialInterval;
-
- @JsonProperty( "trial_interval_unit" )
- private String trialIntervalUnit;
-
- @JsonProperty( "archived_at" )
- private Date archivedAt;
-
- @JsonProperty( "require_credit_card" )
- private Boolean requireCreditCard;
-
- @JsonProperty( "return_params" )
- private String returnParams;
-
- private Boolean taxable;
-
- @JsonProperty( "update_return_url" )
- private String updateReturnUrl;
-
- @JsonProperty( "initial_charge_after_trial" )
- private Boolean initialChargeAfterTrial;
-
- @JsonProperty( "version_number" )
- private Integer versionNumber;
-
- @JsonProperty( "update_return_params" )
- private String updateReturnParams;
-
- @JsonProperty( "product_family" )
- private ProductFamily productFamily;
-
- @JsonProperty( "public_signup_pages" )
- private List publicSignupPages;
-
- @JsonCreator
- public Product( @JsonProperty( "name" ) final String name,
- @JsonProperty( "price" ) final int priceInCents,
- @JsonProperty( "interval" ) final int recurringInterval,
- @JsonProperty( "interval_unit" ) final IntervalUnit intervalUnit )
- {
- this.name = name;
- this.priceInCents = priceInCents;
- this.recurringInterval = recurringInterval;
- this.intervalUnit = intervalUnit;
- }
-
- public String getId()
- {
- return id;
- }
-
- public void setId( String id )
- {
- this.id = id;
- }
-
- public String getName()
- {
- return name;
- }
-
- public String getHandle()
- {
- return handle;
- }
-
- public void setHandle( String handle )
- {
- this.handle = handle;
- }
-
- public String getDescription()
- {
- return description;
- }
-
- public void setDescription( String description )
- {
- this.description = description;
- }
-
- public String getAccountingCode()
- {
- return accountingCode;
- }
-
- public void setAccountingCode( String accountingCode )
- {
- this.accountingCode = accountingCode;
- }
-
- public Boolean getRequestCreditCard()
- {
- return requestCreditCard;
- }
-
- public void setRequestCreditCard( Boolean requestCreditCard )
- {
- this.requestCreditCard = requestCreditCard;
- }
-
- public String getExpirationInterval()
- {
- return expirationInterval;
- }
-
- public void setExpirationInterval( String expirationInterval )
- {
- this.expirationInterval = expirationInterval;
- }
-
- public String getExpirationIntervalUnit()
- {
- return expirationIntervalUnit;
- }
-
- public void setExpirationIntervalUnit( String expirationIntervalUnit )
- {
- this.expirationIntervalUnit = expirationIntervalUnit;
- }
-
- public Date getCreatedAt()
- {
- return createdAt;
- }
-
- public void setCreatedAt( Date createdAt )
- {
- this.createdAt = createdAt;
- }
-
- public Date getUpdatedAt()
- {
- return updatedAt;
- }
-
- public void setUpdatedAt( Date updatedAt )
- {
- this.updatedAt = updatedAt;
- }
-
- public Integer getPriceInCents()
- {
- return priceInCents;
- }
-
- public int getRecurringInterval()
- {
- return recurringInterval;
- }
-
- public IntervalUnit getIntervalUnit()
- {
- return intervalUnit;
- }
-
- public String getInitialChargeInCents()
- {
- return initialChargeInCents;
- }
-
- public void setInitialChargeInCents( String initialChargeInCents )
- {
- this.initialChargeInCents = initialChargeInCents;
- }
-
- public Integer getTrialInterval()
- {
- return trialInterval;
- }
-
- public void setTrialInterval( Integer trialInterval )
- {
- this.trialInterval = trialInterval;
- }
-
- public String getTrialIntervalUnit()
- {
- return trialIntervalUnit;
- }
-
- public void setTrialIntervalUnit( String trialIntervalUnit )
- {
- this.trialIntervalUnit = trialIntervalUnit;
- }
-
- public Date getArchivedAt()
- {
- return archivedAt;
- }
-
- public void setArchivedAt( Date archivedAt )
- {
- this.archivedAt = archivedAt;
- }
-
- public Boolean getRequireCreditCard()
- {
- return requireCreditCard;
- }
-
- public void setRequireCreditCard( Boolean requireCreditCard )
- {
- this.requireCreditCard = requireCreditCard;
- }
-
- public String getReturnParams()
- {
- return returnParams;
- }
-
- public void setReturnParams( String returnParams )
- {
- this.returnParams = returnParams;
- }
-
- public Boolean getTaxable()
- {
- return taxable;
- }
-
- public void setTaxable( Boolean taxable )
- {
- this.taxable = taxable;
- }
-
- public String getUpdateReturnUrl()
- {
- return updateReturnUrl;
- }
-
- public void setUpdateReturnUrl( String updateReturnUrl )
- {
- this.updateReturnUrl = updateReturnUrl;
- }
-
- public Boolean getInitialChargeAfterTrial()
- {
- return initialChargeAfterTrial;
- }
-
- public void setInitialChargeAfterTrial( Boolean initialChargeAfterTrial )
- {
- this.initialChargeAfterTrial = initialChargeAfterTrial;
- }
-
- public Integer getVersionNumber()
- {
- return versionNumber;
- }
-
- public void setVersionNumber( Integer versionNumber )
- {
- this.versionNumber = versionNumber;
- }
-
- public String getUpdateReturnParams()
- {
- return updateReturnParams;
- }
-
- public void setUpdateReturnParams( String updateReturnParams )
- {
- this.updateReturnParams = updateReturnParams;
- }
-
- public ProductFamily getProductFamily()
- {
- return productFamily;
- }
-
- public void setProductFamily( ProductFamily productFamily )
- {
- this.productFamily = productFamily;
- }
-
- public List getPublicSignupPages()
- {
- return publicSignupPages;
- }
-
- public void setPublicSignupPages( List publicSignupPages )
- {
- this.publicSignupPages = publicSignupPages;
- }
-
- public Integer getTrialPriceInCents()
- {
- return trialPriceInCents;
- }
-
- public void setTrialPriceInCents( Integer trialPriceInCents )
- {
- this.trialPriceInCents = trialPriceInCents;
- }
-
- @Override
- public String toString()
- {
- return "Product{" +
- "id='" + id + '\'' +
- ", name='" + name + '\'' +
- ", handle='" + handle + '\'' +
- ", description='" + description + '\'' +
- ", accountingCode='" + accountingCode + '\'' +
- ", requestCreditCard=" + requestCreditCard +
- ", expirationInterval='" + expirationInterval + '\'' +
- ", expirationIntervalUnit='" + expirationIntervalUnit + '\'' +
- ", createdAt=" + createdAt +
- ", updatedAt=" + updatedAt +
- ", priceInCents=" + priceInCents +
- ", recurringInterval=" + recurringInterval +
- ", intervalUnit=" + intervalUnit +
- ", initialChargeInCents='" + initialChargeInCents + '\'' +
- ", trialPriceInCents=" + trialPriceInCents +
- ", trialInterval=" + trialInterval +
- ", trialIntervalUnit='" + trialIntervalUnit + '\'' +
- ", archivedAt=" + archivedAt +
- ", requireCreditCard=" + requireCreditCard +
- ", returnParams='" + returnParams + '\'' +
- ", taxable=" + taxable +
- ", updateReturnUrl='" + updateReturnUrl + '\'' +
- ", initialChargeAfterTrial=" + initialChargeAfterTrial +
- ", versionNumber=" + versionNumber +
- ", updateReturnParams='" + updateReturnParams + '\'' +
- ", productFamily=" + productFamily +
- ", publicSignupPages=" + publicSignupPages +
- '}';
- }
-
- public enum IntervalUnit
- {
- month, day
- }
-}
diff --git a/src/main/java/com/chargify/model/Subscription.java b/src/main/java/com/chargify/model/Subscription.java
index 8e5db04..5a2df95 100644
--- a/src/main/java/com/chargify/model/Subscription.java
+++ b/src/main/java/com/chargify/model/Subscription.java
@@ -18,6 +18,7 @@
package com.chargify.model;
+import com.chargify.model.product.Product;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
diff --git a/src/main/java/com/chargify/model/SubscriptionComponent.java b/src/main/java/com/chargify/model/SubscriptionComponent.java
index 7839b88..f9c4e97 100644
--- a/src/main/java/com/chargify/model/SubscriptionComponent.java
+++ b/src/main/java/com/chargify/model/SubscriptionComponent.java
@@ -20,14 +20,16 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
import java.io.Serializable;
+@Data
@JsonInclude( JsonInclude.Include.NON_NULL )
public class SubscriptionComponent implements Serializable
{
@JsonProperty( "component_id" )
- private String componentId;
+ private Integer componentId;
@JsonProperty( "subscription_id" )
private String subscriptionId;
@@ -51,93 +53,9 @@ public class SubscriptionComponent implements Serializable
@JsonProperty( "allocated_quantity" )
private Integer allocatedQuantity;
- public String getComponentId()
- {
- return componentId;
- }
+ @JsonProperty( "price_point_id" )
+ private Integer pricePointId;
- public void setComponentId( String componentId )
- {
- this.componentId = componentId;
- }
-
- public String getSubscriptionId()
- {
- return subscriptionId;
- }
-
- public void setSubscriptionId( String subscriptionId )
- {
- this.subscriptionId = subscriptionId;
- }
-
- public Integer getUnitBalance()
- {
- return unitBalance;
- }
-
- public void setUnitBalance( Integer unitBalance )
- {
- this.unitBalance = unitBalance;
- }
-
- public String getPricingScheme()
- {
- return pricingScheme;
- }
-
- public void setPricingScheme( String pricingScheme )
- {
- this.pricingScheme = pricingScheme;
- }
-
- public String getName()
- {
- return name;
- }
-
- public void setName( String name )
- {
- this.name = name;
- }
-
- public ComponentKind getKind()
- {
- return kind;
- }
-
- public void setKind( ComponentKind kind )
- {
- this.kind = kind;
- }
-
- public String getUnitName()
- {
- return unitName;
- }
-
- public void setUnitName( String unitName )
- {
- this.unitName = unitName;
- }
-
- public Boolean getEnabled()
- {
- return enabled;
- }
-
- public void setEnabled( Boolean enabled )
- {
- this.enabled = enabled;
- }
-
- public Integer getAllocatedQuantity()
- {
- return allocatedQuantity;
- }
-
- public void setAllocatedQuantity( Integer allocatedQuantity )
- {
- this.allocatedQuantity = allocatedQuantity;
- }
+ @JsonProperty( "price_point_handle" )
+ private String pricePointHandle;
}
diff --git a/src/main/java/com/chargify/model/SubscriptionProductUpdate.java b/src/main/java/com/chargify/model/SubscriptionProductUpdate.java
new file mode 100644
index 0000000..e9c2853
--- /dev/null
+++ b/src/main/java/com/chargify/model/SubscriptionProductUpdate.java
@@ -0,0 +1,22 @@
+package com.chargify.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@JsonInclude( JsonInclude.Include.NON_NULL )
+public class SubscriptionProductUpdate implements Serializable
+{
+
+ @JsonProperty( "product_handle" )
+ private String productHandle;
+
+ @JsonProperty( "product_change_delayed" )
+ private boolean changeDelayed;
+
+ @JsonProperty( "product_price_point_handle" )
+ private String pricePointHandle;
+}
diff --git a/src/main/java/com/chargify/model/product/Product.java b/src/main/java/com/chargify/model/product/Product.java
new file mode 100644
index 0000000..59170fc
--- /dev/null
+++ b/src/main/java/com/chargify/model/product/Product.java
@@ -0,0 +1,111 @@
+package com.chargify.model.product;
+
+import com.chargify.model.PricePointIntervalUnit;
+import com.chargify.model.PublicSignupPage;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@JsonInclude( JsonInclude.Include.NON_NULL )
+public class Product implements Serializable
+{
+ private String id;
+
+ private String name;
+
+ private String handle;
+
+ private String description;
+
+ @JsonProperty( "accounting_code" )
+ private String accountingCode;
+
+ @JsonProperty( "request_credit_card" )
+ private Boolean requestCreditCard;
+
+ @JsonProperty( "expiration_interval" )
+ private String expirationInterval;
+
+ @JsonProperty( "expiration_interval_unit" )
+ private String expirationIntervalUnit;
+
+ @JsonProperty( "created_at" )
+ private Date createdAt;
+
+ @JsonProperty( "updated_at" )
+ private Date updatedAt;
+
+ @JsonProperty( "price_in_cents" )
+ private int priceInCents;
+
+ @JsonProperty( "interval" )
+ private int recurringInterval;
+
+ @JsonProperty( "interval_unit" )
+ private PricePointIntervalUnit intervalUnit;
+
+ @JsonProperty( "initial_charge_in_cents" )
+ private String initialChargeInCents;
+
+ @JsonProperty( "trial_price_in_cents" )
+ private Integer trialPriceInCents;
+
+ @JsonProperty( "trial_interval" )
+ private Integer trialInterval;
+
+ @JsonProperty( "trial_interval_unit" )
+ private PricePointIntervalUnit trialIntervalUnit;
+
+ @JsonProperty( "archived_at" )
+ private Date archivedAt;
+
+ @JsonProperty( "require_credit_card" )
+ private Boolean requireCreditCard;
+
+ @JsonProperty( "return_params" )
+ private String returnParams;
+
+ @JsonProperty( "product_price_point_name" )
+ private String productPricePointName;
+
+ @JsonProperty( "product_price_point_handle" )
+ private String productPricePointHandle;
+
+ private Boolean taxable;
+
+ @JsonProperty( "update_return_url" )
+ private String updateReturnUrl;
+
+ @JsonProperty( "initial_charge_after_trial" )
+ private Boolean initialChargeAfterTrial;
+
+ @JsonProperty( "version_number" )
+ private Integer versionNumber;
+
+ @JsonProperty( "update_return_params" )
+ private String updateReturnParams;
+
+ @JsonProperty( "product_family" )
+ private ProductFamily productFamily;
+
+ @JsonProperty( "public_signup_pages" )
+ private List publicSignupPages;
+
+ @JsonCreator
+ public Product( @JsonProperty( "name" ) final String name,
+ @JsonProperty( "price" ) final int priceInCents,
+ @JsonProperty( "interval" ) final int recurringInterval,
+ @JsonProperty( "interval_unit" ) final PricePointIntervalUnit intervalUnit )
+ {
+ this.name = name;
+ this.priceInCents = priceInCents;
+ this.recurringInterval = recurringInterval;
+ this.intervalUnit = intervalUnit;
+ }
+}
diff --git a/src/main/java/com/chargify/model/ProductComponentItem.java b/src/main/java/com/chargify/model/product/ProductComponentItem.java
similarity index 98%
rename from src/main/java/com/chargify/model/ProductComponentItem.java
rename to src/main/java/com/chargify/model/product/ProductComponentItem.java
index 859a126..ee155a8 100644
--- a/src/main/java/com/chargify/model/ProductComponentItem.java
+++ b/src/main/java/com/chargify/model/product/ProductComponentItem.java
@@ -16,7 +16,7 @@
* ********************************************************************************************************************
*/
-package com.chargify.model;
+package com.chargify.model.product;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/chargify/model/ProductFamily.java b/src/main/java/com/chargify/model/product/ProductFamily.java
similarity index 97%
rename from src/main/java/com/chargify/model/ProductFamily.java
rename to src/main/java/com/chargify/model/product/ProductFamily.java
index 3174306..9986c2f 100644
--- a/src/main/java/com/chargify/model/ProductFamily.java
+++ b/src/main/java/com/chargify/model/product/ProductFamily.java
@@ -1,4 +1,4 @@
-package com.chargify.model;
+package com.chargify.model.product;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/chargify/model/product/ProductPricePoint.java b/src/main/java/com/chargify/model/product/ProductPricePoint.java
new file mode 100644
index 0000000..48464bc
--- /dev/null
+++ b/src/main/java/com/chargify/model/product/ProductPricePoint.java
@@ -0,0 +1,53 @@
+package com.chargify.model.product;
+
+import com.chargify.model.PricePointIntervalUnit;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@JsonInclude( JsonInclude.Include.NON_NULL )
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ProductPricePoint implements Serializable
+{
+ private Integer id;
+ private String name;
+ private String handle;
+ @JsonProperty( "price_in_cents" )
+ private Integer priceInCents;
+ private Integer interval;
+ @JsonProperty( "interval_unit" )
+ private PricePointIntervalUnit intervalUnit;
+ @JsonProperty( "trial_price_in_cents" )
+ private Integer trialPriceInCents;
+ @JsonProperty( "trial_interval" )
+ private Integer trialInterval;
+ @JsonProperty( "trial_interval_unit" )
+ private PricePointIntervalUnit trialIntervalUnit;
+ @JsonProperty( "trial_type" )
+ private String trialType;
+ @JsonProperty( "initial_charge_in_cents" )
+ private Integer initialChargeInCents;
+ @JsonProperty( "initial_charge_after_trial" )
+ private boolean initialChargeAfterTrial = false;
+ @JsonProperty( "expiration_interval" )
+ private Integer expirationInterval;
+ @JsonProperty( "expiration_interval_unit" )
+ private String expirationIntervalUnit;
+ @JsonProperty( "product_id" )
+ private String productId;
+ @JsonProperty( "archived_at" )
+ private String archivedAt;
+ @JsonProperty( "created_at" )
+ private String createdAt;
+ @JsonProperty( "updated_at" )
+ private String updatedAt;
+ @JsonProperty( "use_site_exchange_rate" )
+ private Boolean useSiteExchangeRate;
+
+}
diff --git a/src/main/java/com/chargify/model/wrappers/AllocationPreviewWrapper.java b/src/main/java/com/chargify/model/wrappers/AllocationPreviewWrapper.java
new file mode 100644
index 0000000..61528ee
--- /dev/null
+++ b/src/main/java/com/chargify/model/wrappers/AllocationPreviewWrapper.java
@@ -0,0 +1,18 @@
+package com.chargify.model.wrappers;
+
+import com.chargify.model.AllocationPreview;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+
+public final class AllocationPreviewWrapper
+{
+ @Getter
+ private final AllocationPreview allocationPreview;
+
+ @JsonCreator
+ public AllocationPreviewWrapper( @JsonProperty( "allocation_preview" ) AllocationPreview allocationPreview )
+ {
+ this.allocationPreview = allocationPreview;
+ }
+}
diff --git a/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java b/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java
index 1a7ade9..21c0e90 100644
--- a/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java
+++ b/src/main/java/com/chargify/model/wrappers/ComponentPricePointUpdatesWrapper.java
@@ -3,31 +3,29 @@
import com.chargify.model.ComponentPricePointUpdate;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AccessLevel;
+import lombok.Data;
+import lombok.Setter;
import java.util.Arrays;
+import java.util.List;
+@Data
+@Setter( AccessLevel.NONE )
public final class ComponentPricePointUpdatesWrapper
{
- private final ComponentPricePointUpdate[] pricePointUpdates;
+ @JsonProperty( "components" )
+ private final List pricePointUpdates;
@JsonCreator
public ComponentPricePointUpdatesWrapper(
@JsonProperty( "components" ) ComponentPricePointUpdate... pricePointUpdates )
{
- this.pricePointUpdates = pricePointUpdates;
+ this.pricePointUpdates = Arrays.asList( pricePointUpdates );
}
- @JsonProperty( "components" )
- public ComponentPricePointUpdate[] getPricePointUpdates()
+ public ComponentPricePointUpdatesWrapper( List pricePointUpdates )
{
- return pricePointUpdates;
- }
-
- @Override
- public String toString()
- {
- return "ComponentPricePointUpdatesWrapper{" +
- "pricePointUpdates=" + Arrays.toString( pricePointUpdates ) +
- '}';
+ this.pricePointUpdates = pricePointUpdates;
}
}
diff --git a/src/main/java/com/chargify/model/wrappers/ComponentPricePointsWrapper.java b/src/main/java/com/chargify/model/wrappers/ComponentPricePointsWrapper.java
new file mode 100644
index 0000000..d88db76
--- /dev/null
+++ b/src/main/java/com/chargify/model/wrappers/ComponentPricePointsWrapper.java
@@ -0,0 +1,22 @@
+package com.chargify.model.wrappers;
+
+import com.chargify.model.PricePoint;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.ToString;
+
+import java.util.Set;
+
+@ToString
+public final class ComponentPricePointsWrapper
+{
+ @Getter
+ private final Set pricePoints;
+
+ @JsonCreator
+ public ComponentPricePointsWrapper( @JsonProperty( "price_points" ) Set pricePoints )
+ {
+ this.pricePoints = pricePoints;
+ }
+}
diff --git a/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java b/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java
index 76a281f..d3af269 100644
--- a/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java
+++ b/src/main/java/com/chargify/model/wrappers/ProductFamilyWrapper.java
@@ -1,6 +1,6 @@
package com.chargify.model.wrappers;
-import com.chargify.model.ProductFamily;
+import com.chargify.model.product.ProductFamily;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/main/java/com/chargify/model/wrappers/ProductPricePointsWrapper.java b/src/main/java/com/chargify/model/wrappers/ProductPricePointsWrapper.java
new file mode 100644
index 0000000..f365730
--- /dev/null
+++ b/src/main/java/com/chargify/model/wrappers/ProductPricePointsWrapper.java
@@ -0,0 +1,22 @@
+package com.chargify.model.wrappers;
+
+import com.chargify.model.product.ProductPricePoint;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.ToString;
+
+import java.util.Set;
+
+@ToString
+public final class ProductPricePointsWrapper
+{
+ @Getter
+ private final Set pricePoints;
+
+ @JsonCreator
+ public ProductPricePointsWrapper( @JsonProperty( "price_points" ) Set pricePoints )
+ {
+ this.pricePoints = pricePoints;
+ }
+}
diff --git a/src/main/java/com/chargify/model/wrappers/ProductWrapper.java b/src/main/java/com/chargify/model/wrappers/ProductWrapper.java
index 31651c5..09e1482 100644
--- a/src/main/java/com/chargify/model/wrappers/ProductWrapper.java
+++ b/src/main/java/com/chargify/model/wrappers/ProductWrapper.java
@@ -1,6 +1,6 @@
package com.chargify.model.wrappers;
-import com.chargify.model.Product;
+import com.chargify.model.product.Product;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/main/java/com/chargify/model/wrappers/SubscriptionProductUpdateWrapper.java b/src/main/java/com/chargify/model/wrappers/SubscriptionProductUpdateWrapper.java
new file mode 100644
index 0000000..4a66e2c
--- /dev/null
+++ b/src/main/java/com/chargify/model/wrappers/SubscriptionProductUpdateWrapper.java
@@ -0,0 +1,19 @@
+package com.chargify.model.wrappers;
+
+import com.chargify.model.SubscriptionProductUpdate;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+
+public final class SubscriptionProductUpdateWrapper
+{
+ @Getter
+ private final SubscriptionProductUpdate subscription;
+
+ @JsonCreator
+ public SubscriptionProductUpdateWrapper( @JsonProperty( "subscription" )
+ SubscriptionProductUpdate wrappedSubscription )
+ {
+ this.subscription = wrappedSubscription;
+ }
+}
diff --git a/src/test/java/com/chargify/ComponentsTest.java b/src/test/java/com/chargify/ComponentsTest.java
index 9529b25..61e71dd 100644
--- a/src/test/java/com/chargify/ComponentsTest.java
+++ b/src/test/java/com/chargify/ComponentsTest.java
@@ -2,7 +2,7 @@
import com.chargify.model.Component;
import com.chargify.model.ComponentKind;
-import com.chargify.model.ProductFamily;
+import com.chargify.model.product.ProductFamily;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
diff --git a/src/test/java/com/chargify/ProductFamiliesTest.java b/src/test/java/com/chargify/ProductFamiliesTest.java
index 3e3083c..1dcffe5 100644
--- a/src/test/java/com/chargify/ProductFamiliesTest.java
+++ b/src/test/java/com/chargify/ProductFamiliesTest.java
@@ -1,7 +1,7 @@
package com.chargify;
import com.chargify.exceptions.ApiHandleNotUniqueException;
-import com.chargify.model.ProductFamily;
+import com.chargify.model.product.ProductFamily;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
diff --git a/src/test/java/com/chargify/ProductsTest.java b/src/test/java/com/chargify/ProductsTest.java
index a211308..1d9cb17 100644
--- a/src/test/java/com/chargify/ProductsTest.java
+++ b/src/test/java/com/chargify/ProductsTest.java
@@ -1,8 +1,9 @@
package com.chargify;
import com.chargify.exceptions.ChargifyException;
-import com.chargify.model.Product;
-import com.chargify.model.ProductFamily;
+import com.chargify.model.PricePointIntervalUnit;
+import com.chargify.model.product.Product;
+import com.chargify.model.product.ProductFamily;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -23,9 +24,9 @@ public static void setup()
productUnderTest = chargify.createProduct( productFamilyUnderTest.getId(),
new Product( randomName(), 0, 1,
- Product.IntervalUnit.month ) );
+ PricePointIntervalUnit.month ) );
- final Product productWithHandle = new Product( randomName(), 0, 1, Product.IntervalUnit.month );
+ final Product productWithHandle = new Product( randomName(), 0, 1, PricePointIntervalUnit.month );
productWithHandle.setHandle( randomName() );
productWithHandleUnderTest = chargify.createProduct( productFamilyUnderTest.getId(), productWithHandle );
}
diff --git a/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java b/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java
index 872c119..092079f 100644
--- a/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java
+++ b/src/test/java/com/chargify/SubscriptionDelayedChangeTest.java
@@ -2,8 +2,9 @@
import com.chargify.model.CreateSubscription;
import com.chargify.model.Customer;
-import com.chargify.model.Product;
-import com.chargify.model.ProductFamily;
+import com.chargify.model.PricePointIntervalUnit;
+import com.chargify.model.product.Product;
+import com.chargify.model.product.ProductFamily;
import com.chargify.model.Subscription;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -25,12 +26,12 @@ public static void setup()
{
productFamily = chargify.createProductFamily( new ProductFamily( randomName() ) );
- final Product initialProduct = new Product( randomName(), 0, 1, Product.IntervalUnit.month );
+ final Product initialProduct = new Product( randomName(), 0, 1, PricePointIntervalUnit.month );
initialProduct.setRequestCreditCard( false );
initialProduct.setRequireCreditCard( false );
SubscriptionDelayedChangeTest.initialProduct = chargify.createProduct( productFamily.getId(), initialProduct );
- final Product targetProduct = new Product( randomName(), 0, 1, Product.IntervalUnit.month );
+ final Product targetProduct = new Product( randomName(), 0, 1, PricePointIntervalUnit.month );
targetProduct.setRequestCreditCard( false );
targetProduct.setRequireCreditCard( false );
targetProduct.setHandle( randomName() );
diff --git a/src/test/java/com/chargify/SubscriptionsTest.java b/src/test/java/com/chargify/SubscriptionsTest.java
index 78e927f..6fc2a68 100644
--- a/src/test/java/com/chargify/SubscriptionsTest.java
+++ b/src/test/java/com/chargify/SubscriptionsTest.java
@@ -2,8 +2,9 @@
import com.chargify.model.CreateSubscription;
import com.chargify.model.Customer;
-import com.chargify.model.Product;
-import com.chargify.model.ProductFamily;
+import com.chargify.model.PricePointIntervalUnit;
+import com.chargify.model.product.Product;
+import com.chargify.model.product.ProductFamily;
import com.chargify.model.Subscription;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -31,7 +32,7 @@ public static void setup()
{
productFamilyUnderTest = chargify.createProductFamily( new ProductFamily( randomName() ) );
- final Product product = new Product( randomName(), 0, 1, Product.IntervalUnit.month );
+ final Product product = new Product( randomName(), 0, 1, PricePointIntervalUnit.month );
product.setRequestCreditCard( false );
product.setRequireCreditCard( false );
productUnderTest = chargify.createProduct( productFamilyUnderTest.getId(), product );