Skip to content

Releases: EasyPost/easypost-csharp

v4.0.2

01 Nov 17:03
8db53e7
Compare
Choose a tag to compare
  • Fix bug where the temporary internal API key switch when adding a credit card to a referral user was not reverted after the request.
    • After adding a credit card to a referral user, the existing Client would be misconfigured for following requests.

v4.0.1

24 Oct 19:44
6b64d76
Compare
Choose a tag to compare
  • myInsurance.Refresh() function HTTP method fixed from PATCH to GET
    • This function has been marked as obsolete and will be removed in a future release
  • Fix return type of order.Buy() when passing in a rate. Function will now return the updated order.
  • Fix bug where request time limits were not being copied to a cloned Client.
  • Fix bug where hashcode of any EasyPostObject or subtype was not consistent.
    • Hashcode and equality now consider properties of the object, including Client. Different properties and/or different Clients will result in different hashcodes and objects will not be considered equal.
  • Fix bug where the wrong SmartrateAccuracy would be chosen
    • Percentile75 might accidentally have been chosen rather than Percentile85 due to a bug in the SmartrateAccuracy enum ID.
  • Fix bug where some embedded elements (e.g. customs items) were not being created if included during a larger creation request (e.g. customs info create).
  • Prevent users from attempting to buy a shipment with a null rate, avoiding a NullReferenceException.

v4.0.0

12 Oct 20:37
74120e5
Compare
Choose a tag to compare

Breaking Changes & New Features

  • Library is now thread-safe
    • Initialize a Client object with an API key
    • Static methods (i.e. create, retrieve, retrieve all of a resource) exist in services, accessed via property of the client (e.g. myClient.Address.Create())
    • Instance methods (i.e. update, delete) accessed on instance of a resource (i.e. myShipment.Update())
  • All properties are now title-cased rather than snake-cased to match standard .NET naming conventions
    • e.g. myShipment.id is now myShipment.Id, myAddress.federal_tax_id is now myAddress.FederalTaxId, myTrackerCollection.has_more is now myTrackerCollection.HasMore
    • Some properties have been renamed to avoid naming conflicts:
      • Rate.rate is now Rate.Price
      • Message.message is now Message.Text
  • All properties are now nullable
    • Almost all properties will be assigned a value during JSON deserialization. This is mostly to address compiler warnings
    • Users can proceed with the assumption that any given property will not be null
  • Consistent exception handling
    • All exceptions inherit from EasyPostError
    • API-related and HTTP-related exceptions will throw an ApiError or inherited-type exception
    • API exception types can be retrieved by HTTP status code via the EasyPost.Exceptions.Constants class (i.e. to anticipate what error will be thrown for a 404, etc.)
    • Common exception messages and templates can be found in the EasyPost.Exceptions.Constants class (i.e. for log parsing)
  • Source code files have been organized
    • Most EasyPost-related objects (i.e. Shipment, Address, Tracker, etc.) are now in the EasyPost.Model.API namespace
  • Dependencies updated to latest versions, including RestSharp v108

Misc

  • Under the hood improvements:
    • Underlying Request-Client-ClientConfiguration relationship has been re-architected to allow for thread safety
    • Process of generating an API request has been standardized and simplified
    • Improved accessibility levels of internal functions, to prevent accidental use by end users
    • Files have been organized into a more logical structure
    • Methods and properties have been organized (e.g. methods ordered by CRUD, properties ordered alphabetically)
  • Improved API error parsing
    • API error message may be an array rather than a string. Arrays will be concatenated (by comma) and returned as a string.
  • Capture 1xx and 3xx HTTP status codes as errors
    • Any known 3xx status code from the EasyPost API will throw a RedirectError exception
    • Any unknown 3xx status code will throw a UnexpectedHttpError exception
    • Any 1xx status code (known or unknown) will throw a UnexpectedHttpError exception

v4.0.0-rc1

26 Sep 22:33
c659c4c
Compare
Choose a tag to compare
v4.0.0-rc1 Pre-release
Pre-release

Breaking Changes & New Features

  • Library is now thread-safe
    • Initialize a Client object with an API key
    • Static methods (i.e. create, retrieve, retrieve all of a resource) exist in services, accessed via property of the client (e.g. myClient.Address.Create())
    • Instance methods (i.e. update, delete) accessed on instance of a resource (i.e. myShipment.Update())
  • All properties are now title-cased rather than snake-cased to match standard .NET naming conventions
    • e.g. myShipment.id is now myShipment.Id, myAddress.federal_tax_id is now myAddress.FederalTaxId, myTrackerCollection.has_more is now myTrackerCollection.HasMore
    • Some properties have been renamed to avoid naming conflicts:
      • Rate.rate is now Rate.Price
      • Message.message is now Message.Text
  • All properties are now nullable
    • Almost all properties will be assigned a value during JSON deserialization. This is mostly to address compiler warnings
    • Users can proceed with the assumption that any given property will not be null
  • Consistent exception handling
    • All exceptions inherit from EasyPostError
    • API-related and HTTP-related exceptions will throw an ApiError or inherited-type exception
    • API exception types can be retrieved by HTTP status code via the EasyPost.Exceptions.Constants class (i.e. to anticipate what error will be thrown for a 404, etc.)
    • Common exception messages and templates can be found in the EasyPost.Exceptions.Constants class (i.e. for log parsing)
  • Dependencies updated to latest versions, including RestSharp v108

Misc

  • Under the hood improvements:
    • Underlying Request-Client-ClientConfiguration relationship has been re-architected to allow for thread safety
    • Process of generating an API request has been standardized and simplified
    • Improved accessibility levels of internal functions, to prevent accidental use by end users
    • Files have been organized into a more logical structure
    • Methods and properties have been organized (e.g. methods ordered by CRUD, properties ordered alphabetically)

v3.6.1

22 Sep 15:34
73729ba
Compare
Choose a tag to compare
  • Adds missing dropoff_max_datetime and pickup_max_datetime Shipment options

v3.6.0

22 Sep 00:32
7b64aac
Compare
Choose a tag to compare
  • Adds end_shipper_id shipment option
  • Adds support to pass an EndShipper ID when buying a shipment
  • Add Partner White Label support:
    • Create a referral customer
    • Update a referral customer's email address
    • List all referral customers
    • Add a credit card to a referral customer's account

v3.5.0

25 Aug 19:33
5b03c57
Compare
Choose a tag to compare
  • Adds ValidateWebhook function
  • Adds duty_payment shipment option
  • Moves EndShipper out of beta to the general namespace

v3.4.0

02 Aug 19:36
a3cfb63
Compare
Choose a tag to compare
  • Adds Carbon Offset support
    • Adds the ability to create a shipment with carbon offset
    • Adds the ability to buy a shipment with carbon offset
    • Adds the ability to one-call-buy a shipment with carbon offset
    • Adds the ability to re-rate a shipment with carbon offset
  • Removes the unusable carrier param from the verify function on an Address

v3.3.0

18 Jul 20:23
d23f78d
Compare
Choose a tag to compare
  • Adds ability to generate shipment forms via GenerateForm function

v3.2.0

11 Jul 22:18
6a1345a
Compare
Choose a tag to compare
  • Adds DeletePaymentMethod, FundWallet, and RetrievePaymentMethods functions
  • Adds billing_type attribute in CarrierAccount and Rate classes
  • Adds support for webhook secrets
  • Collect OS details in User-Agent header
  • Update functions now use patch instead of put under the hood to better match the API behavior and documentation. Behavior of these functions should remain the same