Releases: EasyPost/easypost-csharp
Releases · EasyPost/easypost-csharp
v4.0.2
- 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
myInsurance.Refresh()
function HTTP method fixed fromPATCH
toGET
- 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 chosenPercentile75
might accidentally have been chosen rather thanPercentile85
due to a bug in theSmartrateAccuracy
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 aNullReferenceException
.
v4.0.0
Breaking Changes & New Features
- Library is now thread-safe
- Initialize a
Client
object with an API key - Static methods (i.e.
create
,retrieve
, retrieveall
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()
)
- Initialize a
- All properties are now title-cased rather than snake-cased to match standard .NET naming conventions
- e.g.
myShipment.id
is nowmyShipment.Id
,myAddress.federal_tax_id
is nowmyAddress.FederalTaxId
,myTrackerCollection.has_more
is nowmyTrackerCollection.HasMore
- Some properties have been renamed to avoid naming conflicts:
Rate.rate
is nowRate.Price
Message.message
is nowMessage.Text
- e.g.
- 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)
- All exceptions inherit from
- Source code files have been organized
- Most EasyPost-related objects (i.e.
Shipment
,Address
,Tracker
, etc.) are now in theEasyPost.Model.API
namespace
- Most EasyPost-related objects (i.e.
- 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)
- Underlying
- 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
- Any known 3xx status code from the EasyPost API will throw a
v4.0.0-rc1
Breaking Changes & New Features
- Library is now thread-safe
- Initialize a
Client
object with an API key - Static methods (i.e.
create
,retrieve
, retrieveall
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()
)
- Initialize a
- All properties are now title-cased rather than snake-cased to match standard .NET naming conventions
- e.g.
myShipment.id
is nowmyShipment.Id
,myAddress.federal_tax_id
is nowmyAddress.FederalTaxId
,myTrackerCollection.has_more
is nowmyTrackerCollection.HasMore
- Some properties have been renamed to avoid naming conflicts:
Rate.rate
is nowRate.Price
Message.message
is nowMessage.Text
- e.g.
- 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)
- All exceptions inherit from
- 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)
- Underlying
v3.6.1
- Adds missing
dropoff_max_datetime
andpickup_max_datetime
Shipment options
v3.6.0
- 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
- Adds
ValidateWebhook
function - Adds
duty_payment
shipment option - Moves
EndShipper
out of beta to the general namespace
v3.4.0
- 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 theverify
function on an Address
v3.3.0
- Adds ability to generate shipment forms via
GenerateForm
function
v3.2.0
- Adds
DeletePaymentMethod
,FundWallet
, andRetrievePaymentMethods
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 ofput
under the hood to better match the API behavior and documentation. Behavior of these functions should remain the same