# frozen_string_literal: true require "peddler/api" module Peddler class API # Selling Partner API for Shipping # # Provides programmatic access to Amazon Shipping APIs. **Note:** If you are new to the Amazon Shipping API, refer # to the latest version of Amazon Shipping API # (v2) on the Amazon Shipping Developer # Documentation site. class ShippingV1 < API # Create a new shipment. # # @param [Hash] body # @return [Hash] The API response def create_shipment(body) path = "/shipping/v1/shipments" rate_limit(5.0).post(path, body:) end # Return the entire shipment object for the shipmentId. # # @param [String] shipment_id # @return [Hash] The API response def get_shipment(shipment_id) path = "/shipping/v1/shipments/#{shipment_id}" rate_limit(5.0).get(path) end # Cancel a shipment by the given shipmentId. # # @param [String] shipment_id # @return [Hash] The API response def cancel_shipment(shipment_id) path = "/shipping/v1/shipments/#{shipment_id}/cancel" rate_limit(5.0).post(path) end # Purchase shipping labels based on a given rate. # # @param [String] shipment_id # @param [Hash] body # @return [Hash] The API response def purchase_labels(shipment_id, body) path = "/shipping/v1/shipments/#{shipment_id}/purchaseLabels" rate_limit(5.0).post(path, body:) end # Retrieve shipping label based on the shipment id and tracking id. # # @param [String] shipment_id # @param [String] tracking_id # @param [Hash] body # @return [Hash] The API response def retrieve_shipping_label(shipment_id, tracking_id, body) path = "/shipping/v1/shipments/#{shipment_id}/containers/#{tracking_id}/label" rate_limit(5.0).post(path, body:) end # Purchase shipping labels. # # @param [Hash] body # @return [Hash] The API response def purchase_shipment(body) path = "/shipping/v1/purchaseShipment" rate_limit(5.0).post(path, body:) end # Get service rates. # # @param [Hash] body # @return [Hash] The API response def get_rates(body) path = "/shipping/v1/rates" rate_limit(5.0).post(path, body:) end # Verify if the current account is valid. # @return [Hash] The API response def get_account path = "/shipping/v1/account" rate_limit(5.0).get(path) end # Return the tracking information of a shipment. # # @param [String] tracking_id # @return [Hash] The API response def get_tracking_information(tracking_id) path = "/shipping/v1/tracking/#{tracking_id}" rate_limit(1.0).get(path) end end end end