# frozen_string_literal: true
require "peddler/api"
module Peddler
class << self
def shipping_v1(...)
API::ShippingV1.new(...)
end
end
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.
#
# @note This operation can make a static sandbox call.
# @param body [Hash]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def create_shipment(body, rate_limit: 5.0)
path = "/shipping/v1/shipments"
meter(rate_limit).post(path, body:)
end
# Return the entire shipment object for the shipmentId.
#
# @note This operation can make a static sandbox call.
# @param shipment_id [String]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def get_shipment(shipment_id, rate_limit: 5.0)
path = "/shipping/v1/shipments/#{shipment_id}"
meter(rate_limit).get(path)
end
# Cancel a shipment by the given shipmentId.
#
# @note This operation can make a static sandbox call.
# @param shipment_id [String]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def cancel_shipment(shipment_id, rate_limit: 5.0)
path = "/shipping/v1/shipments/#{shipment_id}/cancel"
meter(rate_limit).post(path)
end
# Purchase shipping labels based on a given rate.
#
# @note This operation can make a static sandbox call.
# @param shipment_id [String]
# @param body [Hash]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def purchase_labels(shipment_id, body, rate_limit: 5.0)
path = "/shipping/v1/shipments/#{shipment_id}/purchaseLabels"
meter(rate_limit).post(path, body:)
end
# Retrieve shipping label based on the shipment id and tracking id.
#
# @note This operation can make a static sandbox call.
# @param shipment_id [String]
# @param tracking_id [String]
# @param body [Hash]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def retrieve_shipping_label(shipment_id, tracking_id, body, rate_limit: 5.0)
path = "/shipping/v1/shipments/#{shipment_id}/containers/#{tracking_id}/label"
meter(rate_limit).post(path, body:)
end
# Purchase shipping labels.
#
# @note This operation can make a static sandbox call.
# @param body [Hash]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def purchase_shipment(body, rate_limit: 5.0)
path = "/shipping/v1/purchaseShipment"
meter(rate_limit).post(path, body:)
end
# Get service rates.
#
# @note This operation can make a static sandbox call.
# @param body [Hash]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def get_rates(body, rate_limit: 5.0)
path = "/shipping/v1/rates"
meter(rate_limit).post(path, body:)
end
# Verify if the current account is valid.
#
# @note This operation can make a static sandbox call.
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def get_account(rate_limit: 5.0)
path = "/shipping/v1/account"
meter(rate_limit).get(path)
end
# Return the tracking information of a shipment.
#
# @note This operation can make a static sandbox call.
# @param tracking_id [String]
# @param rate_limit [Float] Requests per second
# @return [Hash] The API response
def get_tracking_information(tracking_id, rate_limit: 1.0)
path = "/shipping/v1/tracking/#{tracking_id}"
meter(rate_limit).get(path)
end
end
end
end