This repository was archived by the owner on Feb 10, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathReleaseNotes.java
More file actions
1939 lines (1751 loc) · 165 KB
/
ReleaseNotes.java
File metadata and controls
1939 lines (1751 loc) · 165 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
package io.sphere.sdk.meta;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.sphere.sdk.apiclient.ApiClient;
import io.sphere.sdk.apiclient.ApiClientDraft;
import io.sphere.sdk.cartdiscounts.*;
import io.sphere.sdk.carts.*;
import io.sphere.sdk.carts.commands.CartReplicationDraft;
import io.sphere.sdk.carts.commands.updateactions.*;
import io.sphere.sdk.carts.expansion.CartExpansionModel;
import io.sphere.sdk.carts.expansion.ShippingInfoExpansionModel;
import io.sphere.sdk.carts.queries.CartByIdGet;
import io.sphere.sdk.carts.queries.CartQueryModel;
import io.sphere.sdk.categories.Category;
import io.sphere.sdk.categories.CategoryDraft;
import io.sphere.sdk.categories.CategoryDraftBuilder;
import io.sphere.sdk.categories.CategoryTree;
import io.sphere.sdk.categories.commands.updateactions.SetKey;
import io.sphere.sdk.categories.queries.CategoryQueryModel;
import io.sphere.sdk.channels.Channel;
import io.sphere.sdk.channels.queries.ChannelByIdGet;
import io.sphere.sdk.channels.queries.ChannelQueryModel;
import io.sphere.sdk.client.SphereApiConfig;
import io.sphere.sdk.client.SphereAuthConfig;
import io.sphere.sdk.client.SphereClient;
import io.sphere.sdk.client.SphereRequest;
import io.sphere.sdk.commands.UpdateAction;
import io.sphere.sdk.commands.UpdateActionImpl;
import io.sphere.sdk.commands.UpdateCommand;
import io.sphere.sdk.customergroups.CustomerGroup;
import io.sphere.sdk.customergroups.CustomerGroupDraft;
import io.sphere.sdk.customergroups.CustomerGroupDraftBuilder;
import io.sphere.sdk.customers.Customer;
import io.sphere.sdk.customers.CustomerDraft;
import io.sphere.sdk.customers.CustomerDraftBuilder;
import io.sphere.sdk.customers.CustomerToken;
import io.sphere.sdk.customers.commands.CustomerCreateEmailTokenCommand;
import io.sphere.sdk.customers.commands.CustomerPasswordResetCommand;
import io.sphere.sdk.customers.commands.CustomerSignInCommand;
import io.sphere.sdk.customers.commands.CustomerVerifyEmailCommand;
import io.sphere.sdk.customers.commands.updateactions.AddShippingAddressId;
import io.sphere.sdk.customers.commands.updateactions.SetSalutation;
import io.sphere.sdk.customers.errors.CustomerInvalidCurrentPassword;
import io.sphere.sdk.customers.expansion.CustomerSignInResultExpansionModel;
import io.sphere.sdk.customers.queries.CustomerQueryModel;
import io.sphere.sdk.customobjects.CustomObject;
import io.sphere.sdk.customobjects.commands.CustomObjectDeleteCommand;
import io.sphere.sdk.customobjects.queries.CustomObjectByKeyGet;
import io.sphere.sdk.customobjects.queries.CustomObjectQuery;
import io.sphere.sdk.customobjects.queries.CustomObjectQueryModel;
import io.sphere.sdk.discountcodes.DiscountCode;
import io.sphere.sdk.discountcodes.DiscountCodeDraft;
import io.sphere.sdk.expansion.ExpansionPath;
import io.sphere.sdk.extensions.ExtensionResourceType;
import io.sphere.sdk.extensions.Trigger;
import io.sphere.sdk.http.*;
import io.sphere.sdk.inventory.InventoryEntry;
import io.sphere.sdk.inventory.InventoryEntryDraft;
import io.sphere.sdk.inventory.InventoryEntryDraftBuilder;
import io.sphere.sdk.inventory.commands.updateactions.SetSupplyChannel;
import io.sphere.sdk.json.SphereJsonUtils;
import io.sphere.sdk.messages.GenericMessageImpl;
import io.sphere.sdk.messages.Message;
import io.sphere.sdk.messages.UserProvidedIdentifiers;
import io.sphere.sdk.models.*;
import io.sphere.sdk.orders.*;
import io.sphere.sdk.orders.commands.updateactions.AddDelivery;
import io.sphere.sdk.orders.expansion.OrderExpansionModel;
import io.sphere.sdk.orders.messages.OrderPaymentStateChangedMessage;
import io.sphere.sdk.orders.messages.OrderStateTransitionMessage;
import io.sphere.sdk.payments.*;
import io.sphere.sdk.payments.messages.PaymentStatusInterfaceCodeSetMessage;
import io.sphere.sdk.payments.messages.PaymentTransactionStateChangedMessage;
import io.sphere.sdk.productdiscounts.ProductDiscount;
import io.sphere.sdk.productdiscounts.ProductDiscountDraft;
import io.sphere.sdk.productdiscounts.ProductDiscountDraftBuilder;
import io.sphere.sdk.productdiscounts.queries.MatchingProductDiscountGet;
import io.sphere.sdk.productdiscounts.queries.ProductDiscountByIdGet;
import io.sphere.sdk.products.*;
import io.sphere.sdk.products.attributes.Attribute;
import io.sphere.sdk.products.attributes.AttributeAccess;
import io.sphere.sdk.products.attributes.AttributeDefinition;
import io.sphere.sdk.products.attributes.AttributeDefinitionDraft;
import io.sphere.sdk.products.commands.ProductImageUploadCommand;
import io.sphere.sdk.products.commands.updateactions.*;
import io.sphere.sdk.products.expansion.ProductDataExpansionModel;
import io.sphere.sdk.products.expansion.ProductProjectionExpansionModel;
import io.sphere.sdk.products.messages.ProductDeletedMessage;
import io.sphere.sdk.products.messages.ProductPublishedMessage;
import io.sphere.sdk.products.messages.ProductRevertedStagedChangesMessage;
import io.sphere.sdk.products.messages.ProductVariantDeletedMessage;
import io.sphere.sdk.products.queries.*;
import io.sphere.sdk.products.search.*;
import io.sphere.sdk.producttypes.*;
import io.sphere.sdk.producttypes.commands.updateactions.ChangeInputHint;
import io.sphere.sdk.producttypes.commands.updateactions.RemoveEnumValues;
import io.sphere.sdk.projects.Project;
import io.sphere.sdk.projects.error.LanguageUsedInStores;
import io.sphere.sdk.queries.*;
import io.sphere.sdk.reviews.ReviewDraft;
import io.sphere.sdk.reviews.ReviewDraftBuilder;
import io.sphere.sdk.search.FilteredFacetResult;
import io.sphere.sdk.search.PagedSearchResult;
import io.sphere.sdk.search.SearchKeywords;
import io.sphere.sdk.search.model.ExistsFilterSearchModelSupport;
import io.sphere.sdk.search.model.MissingFilterSearchModelSupport;
import io.sphere.sdk.shippingmethods.ShippingMethod;
import io.sphere.sdk.shippingmethods.ShippingMethodDraft;
import io.sphere.sdk.shippingmethods.ShippingMethodDraftBuilder;
import io.sphere.sdk.shippingmethods.ShippingRate;
import io.sphere.sdk.shippingmethods.commands.updateactions.RemoveZone;
import io.sphere.sdk.shoppinglists.ShoppingList;
import io.sphere.sdk.shoppinglists.ShoppingListDraft;
import io.sphere.sdk.shoppinglists.expansion.LineItemExpansionModel;
import io.sphere.sdk.states.State;
import io.sphere.sdk.states.StateDraftDsl;
import io.sphere.sdk.stores.commands.updateactions.SetLanguages;
import io.sphere.sdk.subscriptions.AzureServiceBusDestination;
import io.sphere.sdk.subscriptions.MessageSubscriptionPayload;
import io.sphere.sdk.subscriptions.Payload;
import io.sphere.sdk.subscriptions.Subscription;
import io.sphere.sdk.taxcategories.*;
import io.sphere.sdk.types.*;
import io.sphere.sdk.zones.ZoneDraftBuilder;
import io.sphere.sdk.stores.Store;
import io.sphere.sdk.stores.StoreDraft;
import io.sphere.sdk.states.queries.StateByKeyGet;
import io.sphere.sdk.inventory.messages.InventoryEntryCreatedMessage;
import io.sphere.sdk.shippingmethods.queries.ShippingMethodsByOrderEditGet;
import javax.money.CurrencyUnit;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
/**
<div class=release-notes>
<h3>Legend</h3>
<ul>
<li class=removed-in-release>removed functionality</li>
<li class=new-in-release>added functionality</li>
<li class=change-in-release>breaking change</li>
<li class=fixed-in-release>bugfix, can include a breaking change</li>
</ul>
<!--
<ul>
<li class=removed-in-release></li>
<li class=new-in-release></li>
<li class=change-in-release></li>
<li class=fixed-in-release></li>
</ul>
-->
-->
<h3 class=released-version id="v2_3_0">2.3.0 (01.11.2021)</h3>
<ul>
<li class=change-in-release> Add deprecation announcement</li>
<li class=new-in-release>Support for {@link io.sphere.sdk.customers.messages.CustomerPasswordTokenCreatedMessage}</li>
</ul>
<h3 class=released-version id="v2_2_0">2.2.0 (04.10.2021)</h3>
<ul>
<li class=new-in-release>Support store messages for {@link io.sphere.sdk.stores.messages.StoreCreatedMessage} and {@link io.sphere.sdk.stores.messages.StoreDeletedMessage} </li>
<li class=new-in-release>Support oldState for {@link OrderStateTransitionMessage#getOldState()} </li>
<li class=new-in-release>Support command for Customer in store change Password in {@link io.sphere.sdk.customers.commands.CustomerInStoreChangePasswordCommandpdate} </li>
</ul>
<h3 class=released-version id="v2_1_0">2.1.0 (06.09.2021)</h3>
<ul>
<li class=new-in-release>Support store for Shopping List in {@link ShoppingList#getStore()}, {@link ShoppingListDraft#getStore()} and related update actions {@link io.sphere.sdk.shoppinglists.commands.updateactions.SetStore </li>
<li class=new-in-release>Updated User Agent</li>
</ul>
<h3 class=released-version id="v2_0_0">2.0.0 (23.07.2021)</h3>
<ul>
<li class=removed-in-release>Removed the OSGi support</li>
<li class=change-in-release>Updated Apache HTTP client to 5.1</li>
<li class=new-in-release>Support external Tax Rate For Shipping Method in {@link CartDraft#getExternalTaxRateForShippingMethod()}</li>
</ul>
<h3 class=released-version id="v1_64_0">1.64.0 (07.06.2021)</h3>
<ul>
<li class=fixed-in-release>Added in the Product Projection Model the possibility to filter by key from the predicate {@link ProductProjectionQueryModelImpl#key()} and {@link ProductProjectionQueryModel#key()} }
<li class=fixed-in-release>Added as an update action for Cart: SetLineItemDistributionChannel
</ul>
<h3 class=released-version id="v1_63_0">1.63.0 (03.05.2021)</h3>
<ul>
<li class=fixed-in-release>Fixed method that did not include the field tiers {@link PriceDraftBuilder#of(Price)} and {@link PriceDraftBuilder#of(PriceDraft)}. In introduced the method to set tiers directly by {@link PriceDraftDsl#withTiers(List)}
<li class=fixed-in-release>Fixed deadlock bug in the {@link io.sphere.sdk.retry.RetryAction#ofScheduledRetry(long, Function)} in case of exception
</ul>
<h3 class=released-version id="v1_62_0">1.62.0 (06.04.2021)</h3>
<ul>
<li class=fixed-in-release>Fixed type for asset in AddVariant update action</li>
<li class=fixed-in-release>Address PO box gets correctly deserialized</li>
<li class=new-in-release>Resources implement WithKey and Custom interfaces</li>
<li class=new-in-release>Address supports custom fields</li>
<li class=new-in-release>Support for {@link io.sphere.sdk.customers.messages.CustomerPasswordUpdatedMessage}</li>
<li class=new-in-release>ShoppingList addLineItem supports variant selection by sku</li>
<li class=new-in-release>Support addedAt for shopping list line items</li>
<li class=new-in-release>Support oldSlug in product & category slug changed messages</li>
<li class=new-in-release>Support fixed amount cart discounts</li>
<li class=new-in-release>Support custom fields for shipping methods</li>
<li class=new-in-release>Support SearchIndexingConfiguration for project</li>
<li class=new-in-release>Support replicate cart in store endpoint</li>
</ul>
<h3 class=released-version id="v1_61_0">1.61.0 (06.04.2021)</h3>
<ul>
<li class=new-in-release>Deprecated {@link CustomerDraft#getAnonymousCartId()} and replaced with {@link CustomerDraft#getAnonymousCart()} support anonymousCart into the {@link CustomerDraftBuilder}, into the {@link CustomerSignInCommand} and in the {@link io.sphere.sdk.customers.commands.CustomerInStoreSignInCommand}</li>
<li class=new-in-release>Support discounted field in the {@link PriceDraft#getDiscounted()}
</ul>
<h3 class=released-version id="v1_60_0">1.60.0 (01.03.2021)</h3>
<ul>
<li class=new-in-release>Support custom fields and itemShippingDetails in OrderImport for CustomLineItems {@link CustomLineItemImportDraft#getShippingDetails()}</li>
<li class=new-in-release>Support Error codes adding the related classes that has to be found in this page of the documentation {@link //docs.commercetools.com/api/errors#top} </li>
<li class=change-in-release> {@link PriceDraft#getCustomerGroup()} is of type {@link ResourceIdentifier<CustomerGroup>} instead of {@link Reference<CustomerGroup>}</li>
</ul>
<h3 class=released-version id="v1_58_0">1.58.0 (01.02.2021)</h3>
<ul>
<li class=new-in-release>Support supplyChannels field to Store and add update action {@link io.sphere.sdk.stores.commands.updateactions.SetSupplyChannels}, {@link io.sphere.sdk.stores.commands.updateactions.AddSupplyChannel} and {@link io.sphere.sdk.stores.commands.updateactions.RemoveSupplyChannel}</li>
<li class=new-in-release>Support addedAt to LineItem in the Cart and support the relative action with the new field {@link AddLineItem#getAddedAt()}</li>
<li class=new-in-release>Support new field in the Store {@link Store#getCustom()} adding related updated actions {@link io.sphere.sdk.stores.commands.updateactions.SetCustomField} and {@link io.sphere.sdk.stores.commands.updateactions.SetCustomType}</li>
<li class=new-in-release>Support {@link io.sphere.sdk.products.messages.ProductVariantAddedMessage}</li>
<li class=new-in-release>Support discount codes in {@link CartDraft#getDiscountCodes()}</li>
<li class=new-in-release>Support key to Cart {@link Cart#getKey()}, support update action {@link SetKey}, support {@link io.sphere.sdk.carts.queries.CartByKeyGet}, support {@link CartReplicationDraft#getKey()}</li>
<li class=new-in-release>Deprecated {@link OrderFromCartDraft#getId()} and related methods, it has been replaced with support {@link OrderFromCartDraft#getCart()}; support of method for the Cart {@link OrderFromCartDraft#of(Cart)}</li>
<li class=new-in-release>Support resource identifier to set customer groups in {@link io.sphere.sdk.customers.commands.updateactions.SetCustomerGroup}, {@link io.sphere.sdk.orderedits.commands.stagedactions.SetCustomerGroup}, {@link SetCustomerGroup}</li>
<li class=new-in-release>Support resource identifier to set customer in {@link io.sphere.sdk.reviews.commands.updateactions.SetCustomer}, {@link io.sphere.sdk.shoppinglists.commands.updateactions.SetCustomer}</li>
<li class=new-in-release>Add lastModifiedAt to {@link LineItem#getLastModifiedAt()}</li>
</ul>
<h3 class=released-version id="v1_56_0">1.56.0 (04.12.2020)</h3>
<ul>
<li class=fixed-in-release>Fixed requests for resources by key with special characters by url encoding the key</li>
<li class=fixed-in-release>Support customer address by key selection for {@link AddShippingAddressId}, {@link io.sphere.sdk.customers.commands.updateactions.AddBillingAddressId}, {@link io.sphere.sdk.customers.commands.updateactions.RemoveBillingAddressId} and {@link io.sphere.sdk.customers.commands.updateactions.RemoveShippingAddressId}</li>
</ul>
<h3 class=released-version id="v1_55_0">1.55.0 (23.11.2020)</h3>
<ul>
<li class=fixed-in-release>Support customer address by key selection for updates</li>
<li class=new-in-release>Support errors for store {@link io.sphere.sdk.stores.error.ProjectNotConfiguredForLanguagesError} and {@link io.sphere.sdk.stores.error.MissingRoleOnChannelError} </li>
</ul>
<h3 class=released-version id="v1_54_0">1.54.0 (01.10.2020)</h3>
<ul>
<li class=fixed-in-release>Fixed possible thread safe issue in HighPrecisionMoney usage</li>
<li class=fixed-in-release>Fixed type for {@link PriceCollectionQueryModel#channel()}</li>
</ul>
<ul>
<li class=new-in-release>Added new field in the CartsConfiguration {@link CartsConfiguration#getCountryTaxRateFallbackEnabled()} and the related update action changeCountryTaxRateFallbackEnabled in the Project {@link Project#} </li>
<li class=new-in-release>Support setStore update action {@link Order#getStore()} and OrderStoreSet message {@link io.sphere.sdk.orders.messages.OrderStoreSetMessage} </li>
<li class=new-in-release>Support distributionChannels field to Store and add update action {@link io.sphere.sdk.stores.commands.updateactions.SetDistributionChannels}, {@link io.sphere.sdk.stores.commands.updateactions.AddDistributionChannel} and {@link io.sphere.sdk.stores.commands.updateactions.RemoveDistributionChannel}</li>
<li class=new-in-release>Support LanguageUsedInStore error {@link io.sphere.sdk.projects.error.LanguageUsedInStores}</li>
<li class=new-in-release>Support AnonymousId for ShoppingLists {@link ShoppingList#getAnonymousId()}</li>
<li class=new-in-release>Updated <a href="https://javamoney.github.io/ri.html#welcome-to-moneta---the-jsr-354-reference-implementation">moneta</a> to version 1.2</li>
<li class=new-in-release>Changed state to ResourceIdentifier for product draft {@link ProductDraft#getState()}</li>
<li class=new-in-release>Changed customer to ResourceIdentifier for shopping list draft {@link ShoppingListDraft#getCustomer()}</li>
</ul>
<h3 class=released-version id="v1_53_0">1.53.0 (18.08.2020)</h3>
<ul>
<li class=new-in-release>Added new {@link ShippingMethodsByOrderEditGet}.</li>
<li class=new-in-release>Added new {@link InventoryEntryCreatedMessage}.</li>
<li class=new-in-release>Added new {@link StateByKeyGet} and now update and delete can be by Key as well.</li>
</ul>
<h3 class=released-version id="v1_52_1">1.52.1 (18.08.2020)</h3>
<ul>
<li class=fixed-in-release>Fixed storeProjection and localeProjection as query parameter in Product Projection and not anymore in the priceSelection </li>
</ul>
<h3 class=released-version id="v1_52_0">1.52.0 (07.07.2020)</h3>
<ul>
<li class=new-in-release>Added missing {@link ExternalTaxRateDraft#isIncludedInPrice()} and added it to builder {@link ExternalTaxRateDraftBuilder#includedInPrice()}</li>
<li class=new-in-release>Added support for additional query parameters for updates {@link io.sphere.sdk.commands.UpdateCommandDsl#withAdditionalHttpQueryParameters(NameValuePair)} and search endpoints {@link io.sphere.sdk.search.MetaModelSearchDsl#withAdditionalQueryParameter(NameValuePair)}.</li>
<li class=new-in-release>Added missing {@link ShippingMethodDraft#getLocalizedDescription()} and added it to builder {@link ShippingMethodDraftBuilder#localizedDescription()}</li>
<li class=new-in-release>Added support for additional action {@link io.sphere.sdk.shippingmethods.commands.updateactions.SetLocalizedDescription} and deprecated the attribute "description" and the action "setDescription" </li>
<li class=new-in-release>Added {@link Store#getLanguages()} and {@link StoreDraft#getLanguages()} and added update action {@link io.sphere.sdk.stores.commands.updateactions.SetLanguages} </li>
<li class=new-in-release>Added query parameters in ProductProjection {@link PriceSelection#getLocaleProjection()} and {@link PriceSelection#getStoreProjection()} and also in the {@link PriceSelectionBuilder } </li>
</ul>
</ul>
<h3 class=released-version id="v1_51_0">1.51.0 (31.03.2020)</h3>
<ul>
<li class=fixed-in-release>Fix formatting of {@link GeoJSONQueryModel#withinCircle(Point, Double)} with default locale not using '.' as decimal delimiter.</li>
</ul>
<h3 class=released-version id="v1_50_0">1.50.0 (05.03.2020)</h3>
<ul>
<li class=fixed-in-release>Replace old default ct urls (https://api.sphere.io, https://auth.sphere.io) with new default urls (https://api.europe-west1.gcp.commercetools.com, https://auth.europe-west1.gcp.commercetools.com)</li>
</ul>
<h3 class=released-version id="v1_49_0">1.49.0 (16.01.2020)</h3>
<ul>
<li class=fixed-in-release>{@link TransactionDraftDsl} is now public</li>
<li class=new-in-release>Added new method {@link ParcelDraft#of(TrackingData, List)}</li>
<li class=new-in-release>Added support for carts and shopping lists configuration to {@link Project} </li>
<li class=new-in-release>{@link io.sphere.sdk.client.correlationid.CorrelationIdRequestDecorator} to attach a user-defined correlation id as a value for a header with key "X-Correlation-ID" on requests going to the commercetools platform.</li>
<li class=fixed-in-release>fixed {@link io.sphere.sdk.messages.GenericMessageImpl} json deserialization where {@link GenericMessageImpl#getResourceUserProvidedIdentifiers()} was missing </li>
</ul>
<h3 class=released-version id="v1_48_0">1.48.0 (16.12.2019)</h3>
<ul>
<li class=new-in-release>Added new scopes to {@link io.sphere.sdk.client.SphereProjectScope}</li>
<li class=new-in-release>Added new customer update actions: {@link io.sphere.sdk.customers.commands.updateactions.AddStore}, {@link io.sphere.sdk.customers.commands.updateactions.SetStores}, {@link io.sphere.sdk.customers.commands.updateactions.RemoveStore}</li>
<li class=fixed-in-release>Fixed {@link io.sphere.sdk.orders.messages.OrderMessage} json deserialization bug where <code>type</code> field wouldn't get deserialized </li>
</ul>
<h3 class=released-version id="v1_47_0">1.47.0 (11.10.2019)</h3>
<ul>
<li class=fixed-in-release>Fixed {@link ProductImageUploadCommand#withContentType(String)} ignoring provided content type</li>
<li class=new-in-release>Added store key reference to {@link OrderImportDraft}</li>
<li class=fixed-in-release>{@link HttpHeaders#getHeader(String) now treats headers as case insensitive}</li></li>
<li class=new-in-release>Added {@link Customer#getStores()} field</li>
</ul>
<h3 class=released-version id="v1_46_0">1.46.0 (21.08.2019)</h3>
<ul>
<li class=new-in-release>Added support for {@link io.sphere.sdk.products.messages.ProductAddedToCategoryMessage} and {@link io.sphere.sdk.products.messages.ProductRemovedFromCategoryMessage}</li>
<li class=fixed-in-release>Update actions for setting custom fields now accept empty array values</li>
</ul>
<h3 class=released-version id="v1_45_0">1.45.0 (02.08.2019)</h3>
<ul>
<li class=fixed-in-release>{@link Category}, {@link CategoryDraft}, {@link ProductLike} and {@link ProductDraft} now extend the {@link WithKey} interface.</li>
</ul>
<h3 class=released-version id="v1_44_0">1.44.0 (07.06.2019)</h3>
<ul>
<li class=fixed-in-release>{@link PagedSearchResult#empty()} now creates an instance with the {@link PagedSearchResult#getLimit()} field set to 20, instead of 0</li>
</ul>
<h3 class=released-version id="v1_43_0">1.43.0 (03.06.2019)</h3>
<ul>
<li class=new-in-release>Added {@link ProductDiscount#getKey()} and {@link ProductDiscountDraft#getKey()} ()} fields.</li>
<li class=new-in-release>Added {@link ProductByKeyGet}, {@link io.sphere.sdk.products.commands.ProductUpdateCommand#ofKey(String, Long, UpdateAction)}, {@link io.sphere.sdk.productdiscounts.commands.ProductDiscountDeleteCommand#ofKey(String, Long)} commands</li>
<li class=new-in-release>Added {@link io.sphere.sdk.productdiscounts.commands.updateactions.SetKey} update action</li>
<li class=new-in-release>Added {@link CustomerToken#getExpiresAt()} field</li>
<li class=new-in-release>Added key property to {@link CartDiscount} and {@link CartDiscountDraft}</li>
</ul>
<h3 class=released-version id="v1_42_0">1.42.0 (24.05.2019)</h3>
<ul>
<li class=fixed-in-release>Added support for {@link io.sphere.sdk.extensions.AuthorizationHeaderAuthentication} for api extensions.</li>
<li class=fixed-in-release>Fixed {@link io.sphere.sdk.orderedits.commands.stagedactions.AddLineItem} staged update action structure</li>
<li class=new-in-release>Added support for {@link io.sphere.sdk.stores.Store}</li>
<li class=new-in-release>Added support commands that allow you to access carts and orders belonging to a specific store: {@link io.sphere.sdk.carts.commands.CartInStoreCreateCommand}, {@link io.sphere.sdk.carts.commands.CartInStoreDeleteCommand}, {@link io.sphere.sdk.carts.commands.CartInStoreUpdateCommand}, {@link io.sphere.sdk.carts.queries.CartInStoreByCustomerIdGet}, {@link io.sphere.sdk.carts.queries.CartInStoreByIdGet}, {@link io.sphere.sdk.carts.queries.CartInStoreQuery}, {@link io.sphere.sdk.orders.commands.OrderFromCartInStoreCreateCommand}, {@link io.sphere.sdk.orders.commands.OrderInStoreDeleteByIdCommand}, {@link io.sphere.sdk.orders.commands.OrderInStoreDeleteByOrderNumberCommand}, {@link io.sphere.sdk.orders.commands.OrderInStoreUpdateByIdCommand}, {@link io.sphere.sdk.orders.commands.OrderInStoreUpdateByOrderNumberCommand}, {@link io.sphere.sdk.orders.queries.OrderInStoreByIdGet}, {@link io.sphere.sdk.orders.queries.OrderInStoreByOrderNumberGet}, {@link io.sphere.sdk.orders.queries.OrderInStoreQuery}</li>
<li class=new-in-release>Added new {@link SetShippingMethod#of(ResourceIdentifier)} method</li>
<li class=new-in-release>Added new {@link SetSupplyChannel#of(ResourceIdentifier)} method</li>
<li class=new-in-release>Added new {@link SetTaxCategory#of(ResourceIdentifier)} method</li>
<li class=new-in-release>Added new {@link RemoveZone#of(ResourceIdentifier)} method</li>
<li class=change-in-release>Static 'of' methods that accept {@link Referenceable} got their names changed to 'ofReferencable' and are now deprecated. This was done for the following update actions: {@link SetShippingMethod}, {@link SetSupplyChannel}, {@link SetTaxCategory}, {@link RemoveZone}</li>
<li class=new-in-release>Added new {@link Type} update actions : {@link io.sphere.sdk.types.commands.updateactions.ChangeEnumValueLabel}, {@link io.sphere.sdk.types.commands.updateactions.ChangeInputHint}, {@link io.sphere.sdk.types.commands.updateactions.ChangeLocalizedEnumValueLabel}</li>
</ul>
<h3 class=released-version id="v1_41_0">1.41.0 (10.04.2019)</h3>
<ul>
<li class=fixed-in-release>Generated update commands no longer produce "Unchecked generics array creation for varargs" warning</li>
<li class=new-in-release>Added timeout property to {@link io.sphere.sdk.extensions.Extension} and {@link io.sphere.sdk.extensions.ExtensionDraft}</li>
<li class=new-in-release>Added ttlMinutes to {@link io.sphere.sdk.customers.commands.CustomerCreatePasswordTokenCommand} command</li>
<li class=new-in-release>added the {@link Project#getExternalOAuth()} to specify external auth providers in the project level</li>
</ul>
<h3 class=released-version id="v1_40_0">1.40.0 (25.02.2019)</h3>
<ul>
<li class=new-in-release>{@link java.time.ZonedDateTime} formatter now always include milliseconds even if they are equal to 0</li>
<li class=new-in-release>{@link io.sphere.sdk.customobjects.queries.CustomObjectByIdGet} and {@link CustomObjectByKeyGet} now support expansion parameter</li>
<li class=fixed-in-release>{@link Attribute#of(String, AttributeAccess, Object)} now works properly with Set of {@link Reference}</li>
<li class=change-in-release>{@link io.sphere.sdk.producttypes.commands.updateactions.ChangeAttributeOrder} is now deprecated</li>
<li class=new-in-release>{@link io.sphere.sdk.producttypes.commands.updateactions.ChangeAttributeOrderByName} added</li>
<li class=new-in-release>Update commands 'of' methods now accept varargs</li>
<li class=new-in-release>Added {@link io.sphere.sdk.orderedits.OrderEdit} with create, query, update and delete commands</li>
<li class=new-in-release>Added {@link io.sphere.sdk.orderedits.OrderEdit} update and staged actions</li>
<li class=new-in-release>Added {@link io.sphere.sdk.orderedits.commands.OrderEditApplyCommand}</li>
<li class=new-in-release>Added new {@link io.sphere.sdk.orderedits.OrderEdit} message types</li>
<li class=new-in-release>Added {@link ProductCatalogData#getCurrentUnsafe()} method</li>
</ul>
<h3 class=released-version id="v1_39_0">1.39.0 (14.01.2019)</h3>
<ul>
<li class=change-in-release> changed {@link CartDraft#getShippingMethod()}, {@link CartShippingInfo#getTaxCategory()}, {{@link CustomLineItemDraft#getTaxCategory()}, {@link AddCustomLineItem#getTaxCategory()}, {@link SetCustomShippingMethod#getTaxCategory()}, {@link SetShippingMethod#getShippingMethod()}, {@link InventoryEntryDraft#getSupplyChannel()}, {@link SetSupplyChannel#getSupplyChannel()}, {@link OrderShippingInfo#getTaxCategory()}, {@link ProductDraft#getTaxCategory()}, {@link SetTaxCategory#getTaxCategory()} return type from {@link Reference} to {@link ResourceIdentifier} </li>
<li class=change-in-release> {@link OrderImportDraft#getShippingInfo()} is of type {@link ShippingInfoImportDraft} instead of {@link OrderShippingInfo}</li>
<li class=change-in-release> {@link io.sphere.sdk.apiclient.ApiClient} has a new attribute {@link ApiClient#getDeleteAt()} which marks when the project key would be deleted</li>
<li class=change-in-release> {@link io.sphere.sdk.apiclient.ApiClientDraft} has a new attribute {@link ApiClientDraft#getDeleteDaysAfterCreation()} which allows to specifiy the key life length </li>
<li class=change-in-release> {@link LineItemDraft#getSupplyChannel()} and {@link LineItemDraft#getDistributionChannel()} are now of type {@link ResourceIdentifier<Channel>} instead of {@link Reference<Channel>}</li>
<li class=change-in-release> {@link PriceDraft#getChannel()} is of type {@link ResourceIdentifier<Channel>} instead of {@link Reference<Channel>}</li>
<li class=change-in-release> removed @Deprecated annotation from {@link io.sphere.sdk.carts.commands.updateactions.AddLineItem#of(String, int, long)}</li>
<li class=change-in-release> removed @Deprecated annotation from {@link io.sphere.sdk.carts.commands.updateactions.AddLineItem#of(ProductIdentifiable, int, long)}</li>
<li class=change-in-release> {@link ProductVariantDraft#getPrices()}, {@link ProductVariantDraft#getAttributes} and {@link ProductVariantDraft#getImages()} are now optional</li>
<li class=change-in-release> {@link AddVariant} action now includes assets field </li>
</ul>
<h3 class=released-version id="v1_38_0">1.38.0 (07.12.2018)</h3>
<ul>
<li class=change-in-release> {@link ShippingMethodDraft} accepts {@link List<io.sphere.sdk.shippingmethods.ZoneRateDraft>} instead of {@link List<io.sphere.sdk.shippingmethods.ZoneRate>}</li>
<li class=change-in-release> {@link io.sphere.sdk.zones.Zone} and {@link io.sphere.sdk.zones.ZoneDraft} contains a key property</li>
<li class=change-in-release> {@link io.sphere.sdk.zones.Zone} is updatable, deletable by key </li>
<li class=new-in-release> {@link io.sphere.sdk.zones.commands.updateactions.SetKey} to set key for a zone </li>
<li class=change-in-release> {@link RemoveZone#getZone()} return a {@link ResourceIdentifier<io.sphere.sdk.zones.Zone>} instead of {@link Reference<io.sphere.sdk.zones.Zone>}</li>
<li class=change-in-release> {@link GiftLineItemCartDiscountValue#getProduct()}, {@link GiftLineItemCartDiscountValue#getDistributionChannel()}, {@link GiftLineItemCartDiscountValue#getSupplyChannel()} changed return type from {@link Reference} to {@link ResourceIdentifier}</li>
</ul>
<h3 class=released-version id="v1_37_0">1.37.0 (06.11.2018)</h3>
<ul>
<li class=change-in-release> {@link io.sphere.sdk.shippingmethods.commands.updateactions.ChangeTaxCategory} accept {@link ResourceIdentifier<TaxCategory>} as a parameter now </li
<li class=change-in-release> {@link ShippingMethodDraftBuilder} accept a {@link ResourceIdentifier<TaxCategory>} which is a {@link Reference<TaxCategory>} generalization </li>
<li class=change-in-release> Added support for asynchttpclient 2.5.4 </li>
<li class=change-in-release> Now {@link ReturnItem} has two specializations {@link LineItemReturnItem} and {@link CustomLineItemReturnItem} </li>
<li class=change-in-release> Added new field {@link UserProvidedIdentifiers#getCustomerNumber()} to reflect customer number in change messages</li>
<li class=new-in-release> Now you can manage {@link io.sphere.sdk.apiclient.ApiClient}s programmatically, that was possible only via user interface before</li>
</ul>
<h3 class=released-version id="v1_36_0">1.36.0 (16.10.2018)</h3>
<ul>
<li class=change-in-release>added new fields {@link Payload#getResourceUserProvidedIdentifiers()} and {@link Message#getResourceUserProvidedIdentifiers()} to reference user defined identifiers.</li>
<li class=change-in-release>added new subscriptions for the following types {@link CartDiscount}, {@link Channel}, {@link DiscountCode}, {@link io.sphere.sdk.extensions.Extension}, {@link ProductDiscount}, {@link ShoppingList}, {@link Subscription}, {@link State}, {@link TaxCategory}, {@link Type}, </li>
<li class=change-in-release>added new field {@link Order#getRefusedGifts()} in {@link Order} </li>
<li class=new-in-release>added new message {@link io.sphere.sdk.orders.messages.OrderCustomerGroupSetMessage} </li>
<li class=fixed-in-release>Now the use of invalid project key leads to client shutdown, instead of token fetching retries </li>
<li class=new-in-release>adding new authentication scopes {@link io.sphere.sdk.client.SphereProjectScope#MANAGE_EXTENSIONS} and {@link io.sphere.sdk.client.SphereProjectScope#MANAGE_PROJECT_SETTINGS} </li>
<li class=change-in-release>explicit sort by {@link ProductProjectionSortSearchModel#score()} in {@link ProductProjectionSearch} </li>
<li class=new-in-release> Now you can specify the days till deletion of messages using {@link io.sphere.sdk.projects.commands.updateactions.ChangeMessagesConfiguration} update action</li>
<li class=new-in-release>two new messages {@link io.sphere.sdk.products.messages.ProductPriceDiscountsSetMessage} and {@link io.sphere.sdk.products.messages.ProductPriceExternalDiscountSetMessage}</li>
</ul>
<h3 class=released-version id="v1_35_0">1.35.0 (23.08.2018)</h3>
<ul>
<li class=fixed-in-release>Fixed field name in cart update action {@link io.sphere.sdk.carts.commands.updateactions.SetShippingRateInput}`, which was not properly working before</li>
<li class=change-in-release>Add field modified a to Payload {@link io.sphere.sdk.subscriptions.ResourceCreatedPayload}, {@link io.sphere.sdk.subscriptions.ResourceUpdatedPayload} and {@link io.sphere.sdk.subscriptions.ResourceDeletedPayload} </li>
<li class=new-in-release>It's now possible to query the subscriptions endpoint health via the new {@link Subscription#getStatus()}</li>
<li class=change-in-release>Added new attributes {@link OrderFromCartDraft#getOrderState()} and {@link OrderFromCartDraft#getState()}</li>
<li class=new-in-release>Added new update action {@link io.sphere.sdk.productdiscounts.commands.updateactions.SetValidFromAndUntil} to {@link ProductDiscount}</li>
<li class=change-in-release>{@link io.sphere.sdk.producttypes.commands.updateactions.AddAttributeDefinition#of(AttributeDefinition)} changed parameter to {@link io.sphere.sdk.producttypes.commands.updateactions.AddAttributeDefinition#of(AttributeDefinitionDraft)} instead</li>
<li class=new-in-release>It's now possible to change customer in order via {@link io.sphere.sdk.orders.commands.updateactions.SetCustomerId} which would result in a {@link io.sphere.sdk.orders.messages.OrderCustomerSetMessage}</li>
<li class=new-in-release>Added new update action {@link io.sphere.sdk.cartdiscounts.commands.updateactions.SetValidFromAndUntil} to {@link CartDiscount}</li>
<li class=new-in-release>Added new update action {@link io.sphere.sdk.discountcodes.commands.updateactions.SetValidFromAndUntil} to {@link DiscountCode}</li>
<li class=new-in-release>Added new {@link io.sphere.sdk.orders.messages.OrderDeletedMessage}.</li>
<li class=new-in-release>Added reference expansion to {@link io.sphere.sdk.shippingmethods.queries.ShippingMethodsByCartGet}.</li>
<li class=new-in-release>Added reference expansion to {@link io.sphere.sdk.shippingmethods.queries.ShippingMethodsByLocationGet}</li>
</ul>
<h3 class=released-version id="v1_34_0">1.34.0 (10.07.2018)</h3>
<ul>
<li class=change-in-release>Changed {@link ProductVariantImportDraftBuilder#prices(List)} argument from {@link List<Price>} to {@link List<PriceDraft>}</li>
<li class=added-in-release>Now {@link io.sphere.sdk.categories.commands.updateactions.ChangeParent} has an additional method {@link io.sphere.sdk.categories.commands.updateactions.ChangeParent#of(ResourceIdentifier)} to point out the changed parent via its resource identifier.</li>
<li class=added-in-release>Now supporting google PubSub destination {@link io.sphere.sdk.subscriptions.PubSubDestination} </li>
<li class=change-in-release>Added field {@link MessageSubscriptionPayload#getPaylaodNotIncluded()} to {@link io.sphere.sdk.subscriptions.PayloadNotIncluded} to give more details when the payload is not included in a message</li>
</ul>
<h3 class=released-version id="v1_33_0">1.33.0 (08.06.2018)</h3>
<ul>
<li class=change-in-release>Added field {@link OrderFromCartDraft#getShipmentState()} to {@link OrderFromCartDraft}</li>
<li class=change-in-release>Added {@link CustomerQueryModel#title()} and {@link CustomerQueryModel#middleName()} to {@link CustomerQueryModel}</li>
<li class=change-in-release>{@link LineItemImportDraftBuilder#of(ProductVariantImportDraft, long, PriceDraft, LocalizedString)} accepts price draft instead of price</li>
<li class=change-in-release>{@link LineItemImportDraftBuilder#of(ProductVariantImportDraft, long, Price, LocalizedString)} deprecated</li>
<li class=change-in-release>{@link ProductVariantImportDraft#getPrices()} returns a {@link PriceDraft} instead {@link Price}</li>
<li class=change-in-release>Fixing bug {@link CustomFields} addition to {@link PriceDraft}</li>
<li class=fixed-in-release>while making an order with prices containing custom fields, the request used to fail, this has now been fixed.</li>
</ul>
<h3 class=released-version id="v1_32_0">1.32.0 (23.05.2018)</h3>
<ul>
<li class=change-in-release>Added field {@link RemoveLineItem#getShippingDetailsToRemove()} to {@link RemoveLineItem}</li>
<li class=change-in-release>update jackson to 2.9.5</li>
<li class=change-in-release>Update org.asynchttpclient:async-http-client from version 2.0.38 to 2.4.5</li>
<li class=change-in-release>Changed return type of {@link Cart#getCustomerGroup()} and {@link Customer#getCustomerGroup()} from {@link Reference<CustomerGroup>} to {@link ResourceIdentifier<CustomerGroup>}</li>
<li class=change-in-release>Add {@link io.sphere.sdk.utils.HighPrecisionMoneyImpl} to enable high precision money in commercetools plateform when needed.</li>
<li class=change-in-release>to enable permanent erasure of users data, a boolean parameter can be set now to specify this in
{@link io.sphere.sdk.customers.commands.CustomerDeleteCommand},{@link io.sphere.sdk.orders.commands.OrderDeleteCommand}, {@link io.sphere.sdk.carts.commands.CartDeleteCommand}, {@link io.sphere.sdk.payments.commands.PaymentDeleteCommand},
{@link io.sphere.sdk.shoppinglists.commands.ShoppingListDeleteCommand}, {@link io.sphere.sdk.reviews.commands.ReviewDeleteCommand}, {@link io.sphere.sdk.discountcodes.commands.DiscountCodeDeleteCommand}, {@link CustomObjectDeleteCommand}.
</li>
</ul>
<h3 class=released-version id="v1_31_0">1.31.0 (12.04.2018)</h3>
<ul>
<li class=new-in-release>add {@link SphereJsonUtils#configureObjectMapper(ObjectMapper)} to configure
an existing jackson object mapper for usage with our JVM SDK
</li>
<li class=new-in-release>added {@link Payment#getAnonymousId()}, {@link PaymentDraft#getAnonymousId()}
and corresponding update action {@link io.sphere.sdk.payments.commands.updateactions.SetAnonymousId}</li>
<li class=new-in-release>
new ShippingDetails actions for order :
{@link io.sphere.sdk.orders.commands.updateactions.SetLineItemShippingDetails},
{@link io.sphere.sdk.orders.commands.updateactions.SetCustomLineItemShippingDetails},
{@link io.sphere.sdk.orders.commands.updateactions.AddItemShippingAddress}
{@link io.sphere.sdk.orders.commands.updateactions.RemoveItemShippingAddress}
{@link io.sphere.sdk.orders.commands.updateactions.UpdateItemShippingAddress},
supported now in our SDK.
</li>
<li class=change-in-release>{@link ItemShippingDetails#getTargets()} returns {@link Map<String, Long>} instead of {@link Map<String, Integer>}</li>
<li class=new-in-release>add support for Aws lambda based extension via {@link io.sphere.sdk.extensions.AWSLambdaDestination}</li>
<li class=removed-in-release> {@link MatchingProductDiscountGet} Query to lockup matching product discount.</li>
<li class=fixed-in-release>Our javadoc now contains documentation for our generated classes too.</li>
<li class=change-in-release>Correct typo on {@link SetAssetCustomType#ofSkuAndAssetKey(String, String, CustomFieldsDraft)}, previously named ofSkuAndAssetKeyAndAssetKey</li>
<li class=change-in-release>Added support for Order extensions {@link ExtensionResourceType#ORDER}</li>
</ul>
<h3 class=released-version id="v1_30_0">1.30.0 (08.03.2018)</h3>
<ul>
<li class=new-in-release>
Added customer change messages:
{@link io.sphere.sdk.customers.messages.CustomerAddressAddedMessage},
{@link io.sphere.sdk.customers.messages.CustomerAddressChangedMessage},
{@link io.sphere.sdk.customers.messages.CustomerAddressRemovedMessage},
{@link io.sphere.sdk.customers.messages.CustomerCompanyNameSetMessage},
{@link io.sphere.sdk.customers.messages.CustomerDateOfBirthSetMessage},
{@link io.sphere.sdk.customers.messages.CustomerEmailChangedMessage},
{@link io.sphere.sdk.customers.messages.CustomerEmailVerifiedMessage},
{@link io.sphere.sdk.customers.messages.CustomerGroupSetMessage}
</li>
<li class=new-in-release>Cart replication feature with {@link io.sphere.sdk.carts.commands.CartReplicationCommand} and {@link io.sphere.sdk.carts.commands.CartReplicationDraft}</li>
<li class=change-in-release>Changed visibility of {@link ProductLike} interface to public.</li>
<li class=change-in-release>Added {@link ExtensionResourceType} in order to add type check while creating {@link Trigger#getResourceTypeId()} field, instead of using string laterals.</li>
<li class=change-in-release>Update jackson from 2.9.3 to 2.9.4 </li>
<li class=change-in-release>Changed return type of {@link ProductTypeDraft#getAttributes()} from {@link List<AttributeDefinition>} for {@link List<io.sphere.sdk.products.attributes.AttributeDefinitionDraft>}</li>
<li class=change-in-release>Changed return type of {@link ProductTypeDraft#getAttributes()} from {@link List<AttributeDefinition>} for {@link List<io.sphere.sdk.products.attributes.AttributeDefinitionDraft>}</li>
<li class=change-in-release>Changed return type of {@link ProductTypeDraftDsl#getAttributes()} from {@link List<AttributeDefinition>} for {@link List<io.sphere.sdk.products.attributes.AttributeDefinitionDraft>}</li>
<li class=change-in-release>Added {@link ItemShippingDetails#getTargetsMap()} convenience method.</li>
<li class=new-in-release>Added {@link io.sphere.sdk.producttypes.commands.updateactions.ChangeEnumKey} and {@link io.sphere.sdk.producttypes.commands.updateactions.ChangeAttributeName} update actions to {@link ProductType}</li>
<li class=fixed-in-release>Added missing accessor method for {@code assetKey} to {@link ChangeAssetName#getAssetKey()} and {@link SetAssetCustomField#getAssetKey()}.</li>
</ul>
<h3 class=released-version id="v1_29_1">1.29.1 (22.02.2018)</h3>
<ul>
<li class=fixed-in-release>Javamoney issue with class loader.</li>
</ul>
<h3 class=released-version id="v1_29_0">1.29.0 (08.02.2018)</h3>
<ul>
<li class=change-in-release>added {@link CustomFields} to {@link CustomerGroup}</li>
<li class=change-in-release>added {@link io.sphere.sdk.states.StateRole#RETURN} to {@link io.sphere.sdk.states.StateRole} enumeration</li>
<li class=change-in-release>added {@link DiscountCode#getGroups()} to {@link DiscountCode}</li>
<li class=change-in-release>added field deliveryId (referring delivery) to {@link io.sphere.sdk.orders.messages.ParcelItemsUpdatedMessage}</li>
<li class=change-in-release>updated jackson version to 2.9.3</li>
<li class=change-in-release>added {@link io.sphere.sdk.discountcodes.DiscountCodeState#APPLICATION_STOPPED_BY_PREVIOUS_DISCOUNT} and {@link io.sphere.sdk.discountcodes.DiscountCodeState#NOT_VALID} to {@link io.sphere.sdk.discountcodes.DiscountCodeState} </li>
<li class=change-in-release>added field origin of type {@link CartOrigin} to {@link Cart} and {@link Order} with the associated import actions and drafts</li>
<li class=change-in-release>added {@link Cart#getItemShippingAddresses()} field to {@link Cart} and {@link Order} and associated drafts </li>
<li class=change-in-release>added {@link ItemShippingDetails} to {@link CustomLineItem} and {@link LineItem} and associated drafts </li>
<li class=change-in-release>added {@link ProductVariantQueryModel#key()} to {@link ProductVariantQueryModel} </li>
<li class=new-in-release>added {@link ItemShippingDetails} and {@link ItemShippingTarget} as support for new multiple shipping addresses feature from backend.</li>
</ul>
<h3 class=released-version id="v1_28_0">1.28.0 (18.01.2018)</h3>
<ul>
<li class=change-in-release>{@link CategoryDraft#getParent()} changed return type from {@link Reference<Category>} to {@link ResourceIdentifier<Category>}</li>
<li class=change-in-release>{@link CategoryDraftBuilder#parent(Referenceable)} is now deprecated and should be replaced by the new method {@link CategoryDraftBuilder#parent(ResourceIdentifier)}</li>
<li class=change-in-release>Updated Asynchronous Http Client to 2.0.38</li>
<li class=change-in-release>Added member {@link ParcelDraft#getItems()}</li>
<li class=new-in-release>Added {@link DiscountCode#getValidFrom()} and {@link DiscountCode#getValidUntil()}</li>
<li class=new-in-release>Added {@link ProductDiscount#getValidFrom()} and {@link ProductDiscount#getValidUntil()}</li>
<li class=new-in-release>Added {@link io.sphere.sdk.orders.messages.OrderReturnShipmentStateChangedMessage}</li>
<li class=new-in-release>Added {@link io.sphere.sdk.orders.messages.OrderShipmentStateChangedMessage}</li>
<li class=new-in-release>Added {@link io.sphere.sdk.taxcategories.queries.TaxCategoryQuery#byKey(String)} to {@link io.sphere.sdk.taxcategories.queries.TaxCategoryQuery}</li>
<li class=new-in-release>Added {@link PagedSearchResult#empty()} for API consistency reasons</li>
<li class=new-in-release>Added {@link OrderExpansionModel#state()} for API consistency reasons</li>
<li class=new-in-release>Added a new endpoint {@link io.sphere.sdk.extensions.Extension} and query, delete, update actions all listed in the new in {@link io.sphere.sdk.extensions} package.</li>
<li class=new-in-release>Added {@link ParcelDraftBuilder}</li>
</ul>
<h3 class=released-version id="v1_27_0">1.27.0 (14.12.2017)</h3>
<ul>
<li class=new-in-release>Added {@link OrderImportDraft#getTaxCalculationMode()}.</li>
<li class=new-in-release>Added new {@link io.sphere.sdk.orders.messages.OrderReturnShipmentStateChangedMessage}
and {@link io.sphere.sdk.orders.messages.OrderShipmentStateChangedMessage}.</li>
<li class=new-in-release>Added {@link OrderImportDraft#getTaxCalculationMode()}.</li>
<li class=new-in-release>Added {@link AddDelivery#getAddress()}.</li>
<li class=fixed-in-release>Fixed bug in serialization of {@link LocalizedEnumValue}.</li>
<li class=new-in-release>Added new update action to change the attribute constraint of a product type
{@link io.sphere.sdk.producttypes.commands.updateactions.ChangeAttributeConstraint}.</li>
<li class=new-in-release>The following product variant update actions can now use the {@link Asset#getKey()} property to identify an asset:
{@link RemoveAsset}, {@link SetAssetTags}, {@link ChangeAssetName}, {@link SetAssetDescription}, {@link SetAssetSources}, {@link SetAssetCustomType},
{@link SetAssetCustomField}.
</li>
<li class=new-in-release>The following category update actions can now use the {@link Asset#getKey()} property to identify an asset:
{@link io.sphere.sdk.categories.commands.updateactions.RemoveAsset}, {@link io.sphere.sdk.categories.commands.updateactions.SetAssetTags},
{@link io.sphere.sdk.categories.commands.updateactions.ChangeAssetName}, {@link io.sphere.sdk.categories.commands.updateactions.SetAssetDescription},
{@link io.sphere.sdk.categories.commands.updateactions.SetAssetSources}, {@link io.sphere.sdk.categories.commands.updateactions.SetAssetCustomType},
{@link io.sphere.sdk.categories.commands.updateactions.SetAssetCustomField}.
</li>
<li class=new-in-release>
Added optional property position on update actions {@link AddAsset#getPosition()} and {@link io.sphere.sdk.categories.commands.updateactions.AddAsset#getPosition()}
</li>
<li class=new-in-release>Added new product update action {@link RevertStagedVariantChanges}.</li>
<li class=new-in-release>Added custom fields for cart discounts {@link CartDiscount#getCustom()}, {@link CartDiscountDraft#getCustom()} and the
update action {@link io.sphere.sdk.cartdiscounts.commands.updateactions.SetCustomField} and
{@link io.sphere.sdk.cartdiscounts.commands.updateactions.SetCustomType}.</li>
</ul>
<h3 class=released-version id="v1_26_0">1.26.0 (20.11.2017)</h3>
<ul>
<li class=new-in-release>Added update action for setting the predicate of a shipping method {@link io.sphere.sdk.shippingmethods.commands.updateactions.SetPredicate}.
</li>
<li class=new-in-release>Added shopping list item sku {@link io.sphere.sdk.shoppinglists.LineItemDraft#getSku()}.
</li>
<li class=new-in-release>Added support for new cart tax calculation mode {@link Cart#getTaxCalculationMode()}, {@link CartDraft#getTaxCalculationMode()}
and the corresponding update action {@link io.sphere.sdk.carts.commands.updateactions.ChangeTaxCalculationMode}.
</li>
<li class=new-in-release>Added support for creating multi buy discounts for custom line items{@link io.sphere.sdk.cartdiscounts.MultiBuyCustomLineItemsTarget},
{@link io.sphere.sdk.cartdiscounts.SelectionMode}.
</li>
<li class=new-in-release>Added support for getting {@link io.sphere.sdk.orders.queries.OrderByOrderNumberGet},
updating {@link io.sphere.sdk.orders.commands.OrderUpdateCommand#ofOrderNumber(String, Long, UpdateAction)} and
deleting {@link io.sphere.sdk.orders.commands.OrderDeleteCommand#ofOrderNumber(String, Long)} of an order by order number.
</li>
<li class=new-in-release>
Added new {@link CustomerSignInCommand#updateProductData} property to {@link CustomerSignInCommand}.
</li>
</ul>
<h3 class=released-version id="v1_25_0">1.25.0 (19.10.2017)</h3>
<ul>
<li class=new-in-release>Added support for OSGi.</li>
<li class=new-in-release>Added support for keys in {@link CategoryTree} with {@link CategoryTree#findByKey(String)}.</li>
<li class=new-in-release>
Added new shipping rate input property in {@link Order#getShippingRateInput()} and {@link Project#getShippingRateInputType()}.
Added new tiered shipping rates property in {@link ShippingRate#getTiers()}.
</li>
<li class=new-in-release>
Added support for new parcel items property in {@link Parcel#getItems()} and {@link ParcelMeasurements#getItems()}.
</li>
<li class=new-in-release>Added new product type update action {@link RemoveEnumValues}.</li>
<li class=new-in-release>Added new product update action {@link SetImageLabel}.</li>
<li class=new-in-release>Added getter methods for our generated draft builder classes.</li>
<li class=new-in-release>Added new property {@link CartDiscount#getStackingMode()}, {@link CartDiscountDraft#getStackingMode()} and enum {@link StackingMode}.</li>
<li class=new-in-release>
Improved performance of {@link QueryExecutionUtils} helper class by providing the query method
{@link QueryExecutionUtils#queryAll(SphereClient, QueryDsl, Consumer)} .
</li>
<li class=change-in-release>Marked {@link ProductDraft#getMasterVariant()} as nullable.</li>
</ul>
<h3 class=released-version id="v1_24_0">1.24.0 (29.09.2017)</h3>
<ul>
<li class=change-in-release>Changed type of {@link io.sphere.sdk.shoppinglists.LineItemDraft#getCustom()} to {@link CustomFieldsDraft}.
This breaking change might require changes in your source code.
</li>
<li class=change-in-release>Update com.fasterxml.jackson.core plugins group from 2.6.5 to 2.8.9</li>
<li class=fixed-in-release>Added missing {@link io.sphere.sdk.shoppinglists.LineItemDraftBuilder#custom(CustomFieldsDraft)} builder method
to replace now deprecated {@link io.sphere.sdk.shoppinglists.LineItemDraftBuilder#custom(CustomFields)} builder method.
</li>
<li class=change-in-release>Deprecated several payment properties and update actions:
<ul>
<li>{@link Payment#getAmountAuthorized()}, {@link Payment#getAmountPaid()}, {@link Payment#getAmountRefunded()},
{@link Payment#getAuthorizedUntil()} and {@link Payment#getExternalId()}
</li>
<li>{@link PaymentDraft#getAmountAuthorized()}, {@link PaymentDraft#getAmountPaid()}, {@link PaymentDraft#getAmountRefunded()},
{@link PaymentDraft#getAuthorizedUntil()} and {@link PaymentDraft#getExternalId()}
</li>
<li>{@link io.sphere.sdk.payments.commands.updateactions.SetAmountPaid}, {@link io.sphere.sdk.payments.commands.updateactions.SetAmountRefunded},
{@link io.sphere.sdk.payments.commands.updateactions.SetAuthorization} and {@link io.sphere.sdk.payments.commands.updateactions.SetExternalId}
</li>
</ul>
</li>
<li class=fixed-in-release>Fixed {@link NullPointerException} in {@link TypeDraftBuilder#plusFieldDefinitions(FieldDefinition)}.</li>
<li class=new-in-release>Added new custom fields on discount code {@link DiscountCode#getCustom()}, {@link DiscountCodeDraft#getCustom()} and
corresponding update actions {@link io.sphere.sdk.discountcodes.commands.updateactions.SetCustomType}, {@link io.sphere.sdk.discountcodes.commands.updateactions.SetCustomField}
</li>
<li class=new-in-release>Added new project update actions {@link io.sphere.sdk.projects.commands.updateactions.ChangeCountries},
{@link io.sphere.sdk.projects.commands.updateactions.ChangeCurrencies}, {@link io.sphere.sdk.projects.commands.updateactions.ChangeLanguages},
{@link io.sphere.sdk.projects.commands.updateactions.ChangeMessages}, {@link io.sphere.sdk.projects.commands.updateactions.ChangeMessagesEnabled}
and {@link io.sphere.sdk.products.commands.updateactions.ChangeName}.
</li>
<li class=new-in-release>Added {@code plus*} methods to generated draft builder to ease working with list properties
(e.g. {@link io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder#plusLineItems(io.sphere.sdk.shoppinglists.LineItemDraft)},
{@link io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder#plusLineItems(List)}).
</li>
<li class=new-in-release>Added missing {@link io.sphere.sdk.payments.queries.PaymentByKeyGet} query,
{@link io.sphere.sdk.payments.commands.PaymentDeleteCommand#ofKey(String, Long)} and<
{@link io.sphere.sdk.payments.commands.PaymentUpdateCommand#ofKey(String, Long, UpdateAction)} commands.
</li>
<li class=new-in-release>Added support for creating multi buy discounts {@link io.sphere.sdk.cartdiscounts.MultiBuyLineItemsTarget},
{@link io.sphere.sdk.cartdiscounts.SelectionMode}.
</li>
</ul>
<h3 class=released-version id="v1_23_1">1.23.1 (26.09.2017)</h3>
<ul>
<li class=fixed-in-release>Fixed NullPointerException in {@link PriceDraftBuilder#of(Price)}.</li>
</ul>
<h3 class=released-version id="v1_23_0">1.23.0 (11.09.2017)</h3>
<ul>
<li class=new-in-releas>Added new shipping method predicate {@link ShippingMethod#getPredicate()}, {@link ShippingMethodDraft#getPredicate()}.</li>
<li class=new-in-release>Added new shipping info method state {@link CartShippingInfo#getShippingMethodState()}.</li>
<li class=new-in-release>Introduced new {@link io.sphere.sdk.cartdiscounts.CartPredicate} which generalizes and deprecates the
{@link io.sphere.sdk.cartdiscounts.CartDiscountPredicate}.</li>
<li class=new-in-release>Added new tax mode {@link TaxMode#EXTERNAL_AMOUNT}. Added new {@link ExternalTaxAmountDraft} type, which can be used to set the external tax amount
with the new update actions {@link io.sphere.sdk.carts.commands.updateactions.SetLineItemTaxAmount}, {@link io.sphere.sdk.carts.commands.updateactions.SetCustomLineItemTaxAmount},
{@link io.sphere.sdk.carts.commands.updateactions.SetShippingMethodTaxAmount} and {@link io.sphere.sdk.carts.commands.updateactions.SetCartTotalTax}.</li>
<li class=new-in-release>Add support for getting {@link io.sphere.sdk.shippingmethods.queries.ShippingMethodByKeyGet} and updating {@link io.sphere.sdk.shippingmethods.commands.ShippingMethodUpdateCommand#ofKey(String, Long, UpdateAction)}
a shipping method by key.</li>
<li class=new-in-release>Added correlation id to oauth requests.</li>
<li class=new-in-release>Added new {@link io.sphere.sdk.carts.commands.updateactions.SetAnonymousId} cart update action.</li>
<li class=new-in-release>Added new key property to customer {@link Customer#getKey()}, {@link CustomerDraft#getKey()} and corresponding update action {@link io.sphere.sdk.customers.commands.updateactions.SetKey}.
Added {@link io.sphere.sdk.customers.queries.CustomerByKeyGet}, {@link io.sphere.sdk.customers.commands.CustomerDeleteCommand#ofKey(String, Long)} and {@link io.sphere.sdk.customers.commands.CustomerUpdateCommand#ofKey(String, Long, UpdateAction)}.</li>
<li class=new-in-release><Added support for publish prices only {@link PublishScope}, {@link io.sphere.sdk.products.commands.updateactions.Publish#ofScope(PublishScope)} and {@link ProductPublishedMessage#getScope()}.</li>
</ul>
<h3 class=released-version id="v1_22_0">1.22.0 (09.08.2017)</h3>
<ul>
<li class=new-in-release>A correlation id is now generated for each {@link SphereRequest}.</li>
<li class=new-in-release>Added {@link TaxCategory#getKey()}, {@link TaxCategoryDraft#getKey()} and
corresponding update action {@link io.sphere.sdk.taxcategories.commands.updateactions.SetKey}.
</li>
<li class=new-in-release>
Added {@link io.sphere.sdk.taxcategories.queries.TaxCategoryByKeyGet} and
{@link io.sphere.sdk.taxcategories.commands.TaxCategoryDeleteCommand#ofKey(String, Long)}.
</li>
<li class=new-in-release>Add {@link LineItemDraft#getSku()}.</li>
<li class=new-in-release>Add {@link io.sphere.sdk.shippingmethods.ShippingMethod#getKey()},
{@link io.sphere.sdk.shippingmethods.ShippingMethodDraft#getKey()} and update action
{@link io.sphere.sdk.shippingmethods.commands.updateactions.SetKey}.
</li>
<li class=new-in-release>
Added {@link io.sphere.sdk.shippingmethods.commands.ShippingMethodDeleteCommand#ofKey(String, Long)}.
</li>
<li class=new-in-release>Add {@link CartDraft#getCustomerGroup()} and update action
{@link io.sphere.sdk.carts.commands.updateactions.SetCustomerGroup}.</li>
</ul>
<h3 class=released-version id="v1_21_0">1.21.0 (18.07.2017)</h3>
<ul>
<li class=new-in-release>Added {@link CustomerGroup#getKey()} and {@link CustomerGroupDraft#getKey()}.</li>
<li class=new-in-release>Added {@link ProductPublishedMessage#getRemovedImageUrls()}.</li>
<li class=new-in-release>Added {@link io.sphere.sdk.customers.queries.CustomerByEmailTokenGet} to retrieve a customer by email token.</li>
<li class=new-in-release>Added {@link io.sphere.sdk.producttypes.commands.updateactions.SetInputTip} update action.</li>
<li class=fixed-in-release>{@link io.sphere.sdk.customers.queries.CustomerByPasswordTokenGet} now uses the new endpoint.</li>
<li class=change-in-release>Changed type of {@link ProductDraft#getCategories()} from Set<Reference<Category>> to Set<ResourceIdentifier<Category>>.
This breaking change may require an update of your source code, depending on how you use the {@link ProductDraft} type.
The previously returned {@link Reference} instances provided a {@link Reference#getObj()} method
that is not available from {@link ResourceIdentifier}. If you relied on the {@link Reference#getObj()} method to retrieve the id or key of the referenced object, you now have
to use the {@link ResourceIdentifier#getId()} and {@link ResourceIdentifier#getKey()} as exposed by the {@link ResourceIdentifier} interface.
<li class=change-in-release>Updated <a href="https://javamoney.github.io/ri.html#welcome-to-moneta---the-jsr-354-reference-implementation">moneta</a> to version 1.1</li>
<li class=change-in-release>Changed {@link io.sphere.sdk.client.SphereProjectScope} from an enum to a class and added missing scopes. This change doesn't require changes to your source code,
but requires a recompilation of all projects that depend on this class.</li>
</ul>
<h3 class=released-version id="v1_20_0">1.20.0 (23.06.2017)</h3>
<ul>
<li class=new-in-release>Added support for Azure ServiceBus subscription destinations {@link AzureServiceBusDestination}.</li>
<li class=new-in-release>Added support for for external line item prices {@link LineItemDraft#getExternalPrice()}, {@link LineItemPriceMode#EXTERNAL_PRICE}.</li>
<li class=new-in-release>Added {@link ChangeInputHint} update action for product types/attribute definitions.</li>
<li class=new-in-release>Added {@link CustomerInvalidCurrentPassword} error.</li>
<li class=fixed-in-release>Fixed bug in {@link CustomFieldsDraftBuilder#of(CustomFields)}, where the id was confused with the typeId.</li>
</ul>
<h3 class=released-version id="v1_19_0">1.19.0 (06.06.2017)</h3>
<ul>
<li class=new-in-release>Added getter method {@link SphereClient#getConfig()} for accessing the {@link SphereApiConfig}.</li>
<li class=new-in-release>Added new messages {@link OrderPaymentStateChangedMessage}, {@link PaymentStatusInterfaceCodeSetMessage},
{@link ProductRevertedStagedChangesMessage}, {@link ProductVariantDeletedMessage} and {@link ProductDeletedMessage}.</li>
<li class=new-in-release>Added new cart discount value {@link GiftLineItemCartDiscountValue} for gift line items {@link LineItem#getLineItemMode()},
{@link LineItemMode#GIFT_LINE_ITEM}.</li>
<li class=new-in-release>Added new key property for category {@link Category#getKey()}, {@link CategoryDraft#getKey()} and corresponding update action {@link SetKey}.</li>
<li class=new-in-release>Added new salutation for customer {@link Customer#getSalutation()}, {@link CustomerDraft#getSalutation()} and
corresponding update action {@link SetSalutation ()}.</li>
<li class=new-in-release>Added {@link ProductImageUploadCommand}, which previously was only available via a separate module.</li>
<li class=change-in-release>Added missing {@link javax.annotation.Nullable} annotations to {@link PagedSearchResult}.</li>
</ul>
<h3 class=released-version id="v1_18_0">1.18.0 (18.05.2017)</h3>
<ul>
<li class=change-in-release>The {@link ProductDraftBuilder} class is now using a generated base class. This change doesn't require changes to your source code,
but requires a recompilation of all projects that depend on this class.</li>
<li class=new-in-release>{@link io.sphere.sdk.categories.queries.CategoryQuery} now
supports sorting by {@link Category#getOrderHint()} via {@link CategoryQueryModel#orderHint()}.</li>
</li>
<li class=new-in-release>Added {@link io.sphere.sdk.products.commands.updateactions.SetAssetSources} update action for products.</li>
<li class=new-in-release>Added new message {@link io.sphere.sdk.products.messages.ProductImageAddedMessage}.</li>
<li class=fixed-in-release>The shopping lists {@link io.sphere.sdk.shoppinglists.LineItem#getVariant()} {@link ProductVariant#getIdentifier()}
is now correctly initialized.</li>
<li class=fixed-in-release>Removed the incorrect nullable annotation from {@link InventoryEntryDraft#getQuantityOnStock()}.</li>
</ul>
<h3 class=released-version id="v1_17_0">1.17.0 (28.04.2017)</h3>
<ul>
<li class=new-in-release>Added {@link Payment#getKey()}, {@link PaymentDraft#getKey()} and
corresponding update action {@link io.sphere.sdk.payments.commands.updateactions.SetKey}.</li>
<li class=new-in-release>Added copy factor methods to draft builder classes ({@link CategoryDraftBuilder#of(Category)},
{@link InventoryEntryDraftBuilder#of(InventoryEntry)}, {@link AssetDraftBuilder#of(Asset)}, {@link PriceDraftBuilder#of(Price)},
{@link ProductVariantDraftBuilder#of(ProductVariant)}, {@link io.sphere.sdk.products.attributes.AttributeDraftBuilder#of(Attribute)} and
{@link ProductTypeDraftBuilder#of(ProductType)}) to convert from a resource to the corresponding resource draft.
These changes don't require changes to your source code, but they require a recompilation of all projects that depend on these classes.</li>
<li class=new-in-release>Added support for change subscriptions {@link io.sphere.sdk.subscriptions.ChangeSubscription} and
message subscriptions {@link io.sphere.sdk.subscriptions.MessageSubscription}.
</li>
</ul>
<h3 class=released-version id="v1_16_0">1.16.0 (12.04.2017)</h3>
<ul>
<li class=new-in-release>Added {@link ShippingRate#isMatching()}.</li>
<li class=change-in-release>To enable code generation, we changed the type of {@link ShippingRate} from class to interface.
This change doesn't require you to change your source code, but requires a recompilation of all projects that depend on this class.
</li>
</ul>
<h3 class=released-version id="v1_15_0">1.15.0 (04.04.2017)</h3>
<ul>
<li class=new-in-release>Added query model {@link PriceTierQueryModel} for tiered prices {@link PriceQueryModel#tiers()}.</li>
</ul
<h3 class=released-version id="v1_14_1">1.14.1 (30.03.2017)</h3>
<ul>
<li class=fixed-in-release>Fix for {@link LineItemExpansionModel#variant()} so that it works correctly.
This is a breaking change, but the previous version was incorrect and didn't work.</li>
</ul>
<h3 class=released-version id="v1_14_0">1.14.0 (28.03.2017)</h3>
<ul>
<li class=new-in-release>Added {@link PriceTier} for tired prices, which are accessible via {@link Price#getTiers()} and {@link PriceDraft#getTiers()}</li>
</ul>
<h3 class=released-version id="v1_13_0">1.13.0 (20.03.2017)</h3>
<ul>
<li class=new-in-release>{@link OrderImportDraft} now provides custom fields {@link OrderImportDraft#getCustom()}</li>
<li class=new-in-release>{@link LineItemImportDraft} now provides custom fields {@link LineItemImportDraft#getCustom()}</li>
<li class=new-in-release>{@link CustomerSignInResultExpansionModel} now provides expansion of the cart {@link CustomerSignInResultExpansionModel#cart}</li>
<li class=new-in-release>{@link ProductVariantAvailabilityFilterSearchModel} now provides filtering by {@code isOnStockInChannels} via {@link ProductVariantAvailabilityFilterSearchModel#onStockInChannels()}</li>
<li class=new-in-release>{@link ShoppingList} and {@link ShoppingListDraft} now provide time to live attribute {@link ShoppingList#getDeleteDaysAfterLastModification()} and {@link ShoppingListDraft#getDeleteDaysAfterLastModification()}</li>
<li class=new-in-release>{@link Cart} and {@link CartDraft} now provide time to live attribute {@link Cart#getDeleteDaysAfterLastModification()} and {@link CartDraft#getDeleteDaysAfterLastModification()}</li>
<li class=new-in-release>{@link ProductVariantSortSearchModel} now provides sorting by {@code sku} {@link ProductVariantSortSearchModel#sku()}</li>
<li class=new-in-release>Product update actions now support {@code staged} parameter</li>
<li class=change-in-release>Some of our draft builder now return the more specific {@code <Draft>Dsl} types.
This change doesn't require you to change your source code, but requires a recompilation of all projects that depend on these classes.
The following classes changed:
<ul>
<li>{@link CartDiscountDraftBuilder}</li>
<li>{@link CategoryDraftBuilder}</li>
<li>{@link CustomerGroupDraftBuilder}</li>
<li>{@link InventoryEntryDraftBuilder}</li>
<li>{@link PaymentDraftBuilder}</li>
<li>{@link ProductDiscountDraftBuilder}</li>
<li>{@link ProductVariantDraftBuilder}</li>
<li>{@link ProductTypeDraftBuilder}</li>
<li>{@link ReviewDraftBuilder}</li>
<li>{@link ShippingMethodDraftBuilder}</li>
<li>{@link TaxCategoryDraftBuilder}</li>
<li>{@link TypeDraftBuilder}</li>
<li>{@link ZoneDraftBuilder}</li>
<li>{@link ZoneDraftBuilder}</li>
</ul>
<li class=change-in-release>The missing and exists filter support is now using separate interfaces.
This change doesn't require you to change your source code, but requires a recompilation of all projects that depend on these classes.
The following classes changed:
<ul>
<li>{@link ProductAttributeFilterSearchModel}</li>
<li>{@link ProductVariantFilterSearchModel}</li>
</ul>
</li>
<li class=fixed-in-release>{@link ProductVariantDraftBuilder#of(ProductVariantDraft)} now correctly copies all attributes of the given {@code template}</li>
</ul>
<h3 class=released-version id="v1_12_0">1.12.0 (27.02.2017)</h3>
<ul>
<li class=new-in-release>Added {@link Channel#getGeoLocation()}, added support for it in {@link ChannelQueryModel#geoLocation()} and support for {@code withinCircle}
predicate {@link GeoJSONQueryModel#withinCircle(Point, Double)}.</li>
<li class=new-in-release>Added shopping list resource {@link io.sphere.sdk.shoppinglists.ShoppingList} with new cart update action {@link io.sphere.sdk.carts.commands.updateactions.AddShoppingList}.</li>
<li class=change-in-release>Improved recovery strategy for {@link io.sphere.sdk.sequencegenerators.CustomObjectBigIntegerNumberGenerator} so that it retries when the id already exists.</li>
<li class=change-in-release>Updated {@code org.asynchttpclient:async-http-client} version of the {@code sdk-http-ahc-2_0} module to version {@code 2.0.28}.</li>
</ul>
<h3 class=released-version id="v1_11_0">1.11.0 (07.02.2017)</h3>
<ul>
<li class=new-in-release>{@link Asset}s on categories</li>
<li class=new-in-release>{@link OrderImportDraft} can now provide the {@code inventoryMode} to track inventory</li>
<li class=fixed-in-release>{@code Set} types preserve input order, see <a href="https://github.com/commercetools/commercetools-jvm-sdk/issues/1294">#1294</a></li>
<li class=fixed-in-release>{@link ProductDraftBuilder} was not preserving the {@code key} when using a {@link ProductDraft}</li>
</ul>
<h3 class=released-version id="v1_10_0">1.10.0 (17.01.2017)</h3>
<ul>
<li class=new-in-release>Carts and orders have a new field taxRoundingMode. This rounding mode is used when calculating taxes. On Cart it is possible to set this field either at creation time or via the new update action {@link io.sphere.sdk.carts.commands.updateactions.ChangeTaxRoundingMode}. When creating an Order from a Cart, the Order has the tax rounding mode of the Cart it was created from.</li>
<li class=new-in-release>{@link LineItem#getProductType()}</li>
</ul>
<h3 class=released-version id="v1_9_0">1.9.0 (06.01.2017)</h3>
<ul>
<li class=new-in-release>{@link LineItem#getPriceMode()}</li>
<li class=new-in-release>Provided {@link PriceUtils} class to assist on some typical price calculations, such as gross and net conversions</li>
<li class=new-in-release>Added {@link CartLike#calculateSubTotalPrice()} and {@link CartLike#calculateTotalAppliedTaxes()}</li>
</ul>
<h3 class=released-version id="v1_8_0">1.8.0 (09.12.2016)</h3>
<ul>
<li class="change-in-release">{@link CustomerQueryModel#customerGroup()}, {@link io.sphere.sdk.inventory.queries.InventoryEntryQueryModel#supplyChannel()} and {@link io.sphere.sdk.orders.queries.OrderQueryModel#cart()} returns a {@link io.sphere.sdk.queries.ReferenceOptionalQueryModel} instead of {@link io.sphere.sdk.queries.ReferenceQueryModel} to enable additional query predicates.</li>
<li class=new-in-release>{@link CustomerQueryModel#customerNumber()} </li>
<li class=new-in-release>links to the Java SE classes are provided in the SDK so for example for {@link String} and {@link CompletionStage}</li>
<li class=new-in-release>{@link Customer#getShippingAddressIds()} and {@link Customer#getBillingAddressIds()} as well as the update actions {@link io.sphere.sdk.customers.commands.updateactions.AddBillingAddressId}, {@link io.sphere.sdk.customers.commands.updateactions.RemoveBillingAddressId}, {@link AddShippingAddressId}, {@link io.sphere.sdk.customers.commands.updateactions.RemoveShippingAddressId}</li>
<li class=new-in-release>create commands got withers for the draft objects like {@code io.sphere.sdk.products.commands.ProductCreateCommand#withDraft(Object)} </li>
<li class=new-in-release>{@link FilteredFacetResult#getProductCount()} </li>
</ul>
<h3 class=released-version id="v1_7_0">1.7.0 (22.11.2016)</h3>
<ul>
<li class="change-in-release">In {@code DraftBuilder} classes the {@code build()} method returns a {@code DraftDsl} class instead of its corresponding {@code Draft} interface. Similarly some methods relying on these builders have changed their return type to {@code DraftDsl} as well. The following methods are affected by this change: {@link CartDiscountDraftBuilder#build()}, {@link CategoryDraftBuilder#build()}, {@link CustomerDraftBuilder#build()}, {@link InventoryEntryDraftBuilder#build()}, {@link PaymentDraftBuilder#build()}, {@link ProductDiscountDraftBuilder#build()}, {@link ReviewDraftBuilder#build()}, {@link TypeDraftBuilder#build()}, {@link StateDraftDsl#withRoles(io.sphere.sdk.states.StateRole)}, {@link StateDraftDsl#withRoles(Set)} and {@link StateDraftDsl#withTransitions(Set)}.</li>
<li class=new-in-release>For each resource draft builders and implementation classes are generated</li>
<li class=new-in-release>{@link io.sphere.sdk.products.commands.updateactions.SetDiscountedPrice}</li>
<li class=new-in-release>{@link Address#getExternalId()} </li>
<li class=new-in-release>{@link ProductProjectionSearch#withMarkingMatchingVariants(Boolean)}</li>
</ul>
<h3 class=released-version id="v1_6_0">1.6.0 (21.10.2016)</h3>
<ul>
<li class=new-in-release>expansion paths for discounts in line items and custom line items</li>
<li class=new-in-release>change enum labels for product types: {@link io.sphere.sdk.producttypes.commands.updateactions.ChangePlainEnumValueLabel} and {@link io.sphere.sdk.producttypes.commands.updateactions.ChangeLocalizedEnumValueLabel}</li>
<li class=new-in-release>add convenience factory methods for {@link SetAttribute}: {@link SetAttribute#ofVariantId(java.lang.Integer, java.lang.String, java.lang.Object)}, {@link SetAttribute#ofSku(java.lang.String, java.lang.String, java.lang.Object)}</li>
<li class=new-in-release>{@link io.sphere.sdk.orders.errors.PriceChangedError}</li>
<li class=new-in-release>{@link ProductDraftBuilder#of(ResourceIdentifiable, LocalizedString, LocalizedString, List)} to pass all variants as one list</li>
<li class=change-in-release>{@link io.sphere.sdk.search.model.Range} constructor no longer throws {@code InvertedBoundsException}. See <a href="https://github.com/commercetools/commercetools-jvm-sdk/issues/1247">#1247</a></li>
<li class=fixed-in-release>A JavaMoney initialization issue with sbt has been fixed.</li>
<li class=fixed-in-release>{@link io.sphere.sdk.sequencegenerators.CustomObjectBigIntegerNumberGenerator} does retries only on {@link io.sphere.sdk.client.ConcurrentModificationException}s.</li>
</ul>
<h3 class=released-version id="v1_5_0">1.5.0 (14.10.2016)</h3>
<ul>
<li class=new-in-release>{@link Asset}s on products</li>
<li class=new-in-release>{@link io.sphere.sdk.carts.commands.updateactions.SetLineItemTotalPrice}</li>
<li class=new-in-release>{@link io.sphere.sdk.carts.commands.updateactions.ChangeCustomLineItemQuantity} and {@link io.sphere.sdk.carts.commands.updateactions.ChangeCustomLineItemMoney}</li>
<li class=change-in-release>The format of the User-Agent header changed to sth. like
"{@code commercetools-jvm-sdk/1.5.0 (AHC/2.0) Java/1.8.0_101-b13 (Linux; amd64)}" from originally "{@code commercetools JVM SDK 1.4.0}". It is also possible to add a solution info, see {@link io.sphere.sdk.client.SolutionInfo}.</li>
<li class=change-in-release>Using the default {@link SphereClient} will attempt to fetch a new token if an {@link io.sphere.sdk.client.InvalidTokenException} occurs.</li>
<li class=change-in-release>{@link LocalizedString#slugified()} and {@link LocalizedString#slugifiedUnique()} generate a String with a max length of 256 to be valid for the commercetools platform. In addition, only allowed characters like {@code [-_a-zA-Z0-9]} will be in the output. Before that it was possible to keep for example a "+".</li>
</ul>
<h3 class=released-version id="v1_4_0">1.4.0 (29.09.2016)</h3>
<ul>
<li class=new-in-release>{@link State#getRoles()}, {@link io.sphere.sdk.states.commands.updateactions.AddRoles}, {@link io.sphere.sdk.states.commands.updateactions.RemoveRoles} and {@link io.sphere.sdk.states.commands.updateactions.SetRoles} </li>
<li class=new-in-release>{@link Reference#ofResourceTypeIdAndId(String, String)} and others</li>
<li class=new-in-release>key on products and product variants: {@link Product#getKey()}, {@link ProductProjection#getKey()}, {@link ProductVariant#getKey()}, {@link io.sphere.sdk.products.commands.ProductDeleteCommand#ofKey(String, Long)}, {@link io.sphere.sdk.products.commands.ProductUpdateCommand#ofKey(String, Long, List)}</li>
<li class=new-in-release>{@link io.sphere.sdk.products.commands.updateactions.AddVariant#withImages(List)}, {@link io.sphere.sdk.products.commands.updateactions.AddVariant#withKey(String)}, {@link io.sphere.sdk.products.commands.updateactions.AddVariant#withSku(String)}, {@link io.sphere.sdk.products.commands.updateactions.SetKey}, {@link io.sphere.sdk.products.commands.updateactions.SetProductVariantKey}, {@link ProductByKeyGet}, {@link ProductProjectionByKeyGet}</li>
<li class=new-in-release>{@link io.sphere.sdk.orders.errors.OutOfStockError}</li>
<li class=new-in-release>{@link SetShippingMethod#ofId(String)} which is easier to use in a form than {@link SetShippingMethod#of(Referenceable)} </li>
<li class=new-in-release>product update actions like {@link io.sphere.sdk.products.commands.updateactions.RemoveImage} now support to address a {@link ProductVariant} by using the SKU with {@link io.sphere.sdk.products.commands.updateactions.RemoveImage#ofSku(String, String)} </li>
<li class=new-in-release>type update actions: {@link io.sphere.sdk.types.commands.updateactions.ChangeEnumValueOrder}, {@link io.sphere.sdk.types.commands.updateactions.ChangeFieldDefinitionOrder} and {@link io.sphere.sdk.types.commands.updateactions.ChangeLocalizedEnumValueOrder}</li>
<li class=new-in-release>{@link io.sphere.sdk.customers.Customer#findAddressById(String)} </li>
<li class=new-in-release>a simple generator for customer and order numbers by using {@link CustomObject}s as storage: {@link io.sphere.sdk.sequencegenerators.CustomObjectBigIntegerNumberGenerator}</li>
<li class=new-in-release>{@link io.sphere.sdk.inventory.messages.InventoryEntryDeletedMessage}</li>
<li class=new-in-release>custom fields for {@link io.sphere.sdk.inventory.InventoryEntry}s</li>
<li class=new-in-release>{@link io.sphere.sdk.products.commands.updateactions.MoveImageToPosition}</li>
<li class=new-in-release>{@link PaymentTransactionStateChangedMessage#getTransactionId()} </li>
<li class=new-in-release>{@link CartShippingInfo#getDiscountedPrice()} and the {@link ShippingInfoExpansionModel#discountedPrice()} to receive the value of discounts for shipping costs and maybe expand in the {@link Cart} the {@link io.sphere.sdk.cartdiscounts.CartDiscount} objects.</li>
<li class=fixed-in-release>{@link Category}s {@link Category#toString()} is now using reflection so former missing fields like "metaTitle" will be included in the output.</li>
<li class=fixed-in-release>{@link io.sphere.sdk.jsonnodes.queries.JsonNodeQuery#of(String)} accepts now also query parameters</li>
<li class=fixed-in-release>{@link ProductDraftBuilder#of(ProductDraft)} is not leaky anymore, in previous versions not all fields were copied</li>
</ul>
<h3 class=released-version id="v1_3_0">1.3.0 (22.07.2016)</h3>
<ul>
<li class=new-in-release>added {@link Channel#getAddress()} and {@link io.sphere.sdk.channels.commands.updateactions.SetAddress}</li>
<li class=new-in-release>added field "locale" to {@link Order}, {@link Cart} and {@link io.sphere.sdk.customers.Customer}</li>
<li class=new-in-release>added {@link Address#getFax()} </li>
<li class=new-in-release>added {@link PaymentTransactionStateChangedMessage#getTransactionId()} </li>
</ul>
<h3 class=released-version id="v1_2_0">1.2.0 (18.07.2016)</h3>
<p>Thanks to Cristian for his contributions!</p>
<ul>
<li class=new-in-release>{@link CategoryDraft} and {@link io.sphere.sdk.categories.CategoryDraftBuilder}
contain the fields "metaTitle", "metaDescription" and "metaKeywords".</li>
<li class=new-in-release>added {@link Project#getMessages()}</li>
<li class=new-in-release>added new update actions for {@link Order}:
{@link io.sphere.sdk.orders.commands.updateactions.SetCustomerEmail},
{@link io.sphere.sdk.orders.commands.updateactions.SetShippingAddress} and
{@link io.sphere.sdk.orders.commands.updateactions.SetBillingAddress}</li>
<li class=new-in-release>added new messages for {@link Order}: {@link io.sphere.sdk.orders.messages.OrderCustomerEmailSetMessage},
{@link io.sphere.sdk.orders.messages.OrderShippingAddressSetMessage} and
{@link io.sphere.sdk.orders.messages.OrderBillingAddressSetMessage}</li>
</ul>
<h3 class=released-version id="v1_1_0">1.1.0 (11.07.2016)</h3>
<p>Thanks to Sarah and Martin for their contributions!</p>
<ul>
<li class=new-in-release>support {@link io.sphere.sdk.carts.AnonymousCartSignInMode}</li>
<li class=new-in-release>added {@link PriceSelection} for
{@link ProductProjectionQuery#withPriceSelection(PriceSelection)},
{@link ProductByIdGet#withPriceSelection(PriceSelection)},
{@link ProductQuery#withPriceSelection(PriceSelection)},
{@link ProductProjectionByIdGet#withPriceSelection(PriceSelection)},
{@link io.sphere.sdk.products.commands.ProductUpdateCommand#withPriceSelection(PriceSelection)} </li>
<li class=new-in-release>added anonymousId to {@link Order#getAnonymousId()},
{@link Cart#getAnonymousId()}, {@link CartDraft#getAnonymousId()},
{@link io.sphere.sdk.customers.commands.CustomerSignInCommand#withAnonymousId(String)} </li>
<li class=new-in-release>added {@link ProductProjectionSearch#bySlug(Locale, String)},
{@link ProductProjectionSearch#bySku(String)}, {@link ProductProjectionSearch#bySku(List)} </li>
<li class=new-in-release>added {@link io.sphere.sdk.client.JavaAndJsonSphereRequest} which returns the Java object and the JSON from a {@link SphereRequest}</li>
<li class=new-in-release>added {@link io.sphere.sdk.client.JavaAndHttpResponseSphereRequest} which returns the Java object and the HTTP response from a {@link SphereRequest} which can be useful to retrieve HTTP headers</li>
<li class=new-in-release>added {@link io.sphere.sdk.carts.commands.updateactions.Recalculate#withUpdateProductData(Boolean)} </li>
<li class=new-in-release>added {@link ProductProjectionSortSearchModel#id()} to sort search results by the product ID</li>
<li class=new-in-release>added {@link io.sphere.sdk.productdiscounts.ProductDiscountDraftBuilder}</li>
<li class=new-in-release>added {@link LocalizedString#get(String)} </li>
<li class=change-in-release>{@link SphereJsonUtils#newObjectMapper()} does not use anymore "SerializationFeature.FAIL_ON_EMPTY_BEANS"</li>
</ul>