diff --git a/EasyPost/Models/API/Address.cs b/EasyPost/Models/API/Address.cs index d476dfcac..6456d4089 100644 --- a/EasyPost/Models/API/Address.cs +++ b/EasyPost/Models/API/Address.cs @@ -10,66 +10,154 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost address. + /// public class Address : EasyPostObject, IAddressParameter { #region JSON Properties + /// + /// The specific designation for the address (only relevant if the address is a carrier facility). + /// [JsonProperty("carrier_facility")] public string? CarrierFacility { get; set; } + + /// + /// The city the address is located in. + /// [JsonProperty("city")] public string? City { get; set; } + + /// + /// The name of the company. + /// [JsonProperty("company")] public string? Company { get; set; } + + /// + /// The ISO 3166 code of the country the address is located in. + /// [JsonProperty("country")] public string? Country { get; set; } + + /// + /// The email address of the person or organization. + /// [JsonProperty("email")] public string? Email { get; set; } + + /// + /// Potential error encountered while processing the address. + /// [JsonProperty("error")] public string? Error { get; set; } + + /// + /// The federal tax ID of the person or organization. + /// [JsonProperty("federal_tax_id")] public string? FederalTaxId { get; set; } + + /// + /// A human-readable message for any errors that occurred during the address's life cycle. + /// [JsonProperty("message")] public string? Message { get; set; } + + /// + /// The name of the person or organization. + /// [JsonProperty("name")] public string? Name { get; set; } + + /// + /// The phone number of the person or organization. + /// [JsonProperty("phone")] public string? Phone { get; set; } + + /// + /// Whether the address is a residential address. + /// [JsonProperty("residential")] public bool? Residential { get; set; } + + /// + /// The state the address is located in. + /// [JsonProperty("state")] public string? State { get; set; } + /// + /// The state tax ID of the person or organization. + /// [JsonProperty("state_tax_id")] public string? StateTaxId { get; set; } + + /// + /// The first line of the street address. + /// [JsonProperty("street1")] public string? Street1 { get; set; } + + /// + /// The second line of the street address. + /// [JsonProperty("street2")] public string? Street2 { get; set; } + + /// + /// The result of any verifications. + /// [JsonProperty("verifications")] public Verifications? Verifications { get; set; } + + /// + /// The zip code the address is located in. + /// [JsonProperty("zip")] public string? Zip { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Address() { } } + /// + /// Class representing a collection of EasyPost es. + /// public class AddressCollection : PaginatedCollection
{ #region JSON Properties + /// + /// The es in the collection. + /// [JsonProperty("addresses")] public List
? Addresses { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal AddressCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable
entries, int? pageSize = null) { BetaFeatures.Parameters.Addresses.All parameters = Filters != null ? (BetaFeatures.Parameters.Addresses.All)Filters : new BetaFeatures.Parameters.Addresses.All(); diff --git a/EasyPost/Models/API/ApiKey.cs b/EasyPost/Models/API/ApiKey.cs index 69f570bf3..3b14b920d 100644 --- a/EasyPost/Models/API/ApiKey.cs +++ b/EasyPost/Models/API/ApiKey.cs @@ -4,32 +4,53 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost API key. + /// public class ApiKey : EasyPostObject { #region JSON Properties + /// + /// The actual key value to use for authentication. + /// [JsonProperty("key")] public string? Key { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal ApiKey() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class ApiKeyCollection : EasyPostObject { #region JSON Properties + /// + /// A list of all child user's API keys. + /// [JsonProperty("children")] public List? Children { get; set; } + /// + /// A lis of all API keys active for the current user's account. + /// [JsonProperty("keys")] public List? Keys { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal ApiKeyCollection() { } diff --git a/EasyPost/Models/API/Batch.cs b/EasyPost/Models/API/Batch.cs index 8623c2bba..2874ca369 100644 --- a/EasyPost/Models/API/Batch.cs +++ b/EasyPost/Models/API/Batch.cs @@ -10,49 +10,122 @@ namespace EasyPost.Models.API { - public class Batch : EasyPostObject, IBatchParameter + /// + /// Class representing an EasyPost batch. + /// + public class Batch : EasyPostObject { #region JSON Properties + /// + /// Potential error encountered while processing the batch. + /// [JsonProperty("error")] public string? Error { get; set; } + + /// + /// The URL of the label image. + /// [JsonProperty("label_url")] public string? LabelUrl { get; set; } + + /// + /// A human-readable message for any errors that occurred during the batch's life cycle. + /// [JsonProperty("message")] public string? Message { get; set; } + + /// + /// The number of shipments in the batch. + /// [JsonProperty("num_shipments")] public int? NumShipments { get; set; } + + /// + /// An optional field that may be used in place of ID in some API endpoints. + /// [JsonProperty("reference")] public string? Reference { get; set; } + + /// + /// The associated with the batch. + /// [JsonProperty("scan_form")] public ScanForm? ScanForm { get; set; } + + /// + /// The s associated with the batch. + /// [JsonProperty("shipments")] public List? Shipments { get; set; } + + /// + /// The current state of the batch. + /// Possible values include: "creating", "creation_failed", "created", "purchasing", "purchase_failed", "purchased", "label_generating" and "label_generated". + /// [JsonProperty("state")] public string? State { get; set; } + + /// + /// A dictionary of statuses and their counts. + /// Valid statuses are: + /// + /// + /// "postage_purchased" + /// + /// + /// "postage_purchase_failed" + /// + /// + /// "queued_for_purchase" + /// + /// + /// "creation_failed" + /// + /// + /// [JsonProperty("status")] public Dictionary? Status { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Batch() { } } + /// + /// Class representing a collection of EasyPost es. + /// public class BatchCollection : PaginatedCollection { #region JSON Properties + /// + /// The es in the collection. + /// [JsonProperty("batches")] public List? Batches { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal BatchCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Shipments.All parameters = Filters != null ? (BetaFeatures.Parameters.Shipments.All)Filters : new BetaFeatures.Parameters.Shipments.All(); diff --git a/EasyPost/Models/API/BatchShipment.cs b/EasyPost/Models/API/BatchShipment.cs index dbb44af1a..e30c0bdb7 100644 --- a/EasyPost/Models/API/BatchShipment.cs +++ b/EasyPost/Models/API/BatchShipment.cs @@ -3,19 +3,51 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost batch shipment. + /// public class BatchShipment : EasyPostObject { #region JSON Properties + /// + /// A human-readable message for any errors that occurred during the batch shipment's life cycle. + /// [JsonProperty("batch_message")] public string? BatchMessage { get; set; } + + /// + /// The current state of the batch shipment. + /// Valid statuses are: + /// + /// + /// "postage_purchased" + /// + /// + /// "postage_purchase_failed" + /// + /// + /// "queued_for_purchase" + /// + /// + /// "creation_failed" + /// + /// + /// [JsonProperty("batch_status")] public string? BatchStatus { get; set; } + + /// + /// The tracking code associated with the batch shipment. + /// [JsonProperty("tracking_code")] public string? TrackingCode { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal BatchShipment() { } diff --git a/EasyPost/Models/API/Beta/CarrierMetadata.cs b/EasyPost/Models/API/Beta/CarrierMetadata.cs index 65eb2a60d..3d1c9d751 100644 --- a/EasyPost/Models/API/Beta/CarrierMetadata.cs +++ b/EasyPost/Models/API/Beta/CarrierMetadata.cs @@ -5,6 +5,9 @@ namespace EasyPost.Models.API.Beta { #pragma warning disable CA1724 // Naming conflicts with Parameters.Beta.CarrierMetadata + /// + /// Class representing an EasyPost carrier metadata summary. + /// public class CarrierMetadata { #region JSON Properties @@ -16,6 +19,9 @@ public class CarrierMetadata } #pragma warning restore CA1724 // Naming conflicts with Parameters.Beta.CarrierMetadata + /// + /// Class representing a carrier in a EasyPost carrier metadata summary. + /// public class Carrier { #region JSON Properties @@ -41,6 +47,9 @@ public class Carrier #endregion } + /// + /// Class representing a predefined package in a EasyPost carrier metadata summary. + /// public class PredefinedPackage { #region JSON Properties @@ -66,6 +75,9 @@ public class PredefinedPackage #endregion } + /// + /// Class representing a service level in a EasyPost carrier metadata summary. + /// public class ServiceLevel { #region JSON Properties @@ -91,6 +103,9 @@ public class ServiceLevel #endregion } + /// + /// Class representing a shipment option in a EasyPost carrier metadata summary. + /// public class ShipmentOption { #region JSON Properties @@ -116,6 +131,9 @@ public class ShipmentOption #endregion } + /// + /// Class representing a supported feature in a EasyPost carrier metadata summary. + /// public class SupportedFeature { #region JSON Properties diff --git a/EasyPost/Models/API/Beta/PaymentRefund.cs b/EasyPost/Models/API/Beta/PaymentRefund.cs index c02a6cf3d..6c1406309 100644 --- a/EasyPost/Models/API/Beta/PaymentRefund.cs +++ b/EasyPost/Models/API/Beta/PaymentRefund.cs @@ -4,25 +4,49 @@ namespace EasyPost.Models.API.Beta { + /// + /// Class representing an EasyPost payment refund. + /// public class PaymentRefund : EasyPostObject { #region JSON Properties + /// + /// The amount of the refund, in the associated currency and units (e.g. cents). + /// [JsonProperty("refunded_amount")] public int? RefundedAmount { get; set; } + /// + /// The currency of the refund. Defaults to USD. + /// // ReSharper disable once StringLiteralTypo [JsonProperty("refunded_amount_currencys")] public string? RefundedAmountCurrencies { get; set; } + + /// + /// The IDs of the logs of the payments being refunded. + /// [JsonProperty("refunded_payment_logs")] public List? RefundedPaymentLogIds { get; set; } + + /// + /// The ID of the new payment log created for the refund. + /// [JsonProperty("payment_log_id")] public string? PaymentLogId { get; set; } + + /// + /// A list of s encountered while processing the refund. + /// [JsonProperty("errors")] public List? Errors { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal PaymentRefund() { } diff --git a/EasyPost/Models/API/Beta/StatelessRate.cs b/EasyPost/Models/API/Beta/StatelessRate.cs index 16a7a69d6..c88c40ad1 100644 --- a/EasyPost/Models/API/Beta/StatelessRate.cs +++ b/EasyPost/Models/API/Beta/StatelessRate.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API.Beta { + /// + /// Class representing an EasyPost stateless rate. + /// public class StatelessRate : EphemeralEasyPostObject { #region JSON Properties diff --git a/EasyPost/Models/API/Brand.cs b/EasyPost/Models/API/Brand.cs index 3249f5b19..003d53e85 100644 --- a/EasyPost/Models/API/Brand.cs +++ b/EasyPost/Models/API/Brand.cs @@ -3,31 +3,74 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost brand. + /// public class Brand : EasyPostObject { #region JSON Properties + /// + /// A base64-encoded string for a PNG, JPEG, GIF or SVG image. + /// [JsonProperty("ad")] public string? Ad { get; set; } + + /// + /// A URL to link to when the ad is clicked. + /// Maximum length is 255 characters. + /// [JsonProperty("ad_href")] public string? AdHref { get; set; } + + /// + /// A hex code for the background color of the brand. + /// [JsonProperty("background_color")] public string? BackgroundColor { get; set; } + + /// + /// A hex code for the color of the brand. + /// [JsonProperty("color")] public string? Color { get; set; } + + /// + /// A base64-encoded string for a PNG, JPEG, GIF or SVG image. + /// [JsonProperty("logo")] public string? Logo { get; set; } + + /// + /// A URL to link to when the logo is clicked. + /// [JsonProperty("logo_href")] public string? LogoHref { get; set; } + + /// + /// The name of the brand associated with the . + /// [JsonProperty("name")] public string? Name { get; set; } + + /// + /// A name to store this brand preset as. + /// Either "theme1" or "theme2". + /// [JsonProperty("theme")] public string? Theme { get; set; } + + /// + /// The ID of the associated with this brand. + /// [JsonProperty("user_id")] public string? UserId { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Brand() { } diff --git a/EasyPost/Models/API/CarbonOffset.cs b/EasyPost/Models/API/CarbonOffset.cs index 175bab354..3100a4f34 100644 --- a/EasyPost/Models/API/CarbonOffset.cs +++ b/EasyPost/Models/API/CarbonOffset.cs @@ -3,19 +3,37 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost carbon offset object. + /// public class CarbonOffset : EasyPostObject { #region JSON Properties + /// + /// The currency of the price. + /// Currently only "USD" is supported. + /// [JsonProperty("currency")] public string? Currency { get; set; } + + /// + /// The estimated amount of carbon grams emitted by the shipment. + /// [JsonProperty("grams")] public int? Grams { get; set; } + + /// + /// The price to offset the . + /// [JsonProperty("price")] public string? Price { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal CarbonOffset() { } diff --git a/EasyPost/Models/API/CarrierAccount.cs b/EasyPost/Models/API/CarrierAccount.cs index c5f29a9b4..0177d7423 100644 --- a/EasyPost/Models/API/CarrierAccount.cs +++ b/EasyPost/Models/API/CarrierAccount.cs @@ -9,28 +9,73 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost carrier account. + /// public class CarrierAccount : EasyPostObject, ICarrierAccountParameter { #region JSON Properties + /// + /// The type of billing used by the carrier account. + /// [JsonProperty("billing_type")] public string? BillingType { get; set; } + + /// + /// Only the reference and description are possible to update if set to true. + /// + [JsonProperty("clone")] + public bool? Clone { get; set; } + + /// + /// The raw credential pairs for client library consumption. + /// [JsonProperty("credentials")] public Dictionary? Credentials { get; set; } + + /// + /// An optional, human-readable description of the carrier account. + /// [JsonProperty("description")] public string? Description { get; set; } + + /// + /// Expanded credential fields. + /// + [JsonProperty("fields")] + public CarrierFields? Fields { get; set; } + + /// + /// The name used when displaying a readable value for the type of the carrier account. + /// [JsonProperty("readable")] public string? Readable { get; set; } + + /// + /// An optional field that may be used in place of ID in some API endpoints. + /// [JsonProperty("reference")] public string? Reference { get; set; } + + /// + /// The raw test credential pairs for client library consumption. + /// [JsonProperty("test_credentials")] [SuppressMessage("ReSharper", "InconsistentNaming", Justification = "TestCredentials is the correct name for this property")] public Dictionary? TestCredentials { get; set; } + + /// + /// The name of the carrier account type. + /// [JsonProperty("type")] public string? Type { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal CarrierAccount() { } diff --git a/EasyPost/Models/API/CarrierDetail.cs b/EasyPost/Models/API/CarrierDetail.cs index 24f972cc4..8efa376c0 100644 --- a/EasyPost/Models/API/CarrierDetail.cs +++ b/EasyPost/Models/API/CarrierDetail.cs @@ -4,31 +4,84 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost 's carrier details. + /// public class CarrierDetail : EasyPostObject { #region JSON Properties + /// + /// The alternate identifier for the package, as provided by the carrier. + /// [JsonProperty("alternate_identifier")] public string? AlternateIdentifier { get; set; } + + /// + /// The type of container the associated was shipped in. + /// [JsonProperty("container_type")] public string? ContainerType { get; set; } + + /// + /// The location to which the package is being sent, represented as a string for presentation purposes. + /// [JsonProperty("destination_location")] public string? DestinationLocation { get; set; } + + /// + /// The location to which the package is being sent. + /// + [JsonProperty("destination_tracking_location")] + public TrackingLocation? DestinationTrackingLocation { get; set; } + + /// + /// The estimated delivery date, as provided by the carrier, in the local time zone. + /// [JsonProperty("est_delivery_date_local")] public string? EstDeliveryDateLocal { get; set; } + + /// + /// The estimated delivery time, as provided by the carrier, in the local time zone. + /// [JsonProperty("est_delivery_time_local")] public string? EstDeliveryTimeLocal { get; set; } + + /// + /// The date and time the carrier guarantees the package to be delivered by. + /// [JsonProperty("guaranteed_delivery_date")] public DateTime? GuaranteedDeliveryDate { get; set; } + + /// + /// The date and time of the first attempt by the carrier to deliver the package. + /// [JsonProperty("initial_delivery_attempt")] public DateTime? InitialDeliveryAttempt { get; set; } + + /// + /// The location from which package originated, represented as a string for presentation purposes. + /// [JsonProperty("origin_location")] public string? OriginLocation { get; set; } + + /// + /// The location from which package originated. + /// + [JsonProperty("origin_tracking_location")] + public TrackingLocation? OriginTrackingLocation { get; set; } + + /// + /// The service level the associated was shipped with. + /// [JsonProperty("service")] public string? Service { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal CarrierDetail() { } diff --git a/EasyPost/Models/API/CarrierFields.cs b/EasyPost/Models/API/CarrierFields.cs new file mode 100644 index 000000000..1a473c796 --- /dev/null +++ b/EasyPost/Models/API/CarrierFields.cs @@ -0,0 +1,80 @@ +using EasyPost._base; +using Newtonsoft.Json; + +namespace EasyPost.Models.API +{ + /// + /// Class representing an EasyPost 's credentials. + /// + public class CarrierFields : EasyPostObject + { + #region JSON Properties + + /// + /// The credentials used in the production environment. + /// + [JsonProperty("credentials")] + public CarrierField? Credentials { get; set; } + + /// + /// The credentials used in the test environment. + /// + [JsonProperty("test_credentials")] +#pragma warning disable SA1515 + // ReSharper disable once InconsistentNaming +#pragma warning restore SA1515 + public CarrierField? TestCredentials { get; set; } + + /// + /// For USPS, this designates that no credentials are required. + /// + [JsonProperty("auto_link")] + public bool? AutoLink { get; set; } + + /// + /// When true, a separate authentication process will be required through the UI to link this account type. + /// + [JsonProperty("custom_workflow")] + public bool? CustomWorkflow { get; set; } + + #endregion + } + + /// + /// Class representing a single EasyPost 's credentials entry details. + /// + public class CarrierField : EasyPostObject + { + #region JSON Properties + + /// + /// The key of the field. + /// + [JsonProperty("key")] + public string? Key { get; set; } + + /// + /// The visibility value is used to control form field types. + /// See for more details. + /// + [JsonProperty("visibility")] + public string? Visibility { get; set; } + + /// + /// The label value is used in form rendering to display a more precise name for the field. + /// Possible values include: "visible", "checkbox", "fake", "password" and "masked". + /// + [JsonProperty("label")] + public string? Label { get; set; } + + /// + /// The value of the field. + /// Checkbox fields use "0" and "1" as false and true, respectively. + /// All other field types present plaintext, partially-masked or fully-masked credential data for reference. + /// + [JsonProperty("value")] + public string? Value { get; set; } + + #endregion + } +} diff --git a/EasyPost/Models/API/CarrierType.cs b/EasyPost/Models/API/CarrierType.cs index b7b6405a8..4a154fbe0 100644 --- a/EasyPost/Models/API/CarrierType.cs +++ b/EasyPost/Models/API/CarrierType.cs @@ -4,21 +4,57 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost carrier type. + /// public class CarrierType : EasyPostObject { #region JSON Properties + /// + /// Expanded credential fields. + /// Contains at least one of the following keys: + /// + /// + /// "auto_link" + /// + /// + /// "credentials" + /// + /// + /// "test_credentials" + /// + /// + /// "custom_workflow" + /// + /// + /// [JsonProperty("fields")] - public Dictionary? Fields { get; set; } + public Dictionary? Fields { get; set; } // TODO: This should be a CarrierFields object. + + /// + /// The logo for the carrier. + /// [JsonProperty("logo")] public string? Logo { get; set; } + + /// + /// The human-readable name of the carrier. + /// [JsonProperty("readable")] public string? Readable { get; set; } + + /// + /// The type of the carrier. + /// [JsonProperty("type")] public string? Type { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal CarrierType() { } diff --git a/EasyPost/Models/API/CustomsInfo.cs b/EasyPost/Models/API/CustomsInfo.cs index 7ee19aee4..7e0a6f53b 100644 --- a/EasyPost/Models/API/CustomsInfo.cs +++ b/EasyPost/Models/API/CustomsInfo.cs @@ -6,33 +6,144 @@ namespace EasyPost.Models.API { #pragma warning disable CA1724 // Naming conflicts with Parameters.CustomInfo + /// + /// Class representing an EasyPost customs info object. + /// public class CustomsInfo : EasyPostObject, ICustomsInfoParameter { #region JSON Properties + /// + /// A human-readable description of the contents of the package. + /// Required for certain carriers, and always required if is "other". + /// Maximum length is 255 characters. + /// [JsonProperty("contents_explanation")] public string? ContentsExplanation { get; set; } + + /// + /// The type of contents in the package. + /// May be one of the following: + /// + /// + /// "documents" + /// + /// + /// "gift" + /// + /// + /// "merchandise" + /// + /// + /// "returned_goods" + /// + /// + /// "sample" + /// + /// + /// "dangerous_goods" + /// + /// + /// "humanitarian_donation" + /// + /// + /// "other" + /// + /// + /// [JsonProperty("contents_type")] public string? ContentsType { get; set; } + + /// + /// Whether to electronically certify the information provided. + /// [JsonProperty("customs_certify")] - public string? CustomsCertify { get; set; } + public bool? CustomsCertify { get; set; } + + /// + /// A list of the items being shipped. + /// [JsonProperty("customs_items")] public List? CustomsItems { get; set; } + + /// + /// The name of the person signing the customs form. + /// Required if is true. + /// [JsonProperty("customs_signer")] public string? CustomsSigner { get; set; } + + /// + /// A customs declaration message, available for eligible carriers. + /// [JsonProperty("declaration")] public string? Declaration { get; set; } + + /// + /// Whether the customs form is marked as "EEL" or "PFC". + /// Valid values are: + /// + /// + /// "EEL" + /// + /// + /// "PFC" + /// + /// + /// See https://www.easypost.com/customs-guide for more information. + /// [JsonProperty("eel_pfc")] public string? EelPfc { get; set; } + + /// + /// What to do if the package is undeliverable. + /// Valid values are: + /// + /// + /// "abandon" + /// + /// + /// "return" + /// + /// + /// Default is "return". + /// [JsonProperty("non_delivery_option")] public string? NonDeliveryOption { get; set; } + + /// + /// Explanation for the restriction type. + /// Required if is not "none". + /// [JsonProperty("restriction_comments")] public string? RestrictionComments { get; set; } + + /// + /// The type of restriction placed on the package. + /// Valid values are: + /// + /// + /// "none" + /// + /// + /// "quarantine" + /// + /// + /// "sanitary_phytosanitary_inspection" + /// + /// + /// "other" + /// + /// + /// [JsonProperty("restriction_type")] public string? RestrictionType { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal CustomsInfo() { } diff --git a/EasyPost/Models/API/CustomsItem.cs b/EasyPost/Models/API/CustomsItem.cs index 95c7bc9e0..fb26779ef 100644 --- a/EasyPost/Models/API/CustomsItem.cs +++ b/EasyPost/Models/API/CustomsItem.cs @@ -4,29 +4,69 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost customs item. + /// public class CustomsItem : EasyPostObject, ICustomsItemParameter { #region JSON Properties + /// + /// The SKU, UPC or other product identifier. + /// [JsonProperty("code")] public string? Code { get; set; } + + /// + /// The three-letter ISO 4217 currency code. + /// Defaults to "USD". + /// [JsonProperty("currency")] public string? Currency { get; set; } + + /// + /// The description of the item being shipped. + /// [JsonProperty("description")] public string? Description { get; set; } + + /// + /// The Harmonized Tariff Schedule (HTS) code for the item. + /// See https://hts.usitc.gov/ for more information. + /// [JsonProperty("hs_tariff_number")] public string? HsTariffNumber { get; set; } + + /// + /// The two-letter ISO 3166 country code where the item is being shipped from. + /// [JsonProperty("origin_country")] public string? OriginCountry { get; set; } + + /// + /// The quantity of the item being shipped. + /// [JsonProperty("quantity")] public int? Quantity { get; set; } + + /// + /// The value of the item being shipped, in US Dollars. + /// Total value should equal unit value multiplied by the . + /// [JsonProperty("value")] public double? Value { get; set; } + + /// + /// The weight of the item being shipped, in ounces. + /// [JsonProperty("weight")] public double? Weight { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal CustomsItem() { } diff --git a/EasyPost/Models/API/EndShipper.cs b/EasyPost/Models/API/EndShipper.cs index 9fbacefd3..ee2b2805b 100644 --- a/EasyPost/Models/API/EndShipper.cs +++ b/EasyPost/Models/API/EndShipper.cs @@ -10,55 +10,125 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost EndShipper. + /// public class EndShipper : EasyPostObject, IEndShipperParameter { #region JSON Properties + /// + /// The city the end shipper is located in. + /// [JsonProperty("city")] public string? City { get; set; } + + /// + /// The name of the company. + /// [JsonProperty("company")] public string? Company { get; set; } + + /// + /// The ISO 3166 code of the country the end shipper is located in. + /// Code must be "US" for a valid end shipper. + /// [JsonProperty("country")] public string? Country { get; set; } + + /// + /// The email address of the person or organization. + /// [JsonProperty("email")] public string? Email { get; set; } + + /// + /// Potential error encountered while processing the end shipper. + /// [JsonProperty("error")] public string? Error { get; set; } + + /// + /// A human-readable message for any errors that occurred during the end shipper's life cycle. + /// [JsonProperty("message")] public string? Message { get; set; } + + /// + /// The name of the person or organization. + /// [JsonProperty("name")] public string? Name { get; set; } + + /// + /// The phone number of the person or organization. + /// [JsonProperty("phone")] public string? Phone { get; set; } + + /// + /// The state the end shipper is located in. + /// [JsonProperty("state")] public string? State { get; set; } + + /// + /// The first line of the end shipper street address. + /// [JsonProperty("street1")] public string? Street1 { get; set; } + + /// + /// The second line of the end shipper street address. + /// [JsonProperty("street2")] public string? Street2 { get; set; } + + /// + /// The zip code the end shipper is located in. + /// [JsonProperty("zip")] public string? Zip { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal EndShipper() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class EndShipperCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("end_shippers")] public List? EndShippers { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal EndShipperCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. // Cannot currently get the next page of EndShippers, so this is not implemented. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) => throw new EndOfPaginationError(); } diff --git a/EasyPost/Models/API/Error.cs b/EasyPost/Models/API/Error.cs index cc3a7e969..7cc372639 100644 --- a/EasyPost/Models/API/Error.cs +++ b/EasyPost/Models/API/Error.cs @@ -8,7 +8,7 @@ namespace EasyPost.Models.API { #pragma warning disable CA1716 /// - /// Represents an error returned by the EasyPost API. + /// Represents an error returned by the EasyPost API. /// These are typically informational about why a request failed (server-side validation issues, missing data, etc.). /// This is different than the EasyPostError class, which represents exceptions in the EasyPost library, /// such as bad HTTP status codes or local validation issues. @@ -18,13 +18,27 @@ public class Error : EasyPostObject { #region JSON Properties + /// + /// A machine-readable description of the problem encountered. + /// [JsonProperty("code")] public string? Code { get; set; } + + /// + /// A breakdown of errors encountered for specific fields in the request. + /// [JsonProperty("errors")] public List? Errors { get; set; } + + /// + /// The field of the request that caused the error. + /// [JsonProperty("field")] public string? Field { get; set; } + /// + /// A human-readable description of the problem encountered. + /// [JsonIgnore] public string? Message { @@ -41,6 +55,9 @@ public class Error : EasyPostObject } } + /// + /// A human-readable suggestion to resolve the problem encountered. + /// [JsonProperty("suggestion")] public string? Suggestion { get; set; } @@ -53,10 +70,20 @@ public class Error : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal Error() { } + /// + /// Traverse the returned element for error messages. + /// This will handle potential inconsistent data structures in EasyPost error messages. + /// + /// The current element to traverse. + /// Previously-collected error messages. + /// A collection of error message strings. private static ICollection CollectErrorMessages(object? element, ICollection collectedMessages) { switch (element) diff --git a/EasyPost/Models/API/Event.cs b/EasyPost/Models/API/Event.cs index 8037462e8..0d6874019 100644 --- a/EasyPost/Models/API/Event.cs +++ b/EasyPost/Models/API/Event.cs @@ -7,46 +7,100 @@ namespace EasyPost.Models.API { #pragma warning disable CA1716 + /// + /// Class representing an EasyPost event. + /// public class Event : EasyPostObject #pragma warning restore CA1716 { #region JSON Properties + /// + /// URLs that have already been successfully notified as of the time the current webhook was sent. + /// [JsonProperty("completed_urls")] public List? CompletedUrls { get; set; } + + /// + /// The result type and event name. + /// See https://www.easypost.com/docs/api#possible-event-types for a list of possible values. + /// [JsonProperty("description")] public string? Description { get; set; } + + /// + /// URls that have not yet been successfully notified as of the time the current webhook was sent. + /// The URL receiving this event will still be listed here. + /// [JsonProperty("pending_urls")] public List? PendingUrls { get; set; } + + /// + /// Any previous values of relevant result attributes. + /// [JsonProperty("previous_attributes")] public Dictionary? PreviousAttributes { get; set; } + + /// + /// The result of the event. + /// See the "object" key to determine its specific type. + /// This field will not be returned when retrieving events directly from the API. + /// [JsonProperty("result")] public Dictionary? Result { get; set; } + + /// + /// The current status of the event. + /// Possible values are "pending", "completed", "failed", "in_queue" and "retrying". + /// [JsonProperty("status")] public string? Status { get; set; } + + /// + /// The ID of the associated with the event and . + /// [JsonProperty("user_id")] public string? UserId { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Event() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class EventCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("events")] public List? Events { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal EventCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Events.All parameters = Filters != null ? (BetaFeatures.Parameters.Events.All)Filters : new BetaFeatures.Parameters.Events.All(); diff --git a/EasyPost/Models/API/Fee.cs b/EasyPost/Models/API/Fee.cs index 91ba56946..92e6eaea3 100644 --- a/EasyPost/Models/API/Fee.cs +++ b/EasyPost/Models/API/Fee.cs @@ -3,21 +3,43 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost fee. + /// public class Fee : EasyPostObject { #region JSON Properties + /// + /// The amount of the fee, in US cents with sub-cent precision. + /// [JsonProperty("amount")] public double? Amount { get; set; } + + /// + /// Whether EasyPost has successfully charged your account for the fee. + /// [JsonProperty("charged")] public bool? Charged { get; set; } + + /// + /// Whether the fee has been refunded successfully. + /// [JsonProperty("refunded")] public bool? Refunded { get; set; } + + /// + /// The category of the fee. + /// Possible types include "LabelFee", "CarbonOffsetFee", "PostageFee", "InsuranceFee" and "TrackerFee". + /// [JsonProperty("type")] public string? Type { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Fee() { } diff --git a/EasyPost/Models/API/Form.cs b/EasyPost/Models/API/Form.cs index 127efea79..244998ea0 100644 --- a/EasyPost/Models/API/Form.cs +++ b/EasyPost/Models/API/Form.cs @@ -3,19 +3,37 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost form. + /// public class Form : EasyPostObject { #region JSON Properties + /// + /// The type of form. + /// Possible values include "cn22", "cod_return_label", "commercial_invoice", "high_value_report", "label_qr_code", "nafta_certificate_of_origin", "order_summary", "return_packing_slip" and "rma_qr_code". + /// [JsonProperty("form_type")] public string? FormType { get; set; } + + /// + /// The URL where the form can be downloaded. + /// [JsonProperty("form_url")] public string? FormUrl { get; set; } + + /// + /// Whether EasyPost has submitted the form to the carrier on behalf of the user. + /// [JsonProperty("submitted_electronically")] public bool? SubmittedElectronically { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Form() { } diff --git a/EasyPost/Models/API/Insurance.cs b/EasyPost/Models/API/Insurance.cs index 7d53fe3af..3299e395f 100644 --- a/EasyPost/Models/API/Insurance.cs +++ b/EasyPost/Models/API/Insurance.cs @@ -11,55 +11,125 @@ namespace EasyPost.Models.API { #pragma warning disable CA1724 // Naming conflicts with Parameters.Insurance + /// + /// Class representing an EasyPost insurance object. + /// public class Insurance : EasyPostObject, IInsuranceParameter { #region JSON Properties + /// + /// The value of the insured goods, in US cents with sub-cent precision. + /// [JsonProperty("amount")] public string? Amount { get; set; } + + /// + /// The from which the shipment is being sent. + /// [JsonProperty("from_address")] public Address? FromAddress { get; set; } + + /// + /// A list of errors encountered during the attempted purchase of the insurance. + /// [JsonProperty("messages")] public List? Messages { get; set; } + + /// + /// The insurance provider used by EasyPost. + /// [JsonProperty("provider")] public string? Provider { get; set; } + + /// + /// The identifying number for some insurance providers used by EasyPost. + /// [JsonProperty("provider_id")] public string? ProviderId { get; set; } + + /// + /// An optional field that may be used in place of ID in some API endpoints. + /// [JsonProperty("reference")] public string? Reference { get; set; } + + /// + /// The ID of the being insured, if postage was purchased through EasyPost. + /// [JsonProperty("shipment_id")] public string? ShipmentId { get; set; } + + /// + /// The current status of the insurance. + /// Possible values include "new", "pending", "purchased", "failed" and "cancelled". + /// [JsonProperty("status")] public string? Status { get; set; } + + /// + /// The to which the shipment is being sent. + /// [JsonProperty("to_address")] public Address? ToAddress { get; set; } + + /// + /// The associated with this insurance. + /// [JsonProperty("tracker")] public Tracker? Tracker { get; set; } + + /// + /// The tracking code of either the created using EasyPost, or provided by the user during creation of the insurance. + /// [JsonProperty("tracking_code")] public string? TrackingCode { get; set; } + + /// + /// The for the insurance. + /// [JsonProperty("fee")] public Fee? Fee { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Insurance() { } } #pragma warning restore CA1724 // Naming conflicts with Parameters.Insurance + /// + /// Class representing a collection of EasyPost objects. + /// public class InsuranceCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("insurances")] public List? Insurances { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal InsuranceCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Insurance.All parameters = Filters != null ? (BetaFeatures.Parameters.Insurance.All)Filters : new BetaFeatures.Parameters.Insurance.All(); diff --git a/EasyPost/Models/API/Message.cs b/EasyPost/Models/API/Message.cs index c9cf7d95e..f645ee5e3 100644 --- a/EasyPost/Models/API/Message.cs +++ b/EasyPost/Models/API/Message.cs @@ -3,21 +3,43 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost or message. + /// public class Message : EasyPostObject { #region JSON Properties + /// + /// The name of the carrier producing the error. + /// [JsonProperty("carrier")] public string? Carrier { get; set; } + + /// + /// The account ID of the carrier producing the error. + /// Useful if you have multiple accounts with the same carrier. + /// [JsonProperty("carrier_account_id")] public string? CarrierAccountId { get; set; } + + /// + /// The text from the carrier explaining the problem. + /// [JsonProperty("message")] public string? Text { get; set; } // "Message" is the enclosing class name + + /// + /// The category of error that occurred. + /// [JsonProperty("type")] public string? Type { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal Message() { } diff --git a/EasyPost/Models/API/Options.cs b/EasyPost/Models/API/Options.cs index 15d71a51d..a652b9ab6 100644 --- a/EasyPost/Models/API/Options.cs +++ b/EasyPost/Models/API/Options.cs @@ -5,30 +5,118 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost options set. + /// public class Options : EasyPostObject { #region JSON Properties + /// + /// When true, an additional handling fee will be applied to the shipment. + /// An Additional Handling charge may be applied to the following: + /// + /// + /// Any article that is encased in an outside shipping container made of metal or wood. + /// + /// + /// Any item, such as a barrel, drum, pail or tire, that is not fully encased in a corrugated cardboard shipping container. + /// + /// + /// Any package with the longest side exceeding 60 inches or its second longest side exceeding 30 inches. + /// + /// + /// Any package with an actual weight greater than 70 pounds. + /// + /// + /// [JsonProperty("additional_handling")] public bool? AdditionalHandling { get; set; } + + /// + /// Setting this option to "0", will allow the minimum amount of address information to pass the validation check. Only for USPS postage. + /// [JsonProperty("address_validation_level")] public string? AddressValidationLevel { get; set; } + + /// + /// Set this option to true if your shipment contains alcohol. + /// + /// + /// Carrier + /// Details + /// + /// + /// UPS + /// Only supported for US Domestic shipments. + /// + /// + /// FedEx + /// Only supported for US Domestic shipments. + /// + /// + /// Canada Post + /// + /// Requires adult signature 19 years or older. + /// If you want adult signature 18 years or older, instead set to "ADULT_SIGNATURE". + /// + /// + /// + /// [JsonProperty("alcohol")] public bool? Alcohol { get; set; } + + /// + /// A reference ID for aggregating DHL eCommerce billing data. + /// [JsonProperty("billing_ref")] public string? BillingRef { get; set; } + + /// + /// Obsolete. Use instead. + /// + [Obsolete("Use Payment instead.")] [JsonProperty("bill_receiver_account")] public string? BillReceiverAccount { get; set; } + + /// + /// Obsolete. Use instead. + /// + [Obsolete("Use Payment instead.")] [JsonProperty("bill_receiver_postal_code")] public string? BillReceiverPostalCode { get; set; } + + /// + /// Obsolete. Use instead. + /// + [Obsolete("Use Payment instead.")] [JsonProperty("bill_third_party_account")] public string? BillThirdPartyAccount { get; set; } + + /// + /// Obsolete. Use instead. + /// + [Obsolete("Use Payment instead.")] [JsonProperty("bill_third_party_country")] public string? BillThirdPartyCountry { get; set; } + + /// + /// Obsolete. Use instead. + /// + [Obsolete("Use Payment instead.")] [JsonProperty("bill_third_party_postal_code")] public string? BillThirdPartyPostalCode { get; set; } + + /// + /// Setting this option to true will indicate to the carrier to prefer delivery by drone, if the carrier supports drone delivery. + /// [JsonProperty("by_drone")] public bool? ByDrone { get; set; } + + /// + /// Setting this to true will add a charge to reduce carbon emissions by carriers who support this option. + /// Alternatively, see which is provided by EasyPost and works with all carriers. + /// [JsonProperty("carbon_neutral")] public bool? CarbonNeutral { get; set; } [JsonProperty("carrier_insurance_amount")] @@ -37,12 +125,41 @@ public class Options : EasyPostObject public string? CarrierNotificationEmail { get; set; } [JsonProperty("carrier_notification_sms")] public string? CarrierNotificationSms { get; set; } + + /// + /// Certified Mail provides the sender with a mailing receipt and, upon request, electronic verification that an article was delivered or that a delivery attempt was made. + /// [JsonProperty("certified_mail")] public bool? CertifiedMail { get; set; } + + /// + /// The ID of the to which the COD payment should be returned. + /// Defaults to the origin address. + /// Only available on FedEx shipments. + /// [JsonProperty("cod_address_id")] public string? CodAddressId { get; set; } + + /// + /// Adding an amount will have the carrier collect the specified amount from the recipient. + /// [JsonProperty("cod_amount")] public string? CodAmount { get; set; } + + /// + /// Method for payment. + /// + /// + /// "CASH" + /// + /// + /// "CHECK" + /// + /// + /// "MONEY_ORDER" + /// + /// + /// [JsonProperty("cod_method")] public string? CodMethod { get; set; } [JsonProperty("commercial_invoice_format")] @@ -53,8 +170,18 @@ public class Options : EasyPostObject public string? CommercialInvoiceSignature { get; set; } [JsonProperty("commercial_invoice_size")] public string? CommercialInvoiceSize { get; set; } + + /// + /// A description of the content of the shipment. + /// + [JsonProperty("content_description")] + public string? ContentDescription { get; set; } [JsonProperty("cost_center")] public string? CostCenter { get; set; } + + /// + /// Which currency this will show for rates if carrier allows. + /// [JsonProperty("currency")] public string? Currency { get; set; } [JsonProperty("customs_broker_address_id")] @@ -65,38 +192,334 @@ public class Options : EasyPostObject public double? DeclaredValue { get; set; } [JsonProperty("delivered_duty_paid")] public bool? DeliveredDutyPaid { get; set; } + + /// + /// If you want to request a signature, you can pass "ADULT_SIGNATURE" or "SIGNATURE". + /// You may also request "NO_SIGNATURE" to leave the package at the door. + /// "NO_SIGNATURE" is equivalent to releasing liability. + /// Some options may be limited for international shipments. Carrier specific delivery confirmation options are: + /// + /// + /// Carrier + /// Details + /// + /// + /// FedEx + /// + /// + /// + /// "INDIRECT_SIGNATURE" + /// Requires the signature of someone at the delivery address or from somebody nearby, such as a neighbor + /// + /// + /// + /// + /// + /// USPS + /// + /// + /// + /// "ADULT_SIGNATURE_RESTRICTED" + /// Requires the signature of the addressee only, who must be 21 years of age or older + /// + /// + /// "SIGNATURE_RESTRICTED" + /// Requires the signature of the recipient or a responsible party + /// + /// + /// + /// + /// + /// Canada Post + /// + /// + /// + /// "DO_NOT_SAFE_DROP" + /// Tells the carrier to not hide the package ("safe drop") + /// + /// + /// + /// + /// + /// GSO + /// + /// + /// + /// "STANDARD_SIGNATURE" + /// + /// + /// + /// + /// + /// DHL Express + /// + /// + /// + /// "SIGNATURE" + /// DHL Express Direct Signature + /// + /// + /// "NO_SIGNATURE" + /// DHL Express Signature Release + /// + /// + /// + /// + /// + /// [JsonProperty("delivery_confirmation")] public string? DeliveryConfirmation { get; set; } [JsonProperty("delivery_time_preference")] public string? DeliveryTimePreference { get; set; } + + /// + /// The earliest a package should be delivered. + /// Supported carriers vary. + /// + [JsonProperty("delivery_min_datetime")] + public string? DeliveryMinDatetime { get; set; } + + /// + /// The latest a package should be delivered. + /// Supported carriers vary. + /// [JsonProperty("delivery_max_datetime")] public string? DeliveryMaxDatetime { get; set; } [JsonProperty("dropoff_max_datetime")] public DateTime? DropoffMaxDatetime { get; set; } + + /// + /// Method the customer will use to transfer the package to the carrier. + /// Supported types and their corresponding carrier codes are: + /// + /// + /// Carrier + /// Details + /// + /// + /// FedEx + /// + /// + /// + /// "REGULAR_PICKUP" + /// Customer to transfer package during regular pickup (default) + /// + /// + /// "SCHEDULED_PICKUP" + /// Customer to transfer package during scheduled pickup + /// + /// + /// "RETAIL_LOCATION" + /// Customer to transfer package at FedEx retail location + /// + /// + /// "STATION" + /// "STATION" + /// + /// + /// "DROP_BOX" + /// Customer to use carrier drop box for package transfer + /// + /// + /// + /// + /// + /// [JsonProperty("dropoff_type")] public string? DropoffType { get; set; } + + /// + /// Package contents contain dry ice. + /// + /// + /// Carrier + /// Details + /// + /// + /// UPS + /// Needs to be set. + /// + /// + /// UPS MailInnovations + /// Needs to be set. + /// + /// + /// FedEx + /// Needs to be set. + /// + /// + /// [JsonProperty("dry_ice")] public bool? DryIce { get; set; } + + /// + /// Whether the dry ice is for medical use. + /// + /// + /// Carrier + /// Details + /// + /// + /// UPS + /// Needs to be set. + /// + /// + /// UPS MailInnovations + /// Needs to be set. + /// + /// + /// [JsonProperty("dry_ice_medical")] public string? DryIceMedical { get; set; } + + /// + /// Weight of the dry ice, in ounces. + /// + /// + /// Carrier + /// Details + /// + /// + /// UPS + /// Needs to be set. + /// + /// + /// UPS MailInnovations + /// Needs to be set. + /// + /// + /// FedEx + /// Needs to be set. + /// + /// + /// [JsonProperty("dry_ice_weight")] public string? DryIceWeight { get; set; } + + /// + /// Set to bill the correct account for purchasing postage. + /// This option is only available with FedEx and UPS. + /// + /// + /// Key + /// Value + /// + /// + /// type + /// One of the following: + /// + /// + /// "THIRD_PARTY" + /// + /// + /// "RECEIVER" + /// + /// + /// + /// + /// + /// account + /// Account number + /// + /// + /// country + /// Country code that the account is based in + /// + /// + /// postage_code + /// Postal code that the account is based in + /// + /// + /// [JsonProperty("duty_payment")] public Dictionary? DutyPayment { get; set; } [JsonProperty("duty_payment_account")] public string? DutyPaymentAccount { get; set; } + + /// + /// Possible values are: + /// + /// + /// "ADDRESS_SERVICE_REQUESTED" + /// + /// + /// "FORWARDING_SERVICE_REQUESTED" + /// + /// + /// "CHANGE_SERVICE_REQUESTED" + /// + /// + /// "RETURN_SERVICE_REQUESTED" + /// + /// + /// "LEAVE_IF_NO_RESPONSE" + /// + /// + /// [JsonProperty("endorsement")] public string? Endorsement { get; set; } + + /// + /// Specify the responsible for the shipment. + /// [JsonProperty("end_shipper_id")] public string? EndShipperId { get; set; } + + /// + /// Additional cost to be added to the invoice of this . + /// Only applies to UPS currently. + /// [JsonProperty("freight_charge")] public string? FreightCharge { get; set; } [JsonProperty("group")] public string? Group { get; set; } + + /// + /// This is to designate special instructions for the carrier, such as "Do not drop!". + /// [JsonProperty("handling_instructions")] public string? HandlingInstructions { get; set; } + + /// + /// Dangerous goods indicator. + /// Possible values are: + /// + /// + /// "PRIMARY_CONTAINED" + /// + /// + /// "PRIMARY_PACKED" + /// + /// + /// "PRIMARY" + /// + /// + /// "SECONDARY_CONTAINED" + /// + /// + /// "SECONDARY_PACKED" + /// + /// + /// "SECONDARY" + /// + /// + /// "ORMD" + /// + /// + /// "LIMITED_QUANTITY" + /// + /// + /// "LITHIUM" + /// + /// + /// Applies to USPS, FedEx and DHL eCommerce. + /// [JsonProperty("hazmat")] public string? Hazmat { get; set; } + + /// + /// Package will wait at carrier facility for pickup. + /// [JsonProperty("hold_for_pickup")] public bool? HoldForPickup { get; set; } [JsonProperty("image_format")] @@ -107,18 +530,92 @@ public class Options : EasyPostObject public string? ImportFederalTaxId { get; set; } [JsonProperty("import_state_tax_id")] public string? ImportStateTaxId { get; set; } + + /// + /// Incoterm negotiated for shipment. + /// Supported values are: + /// + /// + /// "EXW" + /// + /// + /// "FCA" + /// + /// + /// "CPT" + /// + /// + /// "CIP" + /// + /// + /// "DAT" + /// + /// + /// "DAP" + /// + /// + /// "DDP" + /// + /// + /// "FAS" + /// + /// + /// "FOB" + /// + /// + /// "CFR" + /// + /// + /// "CIF" + /// + /// + /// Setting this value to anything other than "DDP" will pass the cost and responsibility of duties on to the recipient of the package(s), as specified by Incoterms rules. + /// [JsonProperty("incoterm")] public string? Incoterm { get; set; } + + /// + /// Invoice number to print on the postage label. + /// [JsonProperty("invoice_number")] public string? InvoiceNumber { get; set; } + + /// + /// Set the date that will appear on the postage label. + /// Accepts ISO 8601 formatted string including time zone offset. + /// EasyPost stores all dates as UTC time. + /// [JsonProperty("label_date")] public DateTime? LabelDate { get; set; } + + /// + /// Supported label formats are: + /// + /// + /// "PNG" + /// + /// + /// "PDF" + /// + /// + /// "ZPL" + /// + /// + /// "EPL2" + /// + /// + /// "PNG" is the only format that allows for conversion. + /// [JsonProperty("label_format")] public string? LabelFormat { get; set; } [JsonProperty("label_size")] public string? LabelSize { get; set; } [JsonProperty("license_number")] public string? LicenseNumber { get; set; } + + /// + /// Whether or not the parcel can be processed by the carriers equipment. + /// [JsonProperty("machinable")] public string? Machinable { get; set; } [JsonProperty("neutral_delivery")] @@ -131,12 +628,63 @@ public class Options : EasyPostObject public string? OverlabelOriginalTrackingNumber { get; set; } [JsonProperty("parties_to_transaction_are_related")] public string? PartiesToTransactionAreRelated { get; set; } + + /// + /// Setting payment type to bill the correct account for purchasing postage. + /// "THIRD_PARTY" is only supported on passthrough billed carriers. + /// + /// + /// Key + /// Value + /// + /// + /// type + /// One of the following: + /// + /// + /// "SENDER" + /// + /// + /// "THIRD_PARTY" + /// + /// + /// "RECEIVER" + /// + /// + /// "COLLECT" + /// + /// + /// Defaults to "SENDER". + /// + /// + /// + /// account + /// Account number. Required for "RECEIVER" and "THIRD_PARTY". + /// + /// + /// country + /// Country code that the account is based in. Required for "THIRD_PARTY". + /// + /// + /// postage_code + /// Postal code that the account is based in. Required for "RECEIVER" and "THIRD_PARTY". + /// + /// + /// [JsonProperty("payment")] public Dictionary? Payment { get; set; } [JsonProperty("peel_and_return")] public bool? PeelAndReturn { get; set; } + /// + /// The latest a package should be picked up. + /// Supported carriers vary. + /// [JsonProperty("pickup_max_datetime")] public DateTime? PickupMaxDatetime { get; set; } + /// + /// The earliest a package should be picked up. + /// Supported carriers vary. + /// [JsonProperty("pickup_min_datetime")] public DateTime? PickupMinDatetime { get; set; } [JsonProperty("po_sort")] @@ -145,44 +693,253 @@ public class Options : EasyPostObject public bool? PostageLabelInline { get; set; } [JsonProperty("print_custom")] public List>? PrintCustom { get; set; } + /// + /// You can optionally print custom messages on labels. + /// Message to print on the label in spot 1. + /// [JsonProperty("print_custom_1")] public string? PrintCustom1 { get; set; } + + /// + /// Create a barcode for this custom reference if supported by carrier. + /// [JsonProperty("print_custom_1_barcode")] public bool? PrintCustom1Barcode { get; set; } + + /// + /// Specify the type of . + /// + /// + /// Carrier + /// Details + /// + /// + /// FedEx + /// + /// + /// + /// (null) + /// If is not provided, it defaults to Customer Reference + /// + /// + /// PO + /// Purchase Order Number + /// + /// + /// DP + /// Department Number + /// + /// + /// RMA + /// Return Merchandise Authorization + /// + /// + /// + /// + /// + /// UPS + /// + /// + /// + /// AJ + /// Accounts Receivable Customer Account + /// + /// + /// AT + /// Appropriation Number + /// + /// + /// BM + /// Bill of Lading Number + /// + /// + /// 9V + /// Collect on Delivery (COD) Number + /// + /// + /// ON + /// Dealer Order Number + /// + /// + /// DP + /// Department Number + /// + /// + /// 3Q + /// Food and Drug Administration (FDA) Product Code + /// + /// + /// IK + /// Invoice Number + /// + /// + /// MK + /// Manifest Key Number + /// + /// + /// MJ + /// Model Number + /// + /// + /// PM + /// Part Number + /// + /// + /// PC + /// Production Code + /// + /// + /// PO + /// Purchase Order Number + /// + /// + /// RQ + /// Purchase Request Number + /// + /// + /// RZ + /// Return Authorization Number + /// + /// + /// SA + /// Salesperson Number + /// + /// + /// SE + /// Serial Number + /// + /// + /// ST + /// Store Number + /// + /// + /// TN + /// Transaction Reference Number + /// + /// + /// EI + /// Employer's ID Number + /// + /// + /// TJ + /// Federal Taxpayer ID No. + /// + /// + /// + /// + /// + /// [JsonProperty("print_custom_1_code")] public string? PrintCustom1Code { get; set; } + + /// + /// You can optionally print custom messages on labels. + /// Message to print on the label in spot 2. + /// [JsonProperty("print_custom_2")] public string? PrintCustom2 { get; set; } + + /// + /// Create a barcode for this custom reference if supported by carrier. + /// [JsonProperty("print_custom_2_barcode")] public bool? PrintCustom2Barcode { get; set; } + + /// + /// Specify the type of . + /// See for a list of valid values. + /// [JsonProperty("print_custom_2_code")] public string? PrintCustom2Code { get; set; } + + /// + /// You can optionally print custom messages on labels. + /// Message to print on the label in spot 3. + /// [JsonProperty("print_custom_3")] public string? PrintCustom3 { get; set; } + + /// + /// Create a barcode for this custom reference if supported by carrier. + /// [JsonProperty("print_custom_3_barcode")] public bool? PrintCustom3Barcode { get; set; } + + /// + /// Specify the type of . + /// See for a list of valid values. + /// [JsonProperty("print_custom_3_code")] public string? PrintCustom3Code { get; set; } [JsonProperty("print_rate")] public bool? PrintRate { get; set; } [JsonProperty("receiver_liquor_license")] public string? ReceiverLiquorLicense { get; set; } + + /// + /// Registered Mail is the most secure service that the USPS offers. + /// It incorporates a system of receipts to monitor the movement of the mail from the point of acceptance to delivery. + /// [JsonProperty("registered_mail")] public bool? RegisteredMail { get; set; } + + /// + /// The value of the package contents for purposes. + /// [JsonProperty("registered_mail_amount")] public double? RegisteredMailAmount { get; set; } + + /// + /// An electronic return receipt may be purchased at the time of mailing and provides a shipper with evidence of delivery (to whom the mail was delivered and date of delivery), and information about the recipient's actual delivery address. + /// Only applies to the USPS. + /// [JsonProperty("return_receipt")] public bool? ReturnReceipt { get; set; } [JsonProperty("return_service")] public string? ReturnService { get; set; } + + /// + /// Set this value to true for delivery on Saturday. + /// When set, you will only get rates for services that are eligible for Saturday delivery. + /// If no services are available for Saturday delivery, then you will not be returned any rates. + /// You may need to create two shipments, one with the option set and one without to get all your eligible rates. + /// [JsonProperty("saturday_delivery")] public bool? SaturdayDelivery { get; set; } [JsonProperty("settlement_method")] public string? SettlementMethod { get; set; } + + /// + /// You can use this to override the hub ID you have on your account. + /// [JsonProperty("smartpost_hub")] public string? SmartpostHub { get; set; } + + /// + /// The manifest ID is used to group SmartPost packages onto a manifest for each trailer. + /// [JsonProperty("smartpost_manifest")] public string? SmartpostManifest { get; set; } + + /// + /// This option allows you to request the following USPS mail classes: + /// + /// + /// Type + /// Code + /// + /// + /// Media Mail + /// USPS.MEDIAMAIL + /// + /// + /// Library Mail + /// USPS.LIBRARYMAIL + /// + /// + /// These mail classes have restrictions that must be followed. + /// See the DMM (https://pe.usps.com/DMM300/Index) for eligibility rules. + /// [JsonProperty("special_rates_eligibility")] public string? SpecialRatesEligibility { get; set; } [JsonProperty("suppress_etd")] @@ -190,7 +947,10 @@ public class Options : EasyPostObject #endregion - public Options() + /// + /// Initializes a new instance of the class. + /// + internal Options() { } } diff --git a/EasyPost/Models/API/Order.cs b/EasyPost/Models/API/Order.cs index b3597ec60..bcfcef83e 100644 --- a/EasyPost/Models/API/Order.cs +++ b/EasyPost/Models/API/Order.cs @@ -8,6 +8,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost order. + /// public class Order : EasyPostObject, IOrderParameter { #region JSON Properties @@ -26,6 +29,10 @@ public class Order : EasyPostObject, IOrderParameter public List? Messages { get; set; } [JsonProperty("rates")] public List? Rates { get; set; } + + /// + /// An optional field that may be used in place of ID in some API endpoints. + /// [JsonProperty("reference")] public string? Reference { get; set; } [JsonProperty("return_address")] @@ -39,6 +46,9 @@ public class Order : EasyPostObject, IOrderParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Order() { } diff --git a/EasyPost/Models/API/Parcel.cs b/EasyPost/Models/API/Parcel.cs index b87cbea0d..d377f89c9 100644 --- a/EasyPost/Models/API/Parcel.cs +++ b/EasyPost/Models/API/Parcel.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost parcel. + /// public class Parcel : EasyPostObject, IParcelParameter { #region JSON Properties @@ -21,6 +24,9 @@ public class Parcel : EasyPostObject, IParcelParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Parcel() { } diff --git a/EasyPost/Models/API/Payload.cs b/EasyPost/Models/API/Payload.cs index 6e3f9d9ec..9815303f1 100644 --- a/EasyPost/Models/API/Payload.cs +++ b/EasyPost/Models/API/Payload.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost event payload. + /// public class Payload : EasyPostObject { #region JSON Properties @@ -25,6 +28,9 @@ public class Payload : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal Payload() { } diff --git a/EasyPost/Models/API/PaymentMethod.cs b/EasyPost/Models/API/PaymentMethod.cs index 0e20bc891..6c26635fc 100644 --- a/EasyPost/Models/API/PaymentMethod.cs +++ b/EasyPost/Models/API/PaymentMethod.cs @@ -8,8 +8,8 @@ namespace EasyPost.Models.API { /// /// Represents a credit card or a bank account. - /// Have to collect all possible properties since we can't anticipate which type of payment method the API will return. /// + // Have to collect all possible properties since we can't anticipate which type of payment method the API will return. public class PaymentMethod : EasyPostObject { #region JSON Properties diff --git a/EasyPost/Models/API/PaymentMethodType.cs b/EasyPost/Models/API/PaymentMethodType.cs index 7ae8591a0..0281ee5ef 100644 --- a/EasyPost/Models/API/PaymentMethodType.cs +++ b/EasyPost/Models/API/PaymentMethodType.cs @@ -2,13 +2,31 @@ namespace EasyPost.Models.API { + /// + /// Enum representing an EasyPost payment method type. + /// public class PaymentMethodType : ValueEnum { + /// + /// The bank account payment method type. + /// public static readonly PaymentMethodType BankAccount = new(2, "bank_accounts"); + + /// + /// The credit card payment method type. + /// public static readonly PaymentMethodType CreditCard = new(1, "credit_cards"); + /// + /// Gets the endpoint for this payment method type. + /// internal string? EndPoint => Value.ToString(); + /// + /// Initializes a new instance of the class. + /// + /// The internal ID of this enum. + /// The endpoint associated with this enum. private PaymentMethodType(int id, string endpoint) : base(id, endpoint) { diff --git a/EasyPost/Models/API/PaymentMethodsSummary.cs b/EasyPost/Models/API/PaymentMethodsSummary.cs index f67bda102..e3a0151db 100644 --- a/EasyPost/Models/API/PaymentMethodsSummary.cs +++ b/EasyPost/Models/API/PaymentMethodsSummary.cs @@ -4,7 +4,7 @@ namespace EasyPost.Models.API { /// - /// Represents a summary of the primary and secondary payment methods on the user's account. + /// Represents a summary of the primary and secondary payment methods on the user's account. /// public class PaymentMethodsSummary : EasyPostObject { @@ -17,6 +17,9 @@ public class PaymentMethodsSummary : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal PaymentMethodsSummary() { } diff --git a/EasyPost/Models/API/Pickup.cs b/EasyPost/Models/API/Pickup.cs index 84c593c1b..970feb3ea 100644 --- a/EasyPost/Models/API/Pickup.cs +++ b/EasyPost/Models/API/Pickup.cs @@ -11,6 +11,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost pickup. + /// public class Pickup : EasyPostObject, IPickupParameter { #region JSON Properties @@ -35,6 +38,10 @@ public class Pickup : EasyPostObject, IPickupParameter public string? Name { get; set; } [JsonProperty("pickup_rates")] public List? PickupRates { get; set; } + + /// + /// An optional field that may be used in place of ID in some API endpoints. + /// [JsonProperty("reference")] public string? Reference { get; set; } [JsonProperty("status")] @@ -48,6 +55,9 @@ public class Pickup : EasyPostObject, IPickupParameter /// List of Rate objects. private IEnumerable Rates => PickupRates != null ? PickupRates.Cast().ToList() : new List(); + /// + /// Initializes a new instance of the class. + /// internal Pickup() { } @@ -63,19 +73,35 @@ internal Pickup() public PickupRate LowestRate(List? includeCarriers = null, List? includeServices = null, List? excludeCarriers = null, List? excludeServices = null) => (PickupRate)Utilities.Rates.GetLowestRate(Rates, includeCarriers, includeServices, excludeCarriers, excludeServices); } + /// + /// Class representing a collection of EasyPost objects. + /// public class PickupCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("pickups")] public List? Pickups { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal PickupCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Pickups.All parameters = Filters != null ? (BetaFeatures.Parameters.Pickups.All)Filters : new BetaFeatures.Parameters.Pickups.All(); diff --git a/EasyPost/Models/API/PickupRate.cs b/EasyPost/Models/API/PickupRate.cs index bbcf06a86..2c154c4fb 100644 --- a/EasyPost/Models/API/PickupRate.cs +++ b/EasyPost/Models/API/PickupRate.cs @@ -2,6 +2,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost pickup rate. + /// public class PickupRate : Rate { #region JSON Properties @@ -11,6 +14,9 @@ public class PickupRate : Rate #endregion + /// + /// Initializes a new instance of the class. + /// internal PickupRate() { } diff --git a/EasyPost/Models/API/PostageLabel.cs b/EasyPost/Models/API/PostageLabel.cs index 2509fe766..f4f7568c2 100644 --- a/EasyPost/Models/API/PostageLabel.cs +++ b/EasyPost/Models/API/PostageLabel.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost postage label. + /// public class PostageLabel : EasyPostObject { #region JSON Properties @@ -35,6 +38,9 @@ public class PostageLabel : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal PostageLabel() { } diff --git a/EasyPost/Models/API/Rate.cs b/EasyPost/Models/API/Rate.cs index d8e2b5009..57f5e2e20 100644 --- a/EasyPost/Models/API/Rate.cs +++ b/EasyPost/Models/API/Rate.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost rate. + /// public class Rate : EasyPostObject { #region JSON Properties @@ -43,6 +46,9 @@ public class Rate : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal Rate() { } diff --git a/EasyPost/Models/API/RateWithEstimatedDeliveryDate.cs b/EasyPost/Models/API/RateWithEstimatedDeliveryDate.cs index fdb0248ff..e52edaa14 100644 --- a/EasyPost/Models/API/RateWithEstimatedDeliveryDate.cs +++ b/EasyPost/Models/API/RateWithEstimatedDeliveryDate.cs @@ -4,35 +4,65 @@ namespace EasyPost.Models.API { + /// + /// Class representing a with an estimated delivery date. + /// public class RateWithEstimatedDeliveryDate { #region JSON Properties + /// + /// The object. + /// [JsonProperty("rate")] public Rate? Rate { get; set; } + + /// + /// Estimated for the . + /// [JsonProperty("easypost_time_in_transit_data")] public TimeInTransitDetails? EasyPostTimeInTransitData { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal RateWithEstimatedDeliveryDate() { } } + /// + /// Class representing estimated transit times for a . + /// public class TimeInTransitDetails { #region JSON Properties + /// + /// Confidence levels for days in transit estimates. + /// [JsonProperty("days_in_transit")] public TimeInTransit? DaysInTransit { get; set; } + + /// + /// EasyPost's estimated delivery date for the associated . + /// [JsonProperty("easypost_time_in_transit_data")] public string? EasyPostEstimatedDeliveryDate { get; set; } + + /// + /// The planned departure date for the shipment. + /// [JsonProperty("planned_ship_date")] public DateTime? PlannedShipDate { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal TimeInTransitDetails() { } diff --git a/EasyPost/Models/API/ReferralCustomer.cs b/EasyPost/Models/API/ReferralCustomer.cs index 7488ffc3c..61b54cb5b 100644 --- a/EasyPost/Models/API/ReferralCustomer.cs +++ b/EasyPost/Models/API/ReferralCustomer.cs @@ -6,26 +6,48 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost referral customer. + /// public class ReferralCustomer : BaseUser, IReferralCustomerParameter { + /// + /// Initializes a new instance of the class. + /// internal ReferralCustomer() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class ReferralCustomerCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("referral_customers")] public List? ReferralCustomers { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal ReferralCustomerCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.ReferralCustomers.All parameters = Filters != null ? (BetaFeatures.Parameters.ReferralCustomers.All)Filters : new BetaFeatures.Parameters.ReferralCustomers.All(); diff --git a/EasyPost/Models/API/Refund.cs b/EasyPost/Models/API/Refund.cs index 257ea8240..821afa89b 100644 --- a/EasyPost/Models/API/Refund.cs +++ b/EasyPost/Models/API/Refund.cs @@ -7,6 +7,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost refund. + /// public class Refund : EasyPostObject, IRefundParameter { #region JSON Properties @@ -24,24 +27,43 @@ public class Refund : EasyPostObject, IRefundParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Refund() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class RefundCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("refunds")] public List? Refunds { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal RefundCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Refunds.All parameters = Filters != null ? (BetaFeatures.Parameters.Refunds.All)Filters : new BetaFeatures.Parameters.Refunds.All(); diff --git a/EasyPost/Models/API/Report.cs b/EasyPost/Models/API/Report.cs index 5e708be39..7e9b6b95d 100644 --- a/EasyPost/Models/API/Report.cs +++ b/EasyPost/Models/API/Report.cs @@ -8,6 +8,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost report. + /// public class Report : EasyPostObject, IReportParameter { #region JSON Properties @@ -27,24 +30,43 @@ public class Report : EasyPostObject, IReportParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Report() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class ReportCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("reports")] public List? Reports { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal ReportCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Reports.All parameters = Filters != null ? (BetaFeatures.Parameters.Reports.All)Filters : new BetaFeatures.Parameters.Reports.All(); diff --git a/EasyPost/Models/API/ScanForm.cs b/EasyPost/Models/API/ScanForm.cs index 05504feb7..489276fd8 100644 --- a/EasyPost/Models/API/ScanForm.cs +++ b/EasyPost/Models/API/ScanForm.cs @@ -7,6 +7,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost scan form. + /// public class ScanForm : EasyPostObject, IScanFormParameter { #region JSON Properties @@ -19,6 +22,10 @@ public class ScanForm : EasyPostObject, IScanFormParameter public string? FormFileType { get; set; } [JsonProperty("form_url")] public string? FormUrl { get; set; } + + /// + /// A human-readable message for any errors that occurred during the scan form's life cycle. + /// [JsonProperty("message")] public string? Message { get; set; } [JsonProperty("status")] @@ -28,24 +35,43 @@ public class ScanForm : EasyPostObject, IScanFormParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal ScanForm() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class ScanFormCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("scan_forms")] public List? ScanForms { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal ScanFormCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.ScanForms.All parameters = Filters != null ? (BetaFeatures.Parameters.ScanForms.All)Filters : new BetaFeatures.Parameters.ScanForms.All(); diff --git a/EasyPost/Models/API/Shipment.cs b/EasyPost/Models/API/Shipment.cs index 112b8de09..9c8fca7ca 100644 --- a/EasyPost/Models/API/Shipment.cs +++ b/EasyPost/Models/API/Shipment.cs @@ -10,6 +10,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost shipment. + /// public class Shipment : EasyPostObject, IShipmentParameter { #region JSON Properties @@ -48,6 +51,10 @@ public class Shipment : EasyPostObject, IShipmentParameter public PostageLabel? PostageLabel { get; set; } [JsonProperty("rates")] public List? Rates { get; set; } + + /// + /// An optional field that may be used in place of ID in some API endpoints. + /// [JsonProperty("reference")] public string? Reference { get; set; } [JsonProperty("refund_status")] @@ -75,6 +82,9 @@ public class Shipment : EasyPostObject, IShipmentParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Shipment() { } @@ -100,19 +110,35 @@ public Rate LowestRate(List? includeCarriers = null, List? inclu } } + /// + /// Class representing a collection of EasyPost s. + /// public class ShipmentCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("shipments")] public List? Shipments { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal ShipmentCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Shipments.All parameters = Filters != null ? (BetaFeatures.Parameters.Shipments.All)Filters : new BetaFeatures.Parameters.Shipments.All(); diff --git a/EasyPost/Models/API/Smartrate.cs b/EasyPost/Models/API/SmartRate.cs similarity index 85% rename from EasyPost/Models/API/Smartrate.cs rename to EasyPost/Models/API/SmartRate.cs index 21126080c..cee6e3455 100644 --- a/EasyPost/Models/API/Smartrate.cs +++ b/EasyPost/Models/API/SmartRate.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost SmartRate. + /// public class SmartRate : EasyPostObject { #region JSON Properties @@ -43,6 +46,9 @@ public class SmartRate : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal SmartRate() { } diff --git a/EasyPost/Models/API/TaxIdentifier.cs b/EasyPost/Models/API/TaxIdentifier.cs index 0ad6afb86..a36d7aee6 100644 --- a/EasyPost/Models/API/TaxIdentifier.cs +++ b/EasyPost/Models/API/TaxIdentifier.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost tax identifier. + /// public class TaxIdentifier : EasyPostObject, ITaxIdentifierParameter { #region JSON Properties @@ -19,6 +22,9 @@ public class TaxIdentifier : EasyPostObject, ITaxIdentifierParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal TaxIdentifier() { } diff --git a/EasyPost/Models/API/TimeInTransit.cs b/EasyPost/Models/API/TimeInTransit.cs index f594f0091..3be905ca1 100644 --- a/EasyPost/Models/API/TimeInTransit.cs +++ b/EasyPost/Models/API/TimeInTransit.cs @@ -3,6 +3,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost time in transit summary. + /// public class TimeInTransit : EphemeralEasyPostObject { #region JSON Properties @@ -24,6 +27,9 @@ public class TimeInTransit : EphemeralEasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal TimeInTransit() { } diff --git a/EasyPost/Models/API/Tracker.cs b/EasyPost/Models/API/Tracker.cs index 9dccc993c..acd773057 100644 --- a/EasyPost/Models/API/Tracker.cs +++ b/EasyPost/Models/API/Tracker.cs @@ -8,6 +8,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost tracker. + /// public class Tracker : EasyPostObject, ITrackerParameter { #region JSON Properties @@ -39,24 +42,43 @@ public class Tracker : EasyPostObject, ITrackerParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Tracker() { } } + /// + /// Class representing a collection of EasyPost s. + /// public class TrackerCollection : PaginatedCollection { #region JSON Properties + /// + /// The s in the collection. + /// [JsonProperty("trackers")] public List? Trackers { get; set; } #endregion + /// + /// Initializes a new instance of the class. + /// internal TrackerCollection() { } + /// + /// Construct the parameter set for retrieving the next page of this paginated collection. + /// + /// The entries on the current page of this paginated collection. + /// The request size of the next page. + /// The type of parameters to construct. + /// A TParameters-type parameters set. protected internal override TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) { BetaFeatures.Parameters.Trackers.All parameters = Filters != null ? (BetaFeatures.Parameters.Trackers.All)Filters : new BetaFeatures.Parameters.Trackers.All(); diff --git a/EasyPost/Models/API/TrackingDetail.cs b/EasyPost/Models/API/TrackingDetail.cs index d03ae30e0..c5e2e98e7 100644 --- a/EasyPost/Models/API/TrackingDetail.cs +++ b/EasyPost/Models/API/TrackingDetail.cs @@ -4,12 +4,19 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost tracker detail object. + /// public class TrackingDetail : EasyPostObject { #region JSON Properties [JsonProperty("datetime")] public DateTime? Datetime { get; set; } + + /// + /// A human-readable message for any errors that occurred during the tracking detail's life cycle. + /// [JsonProperty("message")] public string? Message { get; set; } [JsonProperty("status")] @@ -21,6 +28,9 @@ public class TrackingDetail : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal TrackingDetail() { } diff --git a/EasyPost/Models/API/TrackingLocation.cs b/EasyPost/Models/API/TrackingLocation.cs index 489720e23..ff6beeb30 100644 --- a/EasyPost/Models/API/TrackingLocation.cs +++ b/EasyPost/Models/API/TrackingLocation.cs @@ -3,6 +3,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost tracking location. + /// public class TrackingLocation : EasyPostObject { #region JSON Properties @@ -18,6 +21,9 @@ public class TrackingLocation : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal TrackingLocation() { } diff --git a/EasyPost/Models/API/User.cs b/EasyPost/Models/API/User.cs index 3c48e916d..47aa057df 100644 --- a/EasyPost/Models/API/User.cs +++ b/EasyPost/Models/API/User.cs @@ -1,12 +1,11 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using EasyPost.BetaFeatures.Parameters; +using EasyPost.BetaFeatures.Parameters; using EasyPost.Models.Shared; -using EasyPost.Utilities.Internal.Attributes; -using EasyPost.Utilities.Internal.Extensions; namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost user. + /// public class User : BaseUser, IUserParameter { internal User() diff --git a/EasyPost/Models/API/Verification.cs b/EasyPost/Models/API/Verification.cs index 96a2b16b0..3796662ba 100644 --- a/EasyPost/Models/API/Verification.cs +++ b/EasyPost/Models/API/Verification.cs @@ -4,6 +4,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost verification object. + /// public class Verification : EasyPostObject { #region JSON Properties @@ -17,6 +20,9 @@ public class Verification : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal Verification() { } diff --git a/EasyPost/Models/API/VerificationDetails.cs b/EasyPost/Models/API/VerificationDetails.cs index ca0061bda..f0f7ee87a 100644 --- a/EasyPost/Models/API/VerificationDetails.cs +++ b/EasyPost/Models/API/VerificationDetails.cs @@ -3,6 +3,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost verification details object. + /// public class VerificationDetails : EasyPostObject { #region JSON Properties @@ -16,6 +19,9 @@ public class VerificationDetails : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal VerificationDetails() { } diff --git a/EasyPost/Models/API/Verifications.cs b/EasyPost/Models/API/Verifications.cs index 5f1685395..9744ece51 100644 --- a/EasyPost/Models/API/Verifications.cs +++ b/EasyPost/Models/API/Verifications.cs @@ -3,6 +3,9 @@ namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost verifications object. + /// public class Verifications : EasyPostObject { #region JSON Properties @@ -14,6 +17,9 @@ public class Verifications : EasyPostObject #endregion + /// + /// Initializes a new instance of the class. + /// internal Verifications() { } diff --git a/EasyPost/Models/API/Webhook.cs b/EasyPost/Models/API/Webhook.cs index b93362689..6a3169e04 100644 --- a/EasyPost/Models/API/Webhook.cs +++ b/EasyPost/Models/API/Webhook.cs @@ -1,13 +1,13 @@ using System; -using System.Collections.Generic; -using System.Threading.Tasks; using EasyPost._base; using EasyPost.BetaFeatures.Parameters; -using EasyPost.Utilities.Internal.Attributes; using Newtonsoft.Json; namespace EasyPost.Models.API { + /// + /// Class representing an EasyPost webhook. + /// public class Webhook : EasyPostObject, IWebhookParameter { #region JSON Properties @@ -19,6 +19,9 @@ public class Webhook : EasyPostObject, IWebhookParameter #endregion + /// + /// Initializes a new instance of the class. + /// internal Webhook() { } diff --git a/EasyPost/Models/Shared/BaseUser.cs b/EasyPost/Models/Shared/BaseUser.cs index 970e9f4d0..9e8672bae 100644 --- a/EasyPost/Models/Shared/BaseUser.cs +++ b/EasyPost/Models/Shared/BaseUser.cs @@ -5,6 +5,9 @@ namespace EasyPost.Models.Shared { + /// + /// Base class for all EasyPost user objects. + /// public class BaseUser : EasyPostObject { #region JSON Properties diff --git a/EasyPost/Models/Shared/PaginatedCollection.cs b/EasyPost/Models/Shared/PaginatedCollection.cs index 427f12234..f4ea3d826 100644 --- a/EasyPost/Models/Shared/PaginatedCollection.cs +++ b/EasyPost/Models/Shared/PaginatedCollection.cs @@ -7,9 +7,9 @@ namespace EasyPost.Models.Shared { /// - /// A collection of s with multiple pages. + /// A paginated collection of s. /// - public abstract class PaginatedCollection : EasyPost._base.EasyPostObject where TEntries : EasyPost._base.EasyPostObject + public abstract class PaginatedCollection : _base.EasyPostObject where TEntries : _base.EasyPostObject { #region JSON Properties @@ -59,6 +59,6 @@ public abstract class PaginatedCollection : EasyPost._base.EasyPostObj /// A TParameters-type set of parameters to use for the subsequent API call. /// Thrown if there are no more items to retrieve for the paginated collection. // This method is abstract and must be implemented for each collection. - protected internal abstract TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) where TParameters : EasyPost.BetaFeatures.Parameters.BaseParameters; + protected internal abstract TParameters BuildNextPageParameters(IEnumerable entries, int? pageSize = null) where TParameters : BetaFeatures.Parameters.BaseParameters; } } diff --git a/EasyPost/_base/EphemeralEasyPostObject.cs b/EasyPost/_base/EphemeralEasyPostObject.cs index a4f378cef..3356eb160 100644 --- a/EasyPost/_base/EphemeralEasyPostObject.cs +++ b/EasyPost/_base/EphemeralEasyPostObject.cs @@ -29,8 +29,8 @@ public abstract class EphemeralEasyPostObject : IEasyPostObject /// public override bool Equals(object? obj) => GetType() == obj?.GetType() && GetHashCode() == ((EphemeralEasyPostObject)obj).GetHashCode(); -#pragma warning disable CA1307 // Specify StringComparison /// +#pragma warning disable CA1307 // Specify StringComparison public override int GetHashCode() => AsJson().GetHashCode() ^ GetType().GetHashCode(); #pragma warning restore CA1307 // Specify StringComparison diff --git a/Makefile b/Makefile index 333a3d723..795cbcad5 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ coverage-check: ## docs - Generates library documentation docs: - dotnet tool run docfx docfx.json + dotnet tool run docfx docs/docfx.json ## format - Formats the project format: