Class: Peddler::API::ShippingV2

Inherits:
Peddler::API show all
Defined in:
lib/peddler/api/shipping_v2.rb

Overview

Amazon Shipping API

The Amazon Shipping API is designed to support outbound shipping use cases both for orders originating on Amazon-owned marketplaces as well as external channels/marketplaces. With these APIs, you can request shipping rates, create shipments, cancel shipments, and track shipments.

Instance Attribute Summary

Attributes inherited from Peddler::API

#access_token, #endpoint

Instance Method Summary collapse

Methods inherited from Peddler::API

#cannot_sandbox!, #endpoint_uri, #http, #initialize, #meter, #must_sandbox!, #retriable, #sandbox, #sandbox?, #use, #via

Constructor Details

This class inherits a constructor from Peddler::API

Instance Method Details

#cancel_shipment(shipment_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Cancels a purchased shipment. Returns an empty object if the shipment is successfully cancelled.

Parameters:

  • shipment_id (String)

    The shipment identifier originally returned by the purchaseShipment operation.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



144
145
146
147
148
# File 'lib/peddler/api/shipping_v2.rb', line 144

def cancel_shipment(shipment_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/shipments/#{shipment_id}/cancel"

  meter(rate_limit).put(path)
end

#direct_purchase_shipment(body, x_amzn_idempotency_key: nil, locale: nil, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Purchases the shipping service for a shipment using the best fit service offering. Returns purchase related details and documents.

Parameters:

  • body (Hash)
  • x_amzn_idempotency_key (String) (defaults to: nil)

    A unique value which the server uses to recognize subsequent retries of the same request.

  • locale (String) (defaults to: nil)

    The IETF Language Tag. Note that this only supports the primary language subtag with one secondary language subtag (i.e. en-US, fr-CA). The secondary language subtag is almost always a regional designation. This does not support additional subtags beyond the primary and secondary language subtags.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



47
48
49
50
51
52
53
54
# File 'lib/peddler/api/shipping_v2.rb', line 47

def direct_purchase_shipment(body, x_amzn_idempotency_key: nil, locale: nil, x_amzn_shipping_business_id: nil,
  rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/shipments/directPurchase"

  meter(rate_limit).post(path, body:)
end

#generate_collection_form(body, x_amzn_idempotency_key: nil, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

This API Call to generate the collection form.

Parameters:

  • body (Hash)
  • x_amzn_idempotency_key (String) (defaults to: nil)

    A unique value which the server uses to recognize subsequent retries of the same request.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



242
243
244
245
246
247
248
249
# File 'lib/peddler/api/shipping_v2.rb', line 242

def generate_collection_form(body, x_amzn_idempotency_key: nil, x_amzn_shipping_business_id: nil,
  rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/collectionForms"

  meter(rate_limit).post(path, body:)
end

#get_access_points(access_point_types, country_code, postal_code, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Returns a list of access points in proximity of input postal code.

Parameters:

  • access_point_types (Array<String>)
  • country_code (String)
  • postal_code (String)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



307
308
309
310
311
312
313
314
315
316
317
# File 'lib/peddler/api/shipping_v2.rb', line 307

def get_access_points(access_point_types, country_code, postal_code, x_amzn_shipping_business_id: nil,
  rate_limit: 80.0)
  path = "/shipping/v2/accessPoints"
  params = {
    "accessPointTypes" => access_point_types,
    "countryCode" => country_code,
    "postalCode" => postal_code,
  }.compact

  meter(rate_limit).get(path, params:)
end

#get_additional_inputs(request_token, rate_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a static sandbox call.

Returns the JSON schema to use for providing additional inputs when needed to purchase a shipping offering. Call the getAdditionalInputs operation when the response to a previous call to the getRates operation indicates that additional inputs are required for the rate (shipping offering) that you want to purchase.

Parameters:

  • request_token (String)

    The request token returned in the response to the getRates operation.

  • rate_id (String)

    The rate identifier for the shipping offering (rate) returned in the response to the getRates operation.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



162
163
164
165
166
167
168
169
170
# File 'lib/peddler/api/shipping_v2.rb', line 162

def get_additional_inputs(request_token, rate_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/shipments/additionalInputs/schema"
  params = {
    "requestToken" => request_token,
    "rateId" => rate_id,
  }.compact

  meter(rate_limit).get(path, params:)
end

#get_carrier_account_form_inputs(x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

This API will return a list of input schema required to register a shipper account with the carrier.

Parameters:

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



178
179
180
181
182
183
184
# File 'lib/peddler/api/shipping_v2.rb', line 178

def (x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/carrierAccountFormInputs"

  meter(rate_limit).get(path)
end

#get_carrier_accounts(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

This API will return Get all carrier accounts for a merchant.

Parameters:

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



193
194
195
196
197
198
199
# File 'lib/peddler/api/shipping_v2.rb', line 193

def get_carrier_accounts(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/carrierAccounts"

  meter(rate_limit).put(path, body:)
end

#get_collection_form(collection_form_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

This API reprint a collection form.

Parameters:

  • collection_form_id (String)

    collection form Id to reprint a collection.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



289
290
291
292
293
294
295
# File 'lib/peddler/api/shipping_v2.rb', line 289

def get_collection_form(collection_form_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/collectionForms/#{collection_form_id}"

  meter(rate_limit).get(path)
end

#get_collection_form_history(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

This API Call to get the history of the previously generated collection forms.

Parameters:

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



258
259
260
261
262
263
264
# File 'lib/peddler/api/shipping_v2.rb', line 258

def get_collection_form_history(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/collectionForms/history"

  meter(rate_limit).put(path, body:)
end

#get_rates(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Returns the available shipping service offerings.

Parameters:

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



28
29
30
31
32
# File 'lib/peddler/api/shipping_v2.rb', line 28

def get_rates(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/shipments/rates"

  meter(rate_limit).post(path, body:)
end

#get_shipment_documents(shipment_id, package_client_reference_id, format: nil, dpi: nil, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Returns the shipping documents associated with a package in a shipment.

Parameters:

  • shipment_id (String)

    The shipment identifier originally returned by the purchaseShipment operation.

  • package_client_reference_id (String)

    The package client reference identifier originally provided in the request body parameter for the getRates operation.

  • format (String) (defaults to: nil)

    The file format of the document. Must be one of the supported formats returned by the getRates operation.

  • dpi (Number) (defaults to: nil)

    The resolution of the document (for example, 300 means 300 dots per inch). Must be one of the supported resolutions returned in the response to the getRates operation.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



124
125
126
127
128
129
130
131
132
133
134
# File 'lib/peddler/api/shipping_v2.rb', line 124

def get_shipment_documents(shipment_id, package_client_reference_id, format: nil, dpi: nil,
  x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/shipments/#{shipment_id}/documents"
  params = {
    "packageClientReferenceId" => package_client_reference_id,
    "format" => format,
    "dpi" => dpi,
  }.compact

  meter(rate_limit).get(path, params:)
end

#get_tracking(tracking_id, carrier_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Returns tracking information for a purchased shipment.

Parameters:

  • tracking_id (String)

    A carrier-generated tracking identifier originally returned by the purchaseShipment operation.

  • carrier_id (String)

    A carrier identifier originally returned by the getRates operation for the selected rate.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



100
101
102
103
104
105
106
107
108
# File 'lib/peddler/api/shipping_v2.rb', line 100

def get_tracking(tracking_id, carrier_id, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/tracking"
  params = {
    "trackingId" => tracking_id,
    "carrierId" => carrier_id,
  }.compact

  meter(rate_limit).get(path, params:)
end

#get_unmanifested_shipments(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

This API Get all unmanifested carriers with shipment locations. Any locations which has unmanifested shipments with an eligible carrier for manifesting shall be returned.

Parameters:

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



274
275
276
277
278
279
280
# File 'lib/peddler/api/shipping_v2.rb', line 274

def get_unmanifested_shipments(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/unmanifestedShipments"

  meter(rate_limit).put(path, body:)
end

This API associates/links the specified carrier account with the merchant.

Parameters:

  • carrier_id (String)

    The unique identifier associated with the carrier account.

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



209
210
211
212
213
214
215
# File 'lib/peddler/api/shipping_v2.rb', line 209

def (carrier_id, body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/carrierAccounts/#{carrier_id}"

  meter(rate_limit).put(path, body:)
end

#one_click_shipment(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Purchases a shipping service identifier and returns purchase-related details and documents.

Parameters:

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



83
84
85
86
87
# File 'lib/peddler/api/shipping_v2.rb', line 83

def one_click_shipment(body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/oneClickShipment"

  meter(rate_limit).post(path, body:)
end

#purchase_shipment(body, x_amzn_idempotency_key: nil, x_amzn_shipping_business_id: nil, rate_limit: 80.0) ⇒ Hash

Note:

This operation can make a dynamic sandbox call.

Purchases a shipping service and returns purchase related details and documents. Note: You must complete the purchase within 10 minutes of rate creation by the shipping service provider. If you make the request after the 10 minutes have expired, you will receive an error response with the error code equal to "TOKEN_EXPIRED". If you receive this error response, you must get the rates for the shipment again.

Parameters:

  • body (Hash)
  • x_amzn_idempotency_key (String) (defaults to: nil)

    A unique value which the server uses to recognize subsequent retries of the same request.

  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



69
70
71
72
73
# File 'lib/peddler/api/shipping_v2.rb', line 69

def purchase_shipment(body, x_amzn_idempotency_key: nil, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  path = "/shipping/v2/shipments"

  meter(rate_limit).post(path, body:)
end

This API Unlink the specified carrier account with the merchant.

Parameters:

  • carrier_id (String)

    carrier Id to unlink with merchant.

  • body (Hash)
  • x_amzn_shipping_business_id (String) (defaults to: nil)

    Amazon shipping business to assume for this request. The default is AmazonShipping_UK.

  • rate_limit (Float) (defaults to: 80.0)

    Requests per second

Returns:

  • (Hash)

    The API response



225
226
227
228
229
230
231
# File 'lib/peddler/api/shipping_v2.rb', line 225

def (carrier_id, body, x_amzn_shipping_business_id: nil, rate_limit: 80.0)
  cannot_sandbox!

  path = "/shipping/v2/carrierAccounts/#{carrier_id}/unlink"

  meter(rate_limit).put(path, body:)
end