Skip to content

voucherifyio/voucherify-dotNET-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Official Voucherify SDK for .NET Framework

Build Status Build Status Build Status


Frameworks supported | Dependencies | Setup | Callback or Async? | Unity | Xamarin | Contributing | Changelog

API: Vouchers | Campaigns | Distributions | Validations | Redemptions | Customers | Consents | Products | Products | Products | Promotions | Segments | Validation Rules


Build

Run with dotnet cli

Build & Pack: sh ./run-build.sh Tests: sh ./run-tests.sh

Run with nuget

Prerequisites

  • Visual Studio
  • nuget install xunit.runner.console -Version 2.2.0 -OutputDirectory testrunner

Tests

nuget restore ./src/Tests/Voucherify.Tests.csproj
msbuild /p:"Configuration=Release" ./src/Tests/Voucherify.Tests.csproj
mono ./testrunner/xunit.runner.console.2.2.0/tools/xunit.console.exe ./src/Tests/bin/Release/netcoreapp2.0/Voucherify.Tests.dll

Server

nuget restore ./src/Voucherify/Voucherify.csproj
msbuild /p:"Configuration=Release" ./src/Voucherify/Voucherify.csproj
nuget pack ./src/Voucherify/Voucherify.nuspec

Client

nuget restore ./src/Voucherify/Voucherify.Client.csproj
msbuild /p:"Configuration=Release" ./src/Voucherify/Voucherify.Client.csproj
nuget pack ./src/Voucherify/Voucherify.Client.nuspec

Running Examples

msbuild /p:"Configuration=Release" ./src/Examples/Examples.Voucherify.net45/Examples.Voucherify.net45.csproj
mono ./src/Examples/Examples.Voucherify.net45/bin/Release/Examples.Voucherify.net45.exe <api_key> <api_token> <voucher_code>

Frameworks supported

  • .NET 2.0 (Server, Client)
  • .NET 3.5 (Server, Client)
  • .NET 4.0 (Server, Client)
  • .NET 4.5 (Server, Client)
  • .NET 6.0 (Server, Client)
  • .NET Standard 2.0 (Client, Server) - for Unity, Xamarin, etc.

TLS support

Due to security resons old versions of TLS (1.0 and 1.1) will be deprecated soon and our api will not accept any calls using those layers. Thus, we decided to switch .NET SDK to use TLS 1.2 already. The following articles will help you setup your environemnt:

Dependencies

The DLLs included in the package may not be the latest version. We recommend using NuGet to obtain the latest version of the packages:

Install-Package Newtonsoft.Json

Setup

Server Side Library

Install-Package Voucherify

Or simple use libraries from lib/{target-framework} folder:

  • Voucherify.dll - Server Side Library

Log-in to Voucherify web interface and obtain your Server Side Keys from Configuration:

var api = new Voucherify.Api(
            "<app_id>",
            "<token>")            
            .WithSSL();

You can also specify the API verison if needed:

var api = new Voucherify.Api(
            "<app_id>",
            "<token>")            
            .WithSSL()
            .WithVersion(Voucherify.Core.ApiVerions.v2018_08_01);

API Endpoint

Optionally, you can specify API Endpoint if you want to use Voucherify running in a specific region.

var api = new Voucherify.Api(
            "<app_id>",
            "<token>")            
            .WithSSL()
            .WithHost("<region>.api.voucherify.io");

Client Side Library

Install-Package Voucherify.Client

Or simple use libraries from lib/{target-framework} folder:

  • Voucherify.Client.dll - Client Side Library

Log-in to Voucherify web interface and obtain your Client Side Keys from Configuration:

var api = new Voucherify.Client.Api(
    "<client_app_id>",
    "<client_token>",
    "<origin>")
    .WithSSL();

API Endpoint

Optionally, you can specify API Endpoint if you want to use Voucherify running in a specific region.

var api = new Voucherify.Client.Api(
    "<client_app_id>",
    "<client_token>",
    "<origin>")
    .WithSSL()
    .WithHost("<region>.api.voucherify.io");

Callback or Async?

Callbacks Usage (.NET 2.0 - .NET 4.0)

api.Vouchers.Get("<your-voucher-code>", (response) =>
            {
                if (response.Exception != null)
                {
                    Console.WriteLine("Exception: {0}", response.Exception);
                }
                else
                {
                    Console.WriteLine("Voucher: {0}", response.Result);
                }
            });

Async Usage (.NET 4.5, .NET 6.0 .NET Standard 2.0)

        try
        {
            Voucher newVoucher = new Voucher()
            {
                Discount = Discount.WithAmountOff(10),
                Type = VoucherType.DiscountVoucher
            };

            Voucher voucher = await api.Vouchers.CreateVoucher(newVoucher);
            Console.WriteLine("Voucher: {0}", voucher);
        }
        catch (VoucherifyClientException exception)
        {
            Console.WriteLine("Exception: {0}", exception);
        }

API

This SDK is fully consistent with restufl API Voucherify provides. Detalied description and example responses you will find at official docs. Method headers point to more detalied params description you can use.

Vouchers API

Methods are provided within Api.Vouchers.* namespace.

public async Task<DataModel.Voucher> Create(DataModel.Contexts.VoucherCreate voucher)
public async Task<DataModel.Voucher> Create(string code, DataModel.Contexts.VoucherCreate voucher)

public void Create(DataModel.Contexts.VoucherCreate voucher, Action<ApiResponse<DataModel.Voucher>> callback)
public void Create(string code, DataModel.Contexts.VoucherCreate voucher, Action<ApiResponse<DataModel.Voucher>> callback)

Check voucher object.

public async Task<DataModel.Voucher> Get(string code)

public void Get(string code, Action<ApiResponse<DataModel.Voucher>> callback)
public async Task<DataModel.Voucher> Update(string code, DataModel.Contexts.VoucherUpdate voucher)

public void Update(string code, DataModel.Contexts.VoucherUpdate voucher, Action<ApiResponse<DataModel.Voucher>> callback)
public async Task Delete(string code)
public async Task Delete(string code, Core.DataModel.ForcedOperation query query)

public void Delete(string code, Action<ApiResponse> callback)
public void Delete(string code, Core.DataModel.ForcedOperation query query, Action<ApiResponse> callback)
public async Task<IList<DataModel.Voucher>> List(DataModel.Queries.VouchersFilter filter)

public void List(DataModel.Queries.VouchersFilter filter, Action<ApiResponse<IList<DataModel.Voucher>>> callback)
public async Task<DataModel.Voucher> Enable(string code)

public void Enable(string code, Action<ApiResponse<DataModel.Voucher>> callback)
public async Task<DataModel.Voucher> Disable(string code)

public void Disable(string code, Action<ApiResponse<DataModel.Voucher>> callback)
public async Task<Core.DataModel.Empty> Import(List<DataModel.Contexts.VoucherImport> vouchers)

public void Import(List<DataModel.Contexts.VoucherImport> vouchers, Action<ApiResponse<Core.DataModel.Empty>> callback)

[Add Gift Balance]

public async Task<DataModel.Balance> AddGiftBalance(string code, DataModel.Contexts.VoucherAddGiftBalance balance)
        
public void AddGiftBalance(string code, DataModel.Contexts.VoucherAddGiftBalance balance, Action<ApiResponse<DataModel.Balance>> callback)

Campaigns API

Methods are provided within Api.Campaigns.* namespace.

public async Task<DataModel.Campaign> Create(DataModel.Contexts.CampaignCreate campaign)

public void Create(DataModel.Contexts.CampaignCreate campaign, Action<ApiResponse<DataModel.Campaign>> callback)
public async Task<DataModel.Campaign> Get(string name)

public void Get(string name, Action<ApiResponse<DataModel.Campaign>> callback)

[Update Campaign]

public async Task<DataModel.Campaign> Update(string name, DataModel.Contexts.CampaignUpdate campaign)

public void Update(string name, DataModel.Contexts.CampaignUpdate campaign, Action<ApiResponse<DataModel.Campaign>> callback)

[Delete Campaigns]

public async Task Delete(string name)
public async Task Delete(string name, Core.DataModel.ForcedOperation query query)
        
public void Delete(string name, Action<ApiResponse> callback)
public void Delete(string name, Core.DataModel.ForcedOperation query query, Action<ApiResponse> callback)

[List Campaigns]

public async Task<DataModel.CampaignList> List(DataModel.Queries.CampaignFilter filter)
 
public void List(DataModel.Queries.CampaignFilter filter, Action<ApiResponse<DataModel.CampaignList>> callback)    
public async Task<DataModel.Voucher> AddVoucher(string name, DataModel.Contexts.CampaignAddVoucher addVoucherContext)

public void AddVoucher(string name, DataModel.Contexts.CampaignAddVoucher addVoucherContext, Action<ApiResponse<DataModel.Voucher>> callback)
public async Task<Core.DataModel.Empty> ImportVouchers(string name, List<DataModel.Contexts.CampaignVoucherImport> addVoucherContext)

public void ImportVouchers(string name, List<DataModel.Contexts.CampaignVoucherImport> addVoucherContext, Action<ApiResponse<Core.DataModel.Empty>> callback)

Distributions API

Methods are provided within Api.Distributions.* namespace.

public async Task<DataModel.PublicationSingle> Publish(DataModel.Contexts.VoucherPublishSingle context)

public void Publish(DataModel.Contexts.VoucherPublishSingle context, Action<ApiResponse<DataModel.PublicatioSingle>> callback)
public async Task<DataModel.Publication> CreatePublication(DataModel.Contexts.VoucherPublish context)

public void CreatePublication(DataModel.Contexts.VoucherPublish context, Action<ApiResponse<DataModel.Publication>> callback)

Validations API

Methods are provided within Api.Validations.* namespace.

public async Task<DataModel.Validation> ValidateVoucher(string code, DataModel.Contexts.Validation context)

public void ValidateVoucher(string code, DataModel.Contexts.Validation context, Action<ApiResponse<DataModel.Validation>> callback)

[Validate Promotion]

public async Task<DataModel.Validation> ValidatePromotion(DataModel.Contexts.Validation context)

public void ValidatePromotion(DataModel.Contexts.Validation context, Action<ApiResponse<DataModel.Validation>> callback)

[Validate]

public async Task<DataModel.Validation> Validate(string code, DataModel.Contexts.Validation context)

public void Validate(string code, DataModel.Contexts.Validation context, Action<ApiResponse<DataModel.Validation>> callback)

[Validate Stackable]

public async Task<DataModel.StackableValidation> Validate(DataModel.Contexts.StackableValidation context)

public void Validate(DataModel.Contexts.StackableValidation context, Action<ApiResponse<DataModel.StackableValidation>> callback)

Redemptions API

Methods are provided within Api.Redemptions.* namespace.

public async Task<DataModel.Redemption> RedeemVoucher(string code, DataModel.Queries.RedemptionRedeem query, DataModel.Contexts.RedemptionRedeem context)
        
public void RedeemVoucher(string code, DataModel.Queries.RedemptionRedeem query, DataModel.Contexts.RedemptionRedeem context, Action<ApiResponse<DataModel.Redemption>> callback)        

[Redeem Promotion]

public async Task<DataModel.Redemption> RedeemPromotion(string promotionId, DataModel.Contexts.RedemptionRedeem context)

public void RedeemPromotion(string promotionId, DataModel.Contexts.RedemptionRedeem context, Action<ApiResponse<DataModel.Redemption>> callback)        

[Redeem]

public async Task<DataModel.Redemption> Redeem(string code, DataModel.Contexts.RedemptionRedeem context)

public void Redeem(string code, DataModel.Queries.RedemptionRedeem query, DataModel.Contexts.RedemptionRedeem context, Action<ApiResponse<DataModel.Results.RedemptionRedeem>> callback)

[Get Redemption]

public async Task<DataModel.Redemption> Get(string redemptionId)

public void Get(string redemptionId, Action<ApiResponse<DataModel.Redemption>> callback)
public async Task<DataModel.RedemptionList> List(DataModel.Queries.RedemptionsFilter filter)

public void List(DataModel.Queries.RedemptionsFilter filter, Action<ApiResponse<DataModel.RedemptionList>> callback)
public async Task<DataModel.VoucherRedemption> GetForVoucher(string code)

public void GetForVoucher(string code, Action<ApiResponse<DataModel.VoucherRedemption>> callback)
public async Task<DataModel.Results.RedemptionRollback> Rollback(string redemptionId, DataModel.Queries.RedemptionRollback query, DataModel.Contexts.RedemptionRollback context)

public void Rollback(string redemptionId, DataModel.Queries.RedemptionRollback query, DataModel.Contexts.RedemptionRollback context, Action<ApiResponse<DataModel.Results.RedemptionRollback>> callback)

Check redemption rollback object.

[Redeem Stackable]

public async Task<DataModel.StackableRedemption> Redeem(DataModel.Contexts.StackableRedemptionRedeem context)

public void Redeem(DataModel.Contexts.StackableRedemptionRedeem context, Action<ApiResponse<DataModel.StackableRedemption>> callback)

Customers API

Methods are provided within Api.Customers.* namespace.

public async Task<DataModel.Customer> Create(DataModel.Contexts.CustomerCreate customer)

public void Create(DataModel.Contexts.CustomerCreate customer, Action<ApiResponse<DataModel.Customer>> callback)

Check customer object.

public async Task<DataModel.Customer> Get(string customerId)

public void Get(string customerId, Action<ApiResponse<DataModel.Customer>> callback)
public async Task<DataModel.Customer> Update(string customerId, DataModel.Contexts.CustomerUpdate customer)

public void Update(string customerId, DataModel.Contexts.CustomerUpdate customer, Action<ApiResponse<DataModel.Customer>> callback)
public async Task Delete(string customerId)

public void Delete(string customerId, Action<ApiResponse> callback)

[List Customers]

public async Task<DataModel.CustomerList> List(DataModel.Queries.CustomerFilter filter)

public void List(DataModel.Queries.CustomerFilter filter, Action<ApiResponse<DataModel.CustomerList>> callback)

[Update Consents]

public async Task<Core.DataModel.Empty> UpdateConsents(string customerId, DataModel.Contexts.CustomerConsentUpdate update)

public void UpdateConsents(string customerId, DataModel.Contexts.CustomerConsentUpdate update, Action<ApiResponse<Core.DataModel.Empty>> callback)

Consents API

Methods are provided within Api.Consents.* namespace.

[List Consents]

public async Task<DataModel.ConsentAndGroupList> List()

public void List(Action<ApiResponse<DataModel.ConsentAndGroupList>> callback)

Products API

Methods are provided within Api.Products.* namespace.

public async Task<DataModel.Product> Create(DataModel.Contexts.ProductCreate product)

public void Create(DataModel.Contexts.ProductCreate product, Action<ApiResponse<DataModel.Product>> callback)

Check product object.

public async Task<DataModel.Product> Get(string productId)

public void Get(string productId, Action<ApiResponse<DataModel.Product>> callback)
public async Task<DataModel.Product> Update(string productId, DataModel.Contexts.ProductUpdate product)

public void Update(string productId, DataModel.Contexts.ProductUpdate product, Action<ApiResponse<DataModel.Product>> callback)
public async Task Delete(string productId)
public async Task Delete(string productId, Core.DataModel.ForcedOperation query)

public void Delete(string productId, Action<ApiResponse> callback)
public void Delete(string productId, Core.DataModel.ForcedOperation query, Action<ApiResponse> callback)
public async Task<DataModel.ProductList> List()

public void List(Action<ApiResponse<DataModel.ProductList>> callback)
public async Task<DataModel.Sku> CreateSku(string productId, DataModel.Contexts.SkuCreate sku)

public void CreateSku(string productId, DataModel.Contexts.SkuCreate sku, Action<ApiResponse<DataModel.Sku>> callback)

Check SKU object.

public async Task<DataModel.Sku> GetSku(string productId, string skuId)

public void GetSku(string productId, string skuId, Action<ApiResponse<DataModel.Sku>> callback)
public async Task<DataModel.Sku> UpdateSku(string productId, string skuId, DataModel.Contexts.SkuUpdate sku)

public void UpdateSku(string productId, string skuId, DataModel.Contexts.SkuUpdate sku, Action<ApiResponse<DataModel.Sku>> callback)
public async Task DeleteSku(string productId, string skuId)
public async Task DeleteSku(string productId, string skuId, Core.DataModel.ForcedOperation query)

public void DeleteSku(string productId, string skuId, Action<ApiResponse> callback)
public void DeleteSku(string productId, string skuId, Core.DataModel.ForcedOperation query, Action<ApiResponse> callback)
public async Task<DataModel.ProductSkus> ListSkus(string productId)

public void ListSkus(string productId, Action<ApiResponse<DataModel.ProductSkus>> callback)

Events API

Methods are provided within Api.Events.* namespace.

[Create Event]

public async Task<DataModel.Event> Create(DataModel.Contexts.EventCreate eventObject)

public void Create(DataModel.Contexts.EventCreate eventObject, Action<ApiResponse<DataModel.Event>> callback)

Orders API

Methods are provided within Api.Orders.* namespace.

[Create Order]

public async Task<DataModel.Order> Create(DataModel.Contexts.OrderCreate order)

public void Create(DataModel.Contexts.OrderCreate order, Action<ApiResponse<DataModel.Order>> callback)

[Get Order]

public async Task<DataModel.Order> Get(string orderId)

public void Get(string orderId, Action<ApiResponse<DataModel.Order>> callback)

[Update Order]

public async Task<DataModel.Order> Update(string orderId, DataModel.Contexts.OrderUpdate order)

public void Update(string orderId, DataModel.Contexts.OrderUpdate order, Action<ApiResponse<DataModel.Order>> callback)

[List Orders]

public async Task<DataModel.OrderList> List(DataModel.Queries.OrderFilter filter)

public void List(DataModel.Queries.OrderFilter filter, Action<ApiResponse<DataModel.OrderList>> callback)

Promotions API

Methods are provided within Api.Promotions.* namespace.

[Get Promotion Tier]

 public async Task<DataModel.PromotionTier> Get(string promotionTierId)

public void Get(string promotionTierId, Action<ApiResponse<DataModel.PromotionTier>> callback)

[List For Campaign]

public async Task<DataModel.PromotionTierList> ListForCampaign(string campaign)

public void ListForCampaign(string campaign, Action<ApiResponse<DataModel.PromotionTierList>> callback)

[Create Campaing]

public async Task<DataModel.Campaign> CreateCampaign(DataModel.Contexts.CampaignPromotionCreate promotionCampaign)

public void CreateCampaign(DataModel.Contexts.CampaignPromotionCreate promotionCampaign, Action<ApiResponse<DataModel.Campaign>> callback)

[Add Tier To Campaign]

public async Task<DataModel.PromotionTier> AddTierToCampaign(string campaignId, DataModel.Contexts.PromotionTierCreate promotionTier)

public void AddTierToCampaign(string campaignId, DataModel.Contexts.PromotionTierCreate promotionTier, Action<ApiResponse<DataModel.PromotionTier>> callback)

[Update Promotion Tier]

public async Task<DataModel.PromotionTier> Update(string promotionTierId, DataModel.Contexts.PromotionTierUpdate promotionTier)

public void Update(string promotionTierId, DataModel.Contexts.PromotionTierUpdate promotionTier, Action<ApiResponse<DataModel.PromotionTier>> callback)

[Delete Promotion Tier]

public async Task Delete(string promotionTierId)

public void Delete(string promotionTierId, Action<ApiResponse> callback)

Segments API

Methods are provided within Api.Segments.* namespace.

[Get Segment]

public async Task<DataModel.Segment> Get(string segmentId)

public void Get(string segmentId, Action<ApiResponse<DataModel.Segment>> callback)

[Create Segment]

 public async Task<DataModel.Segment> Create(DataModel.Contexts.SegmentCreate voucher)

public void Create(DataModel.Contexts.SegmentCreate voucher, Action<ApiResponse<DataModel.Segment>> callback)

[Delete Segment]

public async Task Delete(string segmentId)

public void Delete(string segmentId, Action<ApiResponse> callback)

Validation Rules API

Methods are provided within Api.ValidationRules.* namespace.

[Create Validation Rule]

public async Task<DataModel.BusinessValidationRule> Create(DataModel.Contexts.BusinessValidationRuleCreate validationRule)

public void Create(DataModel.Contexts.BusinessValidationRuleCreate validationRule, Action<ApiResponse<DataModel.BusinessValidationRule>> callback)

[Get Validation Rule]

public async Task<DataModel.BusinessValidationRule> Get(string validationRuleId)

public void Get(string validationRuleId, Action<ApiResponse<DataModel.BusinessValidationRule>> callback)

[Update Validation Rule]

public async Task<DataModel.BusinessValidationRule> Update(string validationRuleId, DataModel.Contexts.BusinessValidationRuleUpdate validationRule)

public void Update(string validationRuleId, DataModel.Contexts.BusinessValidationRuleUpdate validationRule, Action<ApiResponse<DataModel.BusinessValidationRule>> callback)

[Delete Validation Rule]

public async Task Delete(string validationRuleId)

public void Delete(string validationRuleId, Action<ApiResponse> callback)

[Create Validation Rule Assignment]

public async Task<DataModel.BusinessValidationRuleAssignment> CreateAssignment(string validationRuleId, DataModel.Contexts.BusinessValidationRuleAssignmentCreate validationRule)

public void CreateAssignment(string validationRuleId, DataModel.Contexts.BusinessValidationRuleAssignmentCreate validationRule, Action<ApiResponse<DataModel.BusinessValidationRuleAssignment>> callback)

[Delete Validation Rule Assignment]

public async Task DeleteAssignment(string validationRuleId, string assignmentId)

public void DeleteAssignment(string validationRuleId, string assignmentId, Action<ApiResponse> callback)

[List Validation Rules]

public async Task<DataModel.BusinessValidationRuleList> List(DataModel.Queries.BusinessValidationRuleFilter filter)

public void List(DataModel.Queries.BusinessValidationRuleFilter filter, Action<ApiResponse<DataModel.BusinessValidationRuleList>> callback)

[List Validation Rule Assignments]

public async Task<DataModel.BusinessValidationRuleAssignmentList> ListAssignments(string validationRuleId, DataModel.Queries.BusinessValidationRuleAssignmentFilter filter)

public void ListAssignments(string validationRuleId, DataModel.Queries.BusinessValidationRuleAssignmentFilter filter, Action<ApiResponse<DataModel.BusinessValidationRuleAssignmentList>> callback)

Contributing

Bug reports and pull requests are welcome through GitHub Issues.

Changelog

  • 2023-10-23 - 7.19.0 - Added dediceted library for dotNet 6.0. Bump up Newtonsoft.Json to 13.0.3. Fixed add tiers method type.
  • 2023-02-02 - 7.18.1 - Added missing mapping for Error property
  • 2023-01-31 - 7.18.0 - Added active in Campaign, extended Exception model
  • 2023-01-26 - 7.17.0 - Added referral in CustomEvent
  • 2022-12-16 - 7.16.0 - Added Metadata in ValidationVoucher
  • 2022-12-14 - 7.15.0 - Init Metadata in Redeemable
  • 2022-12-13 - 7.14.0 - Added Metadata to ValidationPromotion result
  • 2022-11-14 - 7.13.0 - Added NullValueHandling.Ignore for all context payloads.
  • 2022-11-07 - 7.12.0 - Added new fields for Order and Order Item
  • 2022-10-24 - 7.11.0 - Introduced support for Stackable API.
  • 2022-05-18 - 7.10.0 - Introduced CustomerSimple model and apply it in Redemption and VoucherRedemption.
  • 2022-03-09 - 7.9.0 - Fixed datetime serialization to ISO format.
  • 2021-09-21 - 7.8.0 - Added FIXED discount type and new effects. Extended ValidationError.
  • 2021-08-21 - 7.7.5 - Added missing DeleteSession method in Voucher's endpoints
  • 2021-08-21 - 7.7.4 - Added missing properties for ValidationSession
  • 2021-04-20 - 7.7.3 - Changed accessors for VoucherSubject.
  • 2021-04-20 - 7.7.2 - Added ApplicableTo and Error to BusinessValidationRule objects.
  • 2021-04-16 - 7.7.1 - Fixed circural dependency for ToSting methods.
  • 2021-04-06 - 7.7.0 - Reorganized Redemption result classes.
  • 2021-04-06 - 7.6.0 - Reorganized Validation result classes.
  • 2021-03-16 - 7.5.2 - Fixed API Endpoint for Clinet side methods
  • 2020-12-16 - 7.5.1 - Fixed mapping amount_limit for percent discount
  • 2020-11-19 - 7.5.0 - Added CampaignType for CampaignCreate, Changed existing CampaignType to CampaignExtensionType as it was not correct
  • 2020-10-29 - 7.4.0 - Throw ArgumentNullException when url parameter is not defined.
  • 2020-10-19 - 7.3.0 - Add campaign and campaign_id in Voucher validation response. Add is_referral_code in voucher model.
  • 2020-09-17 - 7.2.1 - Fixed returning ProductSKuList in async implementation.
  • 2020-09-15 - 7.2.0 - Added Support for Consents. Drop deprecated API Versions. Changed Amounts from int to long.
  • 2020-08-12 - 7.1.0 - Added Barcode property for VoucherAssets. Introduced ValidationError and BusinessValidationRuleError to support custom error messages.
  • 2019-06-19 - 7.0.0 - Api class improvements, split Endpoint into Host, BasePath and Port

  • 2019-06-10 - 6.4.3 - Added Assignments property at Voucher and Campaign level
  • 2019-05-09 - 6.4.2 - Change Address properties accessors from private to public
  • 2019-02-06 - 6.4.1 - Added amount in Redemption and discount_amount in Order
  • 2019-02-03 - 6.4.0 - Replaced ApplicableProductList and ApplicableProduct. Added listing Promotion Tiers method.
  • 2019-01-29 - 6.3.0 - Reorganized Delete methods with force option for: Voucher, Campaign, Product and Sku
  • 2019-01-28 - 6.2.0 - Added ApplicableTo property to Validation class
  • 2019-01-25 - 6.1.0 - Extended OrderItem OrderItemProduct OrderItemSKU. Improved QuerySerializer
  • 2018-12-27 - 6.0.1 - Added CreatedAt and UpdatedAt property to VoucherFilter
  • 2018-12-20 - 6.0.0 - Replaced Voucher Validation Rules with Business Validation Rules. Added API Verions v2018-08-01.

  • 2018-11-15 - 5.0.1 - Fixed QuerySerializer for Array objects. Added RelatedObject to OrderItem and dedicated method for setting SourceId.
  • 2018-11-09 - 5.0.0 - Introduced support for TLS 1.2. Added missing CreatePublication endpoint in Distributions namespace. Added Support for .Net Standard 2.0 and dropped for Unity and PLC as Standard version should be used instead. Moved solution to VS2017 and use new type of projects.

  • 2018-08-01 - 4.3.2 - Added Price to Product
  • 2018-02-05 - 4.3.1 - Fixed Segments API endpoints. Fixed Library versioning.
  • 2018-02-04 - 4.3.0 - Added support for Api Versions. Added support for Orders, Events, Promotions, Segments and Validation Rules.
  • 2017-11-22 - 4.2.0 - Added 'ApplicableTo' property to Voucher.
  • 2017-10-24 - 4.1.2 - Added 'key' property to VoucherifyClientException. Removed private setters for Order and Customer entities.
  • 2017-08-30 - 4.1.1 - Added .ConfigureAwait(false) to all awaitable calls to prevent deadlocks when using the ASP.NET.
  • 2016-12-19 - 4.1.0 - Added missing methods. Created two additional namespaces: Validations and Distributions. Support for gift.balance (for Gift Vouchers).
  • 2016-11-17 - 4.0.2 - Fixed issue with InnerException serialization
  • 2016-11-17 - 4.0.1 - Remove dependencies for Portable library to allow use it in Xamarin Applications.
  • 2016-11-16 - 4.0.0 - Define separated libraries: Voucherify (server side methods) and Voucherify.Client (client side methods). Define Voucherify.Core. Define Voucherify.DataModel. Client Supported Apis: Vouchers, Redemptions. Server Supported Apis: Vouchers, Redemptions, Campaigns, Customers, Products.

  • 2016-11-02 - 3.1.0 - Added Validate method for Vouchers. Fixed issue with DiscountType mapping.
  • 2016-09-13 - 3.0.0 - Removed dependencies to RSP.Promise and RestSharp, stick to base libraries only.

  • 2016-09-06 - 2.2.0 - Added Portable Class Library (portable45-net45+win8+wp8+wpa81). Added Order Items. Improved Error Handling.
  • 2016-08-17 - 2.1.0 - Fixed Request Header for .Net 3.5+ and empty metadata issue.
  • 2016-07-21 - 2.0.0 - Fixed Data Conversion Problems. Added Update method for Vouchers, Added Code Pattern for Voucher creation.

  • 2016-07-11 - 1.1.3 - Fixed DLLs
  • 2016-07-11 - 1.1.2 - Fixed package dependencies for .Net Framework 3.5+.
  • 2016-07-11 - 1.1.1 - Fixed package dependencies.
  • 2016-07-11 - 1.1.0 - Added support for .Net Framework 2.0 with classic callback approach. Get rid of DataContract attribute.

  • 2016-07-03 - 1.0.0 - Replace async/await with RSG.Promise library. Use RestSharp instead of HttpClient.
  • 2016-07-03 - 0.2.0 - Introduced support for .Net Framework 3.5.
  • 2016-06-26 - 0.1.0 - Initial version of SDK that supports Vouchers, Redemption and Customer endpoints.
  • 2016-07-11 - 1.1.1 - Fixed package dependencies.
  • 2016-07-11 - 1.1.0 - Added support for .Net Framework 2.0 with classic callback approach. Get rid of DataContract attribute.
  • 2016-07-03 - 1.0.0 - Replace async/await with RSG.Promise library. Use RestSharp instead of HttpClient.
  • 2016-07-03 - 0.2.0 - Introduced support for .Net Framework 3.5.
  • 2016-06-26 - 0.1.0 - Initial version of SDK that supports Vouchers, Redemption and Customer endpoints.