/// <summary> /// Retrieve a Batch from its id. /// </summary> /// <param name="id">String representing a Batch. Starts with "batch_".</param> /// <returns>Batch instance.</returns> public async Task <Batch> GetBatch( string id) { var request = new EasyPostRequest("batches/{id}"); request.AddUrlSegment("id", id); return(await Execute <Batch>(request)); }
/// <summary> /// Retrieve a Rate from its id. /// </summary> /// <param name="id">String representing a Rate. Starts with "rate_".</param> /// <returns>CarrierRate instance.</returns> public async Task <CarrierRate> GetRate( string id) { var request = new EasyPostRequest("rates/{id}"); request.AddUrlSegment("id", id); return(await Execute <CarrierRate>(request)); }
/// <summary> /// Buy labels for all shipments within a batch. The Batch's state must be "created" before purchasing. /// </summary> /// <param name="id">Batch id to add the shipments to</param> /// <returns>Batch instance.</returns> public async Task <Batch> BuyLabelsForBatch( string id) { var request = new EasyPostRequest("batches/{id}/buy", Method.POST); request.AddUrlSegment("id", id); return(await Execute <Batch>(request)); }
/// <summary> /// Retrieve an Item from its id or reference. /// </summary> /// <param name="id">String representing a Item. Starts with "item_" if passing an id.</param> /// <returns>Item instance.</returns> public async Task <Item> GetItem( string id) { var request = new EasyPostRequest("items/{id}"); request.AddUrlSegment("id", id); return(await Execute <Item>(request)); }
/// <summary> /// Asychronously generate a scan form for the batch. /// </summary> /// <param name="id">Batch id to generate the label for</param> /// <returns>Batch instance.</returns> public async Task <Batch> GenerateScanFormForBatch( string id) { var request = new EasyPostRequest("batches/{id}/scan_form", Method.POST); request.AddUrlSegment("id", id); return(await Execute <Batch>(request)); }
/// <summary> /// Retrieve a CarrierAccount from its id. /// </summary> /// <param name="id">String representing a carrier account. Starts with "ca_".</param> /// <returns>CarrierAccount instance.</returns> public async Task <CarrierAccount> GetCarrierAccount( string id) { var request = new EasyPostRequest("carrier_accounts/{id}"); request.AddUrlSegment("id", id); return(await Execute <CarrierAccount>(request)); }
/// <summary> /// Retrieve a Parcel from its id. /// </summary> /// <param name="id">String representing a Parcel. Starts with "prcl_".</param> /// <returns>Parcel instance.</returns> public async Task <Parcel> GetParcel( string id) { var request = new EasyPostRequest("parcels/{id}"); request.AddUrlSegment("id", id); return(await Execute <Parcel>(request)); }
/// <summary> /// Retrieve a Shipment from its id. /// </summary> /// <param name="id">String representing a Shipment. Starts with "shp_".</param> /// <returns>Shipment instance.</returns> public Task <Shipment> GetShipment( string id) { var request = new EasyPostRequest("shipments/{id}"); request.AddUrlSegment("id", id); return(Execute <Shipment>(request)); }
/// <summary> /// Cancel this pickup. /// </summary> /// <param name="id">Pickup id to cancel</param> /// <returns>Pickup instance.</returns> public async Task <Pickup> CancelPickp( string id) { var request = new EasyPostRequest("pickups/{id}/cancel", Method.POST); request.AddUrlSegment("id", id); return(await Execute <Pickup>(request)); }
/// <summary> /// Retrieve a Tracker from its id. /// </summary> /// <param name="id">String representing a Tracker. Starts with "trk_".</param> /// <returns>Tracker instance.</returns> public async Task <Tracker> GetTracker( string id) { var request = new EasyPostRequest("trackers/{id}"); request.AddUrlSegment("id", id); return(await Execute <Tracker>(request)); }
/// <summary> /// Send a refund request to the carrier the shipment was purchased from. /// </summary> /// <param name="id">The id of the shipment to refund</param> /// <returns>Shipment instance.</returns> public async Task <Shipment> RefundShipment( string id) { var request = new EasyPostRequest("shipments/{id}/refund"); request.AddUrlSegment("id", id); return(await Execute <Shipment>(request)); }
/// <summary> /// Retrieve a Pickup from its id. /// </summary> /// <param name="id">String representing a Pickup. Starts with "pickup_".</param> /// <returns>Pickup instance.</returns> public async Task <Pickup> GetPickup( string id) { var request = new EasyPostRequest("pickups/{id}"); request.AddUrlSegment("id", id); return(await Execute <Pickup>(request)); }
/// <summary> /// Retrieve a Event from its id. /// </summary> /// <param name="id">String representing a Event. Starts with "evt_".</param> /// <returns>EasyPost.Event instance.</returns> public async Task <Event> GetEvent( string id) { var request = new EasyPostRequest("events/{id}"); request.AddUrlSegment("id", id); return(await Execute <Event>(request)); }
/// <summary> /// Retrieve a CustomsInfo from its id. /// </summary> /// <param name="id">String representing a CustomsInfo. Starts with "cstinfo_".</param> /// <returns>CustomsInfo instance.</returns> public async Task <CustomsInfo> GetCustomsInfo( string id) { var request = new EasyPostRequest("customs_infos/{id}"); request.AddUrlSegment("id", id); return(await Execute <CustomsInfo>(request)); }
/// <summary> /// Retrieve an Address from its id. /// </summary> /// <param name="id">String representing an Address. Starts with "adr_".</param> /// <returns>EasyPost.Address instance.</returns> public Task <Address> GetAddress( string id) { var request = new EasyPostRequest("addresses/{id}"); request.AddUrlSegment("id", id); return(Execute <Address>(request)); }
/// <summary> /// Update the User associated with the api_key specified. /// </summary> /// <param name="user">User parameters to update</param> public async Task <User> UpdateUser( User user) { var request = new EasyPostRequest("users/{id}", Method.PUT); request.AddUrlSegment("id", user.Id); request.AddBody(user.AsDictionary(), "user"); return(await Execute <User>(request)); }
/// <summary> /// Update this CarrierAccount. /// </summary> /// <param name="carrierAccount">Carrier account details</param> /// <returns>CarrierAccount instance.</returns> public async Task <CarrierAccount> UpdateCarrierAccount( CarrierAccount carrierAccount) { var request = new EasyPostRequest("carrier_accounts/{id}", Method.PUT); request.AddUrlSegment("id", carrierAccount.Id); request.AddBody(carrierAccount.AsDictionary(), "carrier_account"); return(await Execute <CarrierAccount>(request)); }
/// <summary> /// Generate a barcode for this shipment. /// </summary> /// <param name="id">The id of the shipment to generate the stamp for</param> /// <returns>URL for the barcode</returns> public async Task <string> GenerateBarcode( string id) { var request = new EasyPostRequest("shipments/{id}/barcode"); request.AddUrlSegment("id", id); var response = await Execute <Shipment>(request); return(response.BarcodeUrl); }
/// <summary> /// Re-populate the rates property for this shipment /// </summary> /// <param name="shipment">The shipment to regenerate rates for</param> public async Task RegenerateRates( Shipment shipment) { var request = new EasyPostRequest("shipments/{id}/rates"); request.AddUrlSegment("id", shipment.Id); var response = await Execute <Shipment>(request); shipment.Rates = response.Rates; }
/// <summary> /// Generate a postage label for this shipment. /// </summary> /// <param name="id">The id of the shipment to generate the label for</param> /// <param name="fileFormat">Format to generate the label in. Valid formats: "pdf", "zpl" and "epl2".</param> /// <returns>Shipment instance.</returns> public async Task <Shipment> GenerateLabel( string id, string fileFormat) { var request = new EasyPostRequest("shipments/{id}/label"); request.AddUrlSegment("id", id); // This is a GET, but uses the request body, so use ParameterType.GetOrPost instead. request.AddParameter("file_format", fileFormat, ParameterType.GetOrPost); return(await Execute <Shipment>(request)); }
/// <summary> /// Buy a label for this shipment with the given rate. /// </summary> /// <param name="id">The id of the shipment to buy the label for</param> /// <param name="rateId">The id of the rate to purchase the shipment with.</param> /// <returns>Shipment instance.</returns> public async Task <Shipment> BuyShipment( string id, string rateId) { var request = new EasyPostRequest("shipments/{id}/buy", Method.POST); request.AddUrlSegment("id", id); request.AddBody(new Dictionary <string, object> { { "id", rateId } }, "rate"); return(await Execute <Shipment>(request)); }
/// <summary> /// Buy insurance for a shipment for the given amount. /// </summary> /// <param name="id">The id of the shipment to buy insurance for</param> /// <param name="amount">The amount to insure the shipment for. Currency is provided when creating a shipment.</param> /// <returns>Shipment instance.</returns> public async Task <Shipment> BuyInsuranceForShipment( string id, double amount) { var request = new EasyPostRequest("shipments/{id}/insure", Method.POST); request.AddUrlSegment("id", id); request.AddBody(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("amount", amount.ToString()) }); return(await Execute <Shipment>(request)); }
/// <summary> /// Create a Report. /// </summary> /// <param name="type">Type of the report</param> /// <param name="report">Report parameters. Valid fields: /// . StartDate /// . EndDate /// . IncludeChildren /// All invalid keys will be ignored. </param> /// <returns>Report instance.</returns> public async Task <Report> CreateReport( string type, Report report = null) { var request = new EasyPostRequest("reports/{type}", Method.POST); request.AddUrlSegment("type", type); if (report != null) { request.AddQueryString(report.AsDictionary()); } return(await Execute <Report>(request)); }
/// <summary> /// Purchase this pickup. /// </summary> /// <param name="id">Pickup id to purchase</param> /// <param name="carrier">The name of the carrier to purchase with.</param> /// <param name="service">The name of the service to purchase.</param> /// <returns>Pickup instance.</returns> public async Task <Pickup> BuyPickup( string id, string carrier, string service) { var request = new EasyPostRequest("pickups/{id}/buy", Method.POST); request.AddUrlSegment("id", id); request.AddBody(new List <KeyValuePair <string, string> >() { new KeyValuePair <string, string>("carrier", carrier), new KeyValuePair <string, string>("service", service) }); return(await Execute <Pickup>(request)); }
/// <summary> /// Remove shipments from the batch. /// </summary> /// <param name="id">Batch id to add the shipments to</param> /// <param name="shipmentIds">List of shipment ids to be removed.</param> /// <returns>Batch instance.</returns> public async Task <Batch> RemoveShipmentsFromBatch( string id, IEnumerable <string> shipmentIds) { var request = new EasyPostRequest("batches/{id}/remove_shipments", Method.POST); request.AddUrlSegment("id", id); var body = shipmentIds.Select(shipmentId => new Dictionary <string, object> { { "id", shipmentId } }).ToList(); request.AddBody(body, "shipments"); return(await Execute <Batch>(request)); }
/// <summary> /// Retrieve a User from its id. If no id is specified, it returns the user for the api_key specified. /// </summary> /// <param name="id">String representing a user. Starts with "user_".</param> /// <returns>User instance.</returns> public async Task <User> GetUser( string id = null) { EasyPostRequest request; if (id == null) { request = new EasyPostRequest("users"); } else { request = new EasyPostRequest("users/{id}"); request.AddUrlSegment("id", id); } return(await Execute <User>(request)); }
/// <summary> /// Get a paginated list of reports. /// </summary> /// <param name="type">Type of the report</param> /// <param name="options">Options for the pagination function</param> /// <returns>Instance of EasyPost.ScanForm</returns> public async Task <ReportList> ListReports( string type, ReportListOptions options = null) { var request = new EasyPostRequest("reports/{type}"); request.AddUrlSegment("type", type); if (options != null) { request.AddQueryString(options.AsDictionary()); } var reportList = await Execute <ReportList>(request); reportList.Options = options; reportList.Type = type; return(reportList); }
/// <summary> /// Verify an address. /// </summary> /// <returns>Address instance. Check message for verification failures.</returns> public async Task <Address> VerifyAddress( Address address, string carrier = null) { if (address.Id == null) { address = await CreateAddress(address); } var request = new EasyPostRequest("addresses/{id}/verify"); request.RootElement = "address"; request.AddUrlSegment("id", address.Id); if (carrier != null) { request.AddParameter("carrier", carrier, ParameterType.QueryString); } return(await Execute <Address>(request)); }
/// <summary> /// Asynchronously generate a label containing all of the Shipment labels belonging to the batch. /// </summary> /// <param name="id">Batch id to generate the label for</param> /// <param name="fileFormat">Format to generate the label in. Valid formats: "pdf", "zpl" and "epl2".</param> /// <param name="orderBy">Optional parameter to order the generated label. Ex: "reference DESC"</param> /// <returns>Batch instance.</returns> public async Task <Batch> GenerateLabelForBatch( string id, string fileFormat, string orderBy = null) { var request = new EasyPostRequest("batches/{id}/label", Method.POST); request.AddUrlSegment("id", id); var body = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("file_format", fileFormat) }; if (orderBy != null) { body.Add(new KeyValuePair <string, string>("order_by", orderBy)); } request.AddBody(body); return(await Execute <Batch>(request)); }
/// <summary> /// Buy a label for this shipment with the given rate. /// Optionally include insurance /// </summary> /// <param name="id">The id of the shipment to buy the label for</param> /// <param name="rateId">The id of the rate to purchase the shipment with.</param> /// <param name="insuranceValue">The value to insure the shipment for.</param> /// <returns>Shipment instance.</returns> public Task <Shipment> BuyShipment( string id, string rateId, double?insuranceValue = null) { var request = new EasyPostRequest("shipments/{id}/buy", Method.POST); request.AddUrlSegment("id", id); var parameters = new Dictionary <string, object> { { "rate", new Dictionary <string, object> { { "id", rateId } } } }; if (insuranceValue > 0) { parameters["insurance"] = insuranceValue.Value; } request.AddBody(parameters, ""); return(Execute <Shipment>(request)); }