peddler 2.4.5 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +402 -140
- data/lib/peddler/api/amazon_warehousing_and_distribution_2024_05_09.rb +92 -0
- data/lib/peddler/api/aplus_content_2020_11_01.rb +246 -0
- data/lib/peddler/api/application_integrations_2024_04_01.rb +56 -0
- data/lib/peddler/api/application_management_2023_11_30.rb +35 -0
- data/lib/peddler/api/catalog_items_2020_12_01.rb +81 -0
- data/lib/peddler/api/catalog_items_2022_04_01.rb +93 -0
- data/lib/peddler/api/catalog_items_v0.rb +103 -0
- data/lib/peddler/api/data_kiosk_2023_11_15.rb +108 -0
- data/lib/peddler/api/easy_ship_2022_03_23.rb +127 -0
- data/lib/peddler/api/fba_inbound_eligibility_v1.rb +44 -0
- data/lib/peddler/api/fba_inventory_v1.rb +122 -0
- data/lib/peddler/api/feeds_2021_06_30.rb +122 -0
- data/lib/peddler/api/finances_2024_06_19.rb +50 -0
- data/lib/peddler/api/finances_v0.rb +148 -0
- data/lib/peddler/api/fulfillment_inbound_2024_03_20.rb +759 -0
- data/lib/peddler/api/fulfillment_inbound_v0.rb +352 -0
- data/lib/peddler/api/fulfillment_outbound_2020_07_01.rb +259 -0
- data/lib/peddler/api/invoices_2024_06_19.rb +180 -0
- data/lib/peddler/api/listings_items_2020_09_01.rb +95 -0
- data/lib/peddler/api/listings_items_2021_08_01.rb +170 -0
- data/lib/peddler/api/listings_restrictions_2021_08_01.rb +47 -0
- data/lib/peddler/api/merchant_fulfillment_v0.rb +80 -0
- data/lib/peddler/api/messaging_v1.rb +273 -0
- data/lib/peddler/api/notifications_v1.rb +145 -0
- data/lib/peddler/api/orders_v0.rb +279 -0
- data/lib/peddler/api/product_fees_v0.rb +77 -0
- data/lib/peddler/api/product_pricing_2022_05_01.rb +54 -0
- data/lib/peddler/api/product_pricing_v0.rb +162 -0
- data/lib/peddler/api/product_type_definitions_2020_09_01.rb +86 -0
- data/lib/peddler/api/replenishment_2022_11_07.rb +57 -0
- data/lib/peddler/api/reports_2021_06_30.rb +163 -0
- data/lib/peddler/api/sales_v1.rb +77 -0
- data/lib/peddler/api/sellers_v1.rb +45 -0
- data/lib/peddler/api/services_v1.rb +348 -0
- data/lib/peddler/api/shipment_invoicing_v0.rb +59 -0
- data/lib/peddler/api/shipping_v1.rb +132 -0
- data/lib/peddler/api/shipping_v2.rb +319 -0
- data/lib/peddler/api/solicitations_v1.rb +63 -0
- data/lib/peddler/api/supply_sources_2020_07_01.rb +100 -0
- data/lib/peddler/api/tokens_2021_03_01.rb +38 -0
- data/lib/peddler/api/uploads_2020_11_01.rb +50 -0
- data/lib/peddler/api/vendor_direct_fulfillment_inventory_v1.rb +32 -0
- data/lib/peddler/api/vendor_direct_fulfillment_orders_2021_12_28.rb +84 -0
- data/lib/peddler/api/vendor_direct_fulfillment_orders_v1.rb +84 -0
- data/lib/peddler/api/vendor_direct_fulfillment_payments_v1.rb +31 -0
- data/lib/peddler/api/vendor_direct_fulfillment_sandbox_test_data_2021_10_28.rb +45 -0
- data/lib/peddler/api/vendor_direct_fulfillment_shipping_2021_12_28.rb +203 -0
- data/lib/peddler/api/vendor_direct_fulfillment_shipping_v1.rb +189 -0
- data/lib/peddler/api/vendor_direct_fulfillment_transactions_2021_12_28.rb +32 -0
- data/lib/peddler/api/vendor_direct_fulfillment_transactions_v1.rb +32 -0
- data/lib/peddler/api/vendor_invoices_v1.rb +30 -0
- data/lib/peddler/api/vendor_orders_v1.rb +159 -0
- data/lib/peddler/api/vendor_shipments_v1.rb +132 -0
- data/lib/peddler/api/vendor_transaction_status_v1.rb +33 -0
- data/lib/peddler/api.rb +138 -0
- data/lib/peddler/endpoint.rb +51 -0
- data/lib/peddler/error.rb +31 -0
- data/lib/peddler/marketplace.rb +38 -68
- data/lib/peddler/token.rb +70 -0
- data/lib/peddler/version.rb +1 -1
- data/lib/peddler.rb +56 -1
- metadata +74 -80
- data/lib/mws/easy_ship/client.rb +0 -93
- data/lib/mws/easy_ship.rb +0 -3
- data/lib/mws/feeds/client.rb +0 -122
- data/lib/mws/feeds.rb +0 -3
- data/lib/mws/finances/client.rb +0 -82
- data/lib/mws/finances.rb +0 -3
- data/lib/mws/fulfillment_inbound_shipment/client.rb +0 -388
- data/lib/mws/fulfillment_inbound_shipment.rb +0 -3
- data/lib/mws/fulfillment_inventory/client.rb +0 -57
- data/lib/mws/fulfillment_inventory.rb +0 -3
- data/lib/mws/fulfillment_outbound_shipment/client.rb +0 -211
- data/lib/mws/fulfillment_outbound_shipment.rb +0 -3
- data/lib/mws/merchant_fulfillment/client.rb +0 -87
- data/lib/mws/merchant_fulfillment.rb +0 -3
- data/lib/mws/off_amazon_payments.rb +0 -3
- data/lib/mws/orders/client.rb +0 -120
- data/lib/mws/orders.rb +0 -3
- data/lib/mws/products/client.rb +0 -268
- data/lib/mws/products.rb +0 -3
- data/lib/mws/recommendations/client.rb +0 -72
- data/lib/mws/recommendations.rb +0 -3
- data/lib/mws/reports/client.rb +0 -236
- data/lib/mws/reports.rb +0 -3
- data/lib/mws/sellers/client.rb +0 -44
- data/lib/mws/sellers.rb +0 -3
- data/lib/mws/shipment_invoicing/client.rb +0 -74
- data/lib/mws/shipment_invoicing.rb +0 -3
- data/lib/mws/subscriptions/client.rb +0 -179
- data/lib/mws/subscriptions.rb +0 -3
- data/lib/mws.rb +0 -29
- data/lib/peddler/client.rb +0 -159
- data/lib/peddler/errors/builder.rb +0 -64
- data/lib/peddler/errors/class_generator.rb +0 -40
- data/lib/peddler/errors/error.rb +0 -45
- data/lib/peddler/errors/parser.rb +0 -28
- data/lib/peddler/flat_file_parser.rb +0 -56
- data/lib/peddler/headers.rb +0 -102
- data/lib/peddler/operation.rb +0 -78
- data/lib/peddler/parser.rb +0 -33
- data/lib/peddler/structured_list.rb +0 -23
- data/lib/peddler/vcr_matcher.rb +0 -97
- data/lib/peddler/xml_parser.rb +0 -38
- data/lib/peddler/xml_response_parser.rb +0 -25
@@ -0,0 +1,348 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "peddler/api"
|
4
|
+
|
5
|
+
module Peddler
|
6
|
+
class << self
|
7
|
+
def services_v1(...)
|
8
|
+
API::ServicesV1.new(...)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class API
|
13
|
+
# Selling Partner API for Services
|
14
|
+
#
|
15
|
+
# With the Services API, you can build applications that help service providers get and modify their service orders
|
16
|
+
# and manage their resources.
|
17
|
+
class ServicesV1 < API
|
18
|
+
# Gets details of service job indicated by the provided `serviceJobID`.
|
19
|
+
#
|
20
|
+
# @note This operation can make a static sandbox call.
|
21
|
+
# @param service_job_id [String] A service job identifier.
|
22
|
+
# @param rate_limit [Float] Requests per second
|
23
|
+
# @return [Hash] The API response
|
24
|
+
def get_service_job_by_service_job_id(service_job_id, rate_limit: 20.0)
|
25
|
+
path = "/service/v1/serviceJobs/#{service_job_id}"
|
26
|
+
|
27
|
+
meter(rate_limit).get(path)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Cancels the service job indicated by the service job identifier specified.
|
31
|
+
#
|
32
|
+
# @note This operation can make a static sandbox call.
|
33
|
+
# @param service_job_id [String] An Amazon defined service job identifier.
|
34
|
+
# @param cancellation_reason_code [String] A cancel reason code that specifies the reason for cancelling a service
|
35
|
+
# job.
|
36
|
+
# @param rate_limit [Float] Requests per second
|
37
|
+
# @return [Hash] The API response
|
38
|
+
def cancel_service_job_by_service_job_id(service_job_id, cancellation_reason_code, rate_limit: 5.0)
|
39
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/cancellations"
|
40
|
+
params = {
|
41
|
+
"cancellationReasonCode" => cancellation_reason_code,
|
42
|
+
}.compact
|
43
|
+
|
44
|
+
meter(rate_limit).put(path, params:)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Completes the service job indicated by the service job identifier specified.
|
48
|
+
#
|
49
|
+
# @note This operation can make a static sandbox call.
|
50
|
+
# @param service_job_id [String] An Amazon defined service job identifier.
|
51
|
+
# @param rate_limit [Float] Requests per second
|
52
|
+
# @return [Hash] The API response
|
53
|
+
def complete_service_job_by_service_job_id(service_job_id, rate_limit: 5.0)
|
54
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/completions"
|
55
|
+
|
56
|
+
meter(rate_limit).put(path)
|
57
|
+
end
|
58
|
+
|
59
|
+
# Gets service job details for the specified filter query.
|
60
|
+
#
|
61
|
+
# @note This operation can make a static sandbox call.
|
62
|
+
# @param service_order_ids [Array<String>] List of service order ids for the query you want to perform.Max values
|
63
|
+
# supported 20.
|
64
|
+
# @param service_job_status [Array<String>] A list of one or more job status by which to filter the list of jobs.
|
65
|
+
# @param page_token [String] String returned in the response of your previous request.
|
66
|
+
# @param page_size [Integer] A non-negative integer that indicates the maximum number of jobs to return in the
|
67
|
+
# list, Value must be 1 - 20. Default 20.
|
68
|
+
# @param sort_field [String] Sort fields on which you want to sort the output.
|
69
|
+
# @param sort_order [String] Sort order for the query you want to perform.
|
70
|
+
# @param created_after [String] A date used for selecting jobs created at or after a specified time. Must be in
|
71
|
+
# ISO 8601 format. Required if `LastUpdatedAfter` is not specified. Specifying both `CreatedAfter` and
|
72
|
+
# `LastUpdatedAfter` returns an error.
|
73
|
+
# @param created_before [String] A date used for selecting jobs created at or before a specified time. Must be in
|
74
|
+
# ISO 8601 format.
|
75
|
+
# @param last_updated_after [String] A date used for selecting jobs updated at or after a specified time. Must be
|
76
|
+
# in ISO 8601 format. Required if `createdAfter` is not specified. Specifying both `CreatedAfter` and
|
77
|
+
# `LastUpdatedAfter` returns an error.
|
78
|
+
# @param last_updated_before [String] A date used for selecting jobs updated at or before a specified time. Must
|
79
|
+
# be in ISO 8601 format.
|
80
|
+
# @param schedule_start_date [String] A date used for filtering jobs schedules at or after a specified time. Must
|
81
|
+
# be in ISO 8601 format. Schedule end date should not be earlier than schedule start date.
|
82
|
+
# @param schedule_end_date [String] A date used for filtering jobs schedules at or before a specified time. Must
|
83
|
+
# be in ISO 8601 format. Schedule end date should not be earlier than schedule start date.
|
84
|
+
# @param marketplace_ids [Array<String>] Used to select jobs that were placed in the specified marketplaces.
|
85
|
+
# @param asins [Array<String>] List of Amazon Standard Identification Numbers (ASIN) of the items. Max values
|
86
|
+
# supported is 20.
|
87
|
+
# @param required_skills [Array<String>] A defined set of related knowledge, skills, experience, tools, materials,
|
88
|
+
# and work processes common to service delivery for a set of products and/or service scenarios. Max values
|
89
|
+
# supported is 20.
|
90
|
+
# @param store_ids [Array<String>] List of Amazon-defined identifiers for the region scope. Max values supported
|
91
|
+
# is 50.
|
92
|
+
# @param rate_limit [Float] Requests per second
|
93
|
+
# @return [Hash] The API response
|
94
|
+
def get_service_jobs(marketplace_ids, service_order_ids: nil, service_job_status: nil, page_token: nil,
|
95
|
+
page_size: 20, sort_field: nil, sort_order: nil, created_after: nil, created_before: nil,
|
96
|
+
last_updated_after: nil, last_updated_before: nil, schedule_start_date: nil, schedule_end_date: nil, asins: nil,
|
97
|
+
required_skills: nil, store_ids: nil, rate_limit: 10.0)
|
98
|
+
path = "/service/v1/serviceJobs"
|
99
|
+
params = {
|
100
|
+
"serviceOrderIds" => service_order_ids,
|
101
|
+
"serviceJobStatus" => service_job_status,
|
102
|
+
"pageToken" => page_token,
|
103
|
+
"pageSize" => page_size,
|
104
|
+
"sortField" => sort_field,
|
105
|
+
"sortOrder" => sort_order,
|
106
|
+
"createdAfter" => created_after,
|
107
|
+
"createdBefore" => created_before,
|
108
|
+
"lastUpdatedAfter" => last_updated_after,
|
109
|
+
"lastUpdatedBefore" => last_updated_before,
|
110
|
+
"scheduleStartDate" => schedule_start_date,
|
111
|
+
"scheduleEndDate" => schedule_end_date,
|
112
|
+
"marketplaceIds" => marketplace_ids,
|
113
|
+
"asins" => asins,
|
114
|
+
"requiredSkills" => required_skills,
|
115
|
+
"storeIds" => store_ids,
|
116
|
+
}.compact
|
117
|
+
|
118
|
+
meter(rate_limit).get(path, params:)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Adds an appointment to the service job indicated by the service job identifier specified.
|
122
|
+
#
|
123
|
+
# @note This operation can make a static sandbox call.
|
124
|
+
# @param service_job_id [String] An Amazon defined service job identifier.
|
125
|
+
# @param body [Hash] Add appointment operation input details.
|
126
|
+
# @param rate_limit [Float] Requests per second
|
127
|
+
# @return [Hash] The API response
|
128
|
+
def add_appointment_for_service_job_by_service_job_id(service_job_id, body, rate_limit: 5.0)
|
129
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/appointments"
|
130
|
+
|
131
|
+
meter(rate_limit).post(path, body:)
|
132
|
+
end
|
133
|
+
|
134
|
+
# Reschedules an appointment for the service job indicated by the service job identifier specified.
|
135
|
+
#
|
136
|
+
# @note This operation can make a static sandbox call.
|
137
|
+
# @param service_job_id [String] An Amazon defined service job identifier.
|
138
|
+
# @param appointment_id [String] An existing appointment identifier for the Service Job.
|
139
|
+
# @param body [Hash] Reschedule appointment operation input details.
|
140
|
+
# @param rate_limit [Float] Requests per second
|
141
|
+
# @return [Hash] The API response
|
142
|
+
def reschedule_appointment_for_service_job_by_service_job_id(service_job_id, appointment_id, body,
|
143
|
+
rate_limit: 5.0)
|
144
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/appointments/#{appointment_id}"
|
145
|
+
|
146
|
+
meter(rate_limit).post(path, body:)
|
147
|
+
end
|
148
|
+
|
149
|
+
# Assigns new resource(s) or overwrite/update the existing one(s) to a service job appointment.
|
150
|
+
#
|
151
|
+
# @note This operation can make a static sandbox call.
|
152
|
+
# @param service_job_id [String] An Amazon-defined service job identifier. Get this value by calling the
|
153
|
+
# `getServiceJobs` operation of the Services API.
|
154
|
+
# @param appointment_id [String] An Amazon-defined identifier of active service job appointment.
|
155
|
+
# @param body [Hash]
|
156
|
+
# @param rate_limit [Float] Requests per second
|
157
|
+
# @return [Hash] The API response
|
158
|
+
def assign_appointment_resources(service_job_id, appointment_id, body, rate_limit: 1.0)
|
159
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/appointments/#{appointment_id}/resources"
|
160
|
+
|
161
|
+
meter(rate_limit).put(path, body:)
|
162
|
+
end
|
163
|
+
|
164
|
+
# Updates the appointment fulfillment data related to a given `jobID` and `appointmentID`.
|
165
|
+
#
|
166
|
+
# @note This operation can make a static sandbox call.
|
167
|
+
# @param service_job_id [String] An Amazon-defined service job identifier. Get this value by calling the
|
168
|
+
# `getServiceJobs` operation of the Services API.
|
169
|
+
# @param appointment_id [String] An Amazon-defined identifier of active service job appointment.
|
170
|
+
# @param body [Hash] Appointment fulfillment data collection details.
|
171
|
+
# @param rate_limit [Float] Requests per second
|
172
|
+
# @return [Hash] The API response
|
173
|
+
def set_appointment_fulfillment_data(service_job_id, appointment_id, body, rate_limit: 5.0)
|
174
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/appointments/#{appointment_id}/fulfillment"
|
175
|
+
|
176
|
+
meter(rate_limit).put(path, body:)
|
177
|
+
end
|
178
|
+
|
179
|
+
# Provides capacity slots in a format similar to availability records.
|
180
|
+
#
|
181
|
+
# @note This operation can make a static sandbox call.
|
182
|
+
# @param resource_id [String] Resource Identifier.
|
183
|
+
# @param body [Hash] Request body.
|
184
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
185
|
+
# @param next_page_token [String] Next page token returned in the response of your previous request.
|
186
|
+
# @param rate_limit [Float] Requests per second
|
187
|
+
# @return [Hash] The API response
|
188
|
+
def get_range_slot_capacity(resource_id, body, marketplace_ids, next_page_token: nil, rate_limit: 5.0)
|
189
|
+
path = "/service/v1/serviceResources/#{resource_id}/capacity/range"
|
190
|
+
params = {
|
191
|
+
"marketplaceIds" => marketplace_ids,
|
192
|
+
"nextPageToken" => next_page_token,
|
193
|
+
}.compact
|
194
|
+
|
195
|
+
meter(rate_limit).post(path, body:, params:)
|
196
|
+
end
|
197
|
+
|
198
|
+
# Provides capacity in fixed-size slots.
|
199
|
+
#
|
200
|
+
# @note This operation can make a static sandbox call.
|
201
|
+
# @param resource_id [String] Resource Identifier.
|
202
|
+
# @param body [Hash] Request body.
|
203
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
204
|
+
# @param next_page_token [String] Next page token returned in the response of your previous request.
|
205
|
+
# @param rate_limit [Float] Requests per second
|
206
|
+
# @return [Hash] The API response
|
207
|
+
def get_fixed_slot_capacity(resource_id, body, marketplace_ids, next_page_token: nil, rate_limit: 5.0)
|
208
|
+
path = "/service/v1/serviceResources/#{resource_id}/capacity/fixed"
|
209
|
+
params = {
|
210
|
+
"marketplaceIds" => marketplace_ids,
|
211
|
+
"nextPageToken" => next_page_token,
|
212
|
+
}.compact
|
213
|
+
|
214
|
+
meter(rate_limit).post(path, body:, params:)
|
215
|
+
end
|
216
|
+
|
217
|
+
# Update the schedule of the given resource.
|
218
|
+
#
|
219
|
+
# @note This operation can make a static sandbox call.
|
220
|
+
# @param resource_id [String] Resource (store) Identifier
|
221
|
+
# @param body [Hash] Schedule details
|
222
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
223
|
+
# @param rate_limit [Float] Requests per second
|
224
|
+
# @return [Hash] The API response
|
225
|
+
def update_schedule(resource_id, body, marketplace_ids, rate_limit: 5.0)
|
226
|
+
path = "/service/v1/serviceResources/#{resource_id}/schedules"
|
227
|
+
params = {
|
228
|
+
"marketplaceIds" => marketplace_ids,
|
229
|
+
}.compact
|
230
|
+
|
231
|
+
meter(rate_limit).put(path, body:, params:)
|
232
|
+
end
|
233
|
+
|
234
|
+
# Create a reservation.
|
235
|
+
#
|
236
|
+
# @note This operation can make a static sandbox call.
|
237
|
+
# @param body [Hash] Reservation details
|
238
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
239
|
+
# @param rate_limit [Float] Requests per second
|
240
|
+
# @return [Hash] The API response
|
241
|
+
def create_reservation(body, marketplace_ids, rate_limit: 5.0)
|
242
|
+
path = "/service/v1/reservation"
|
243
|
+
params = {
|
244
|
+
"marketplaceIds" => marketplace_ids,
|
245
|
+
}.compact
|
246
|
+
|
247
|
+
meter(rate_limit).post(path, body:, params:)
|
248
|
+
end
|
249
|
+
|
250
|
+
# Update a reservation.
|
251
|
+
#
|
252
|
+
# @note This operation can make a static sandbox call.
|
253
|
+
# @param reservation_id [String] Reservation Identifier
|
254
|
+
# @param body [Hash] Reservation details
|
255
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
256
|
+
# @param rate_limit [Float] Requests per second
|
257
|
+
# @return [Hash] The API response
|
258
|
+
def update_reservation(reservation_id, body, marketplace_ids, rate_limit: 5.0)
|
259
|
+
path = "/service/v1/reservation/#{reservation_id}"
|
260
|
+
params = {
|
261
|
+
"marketplaceIds" => marketplace_ids,
|
262
|
+
}.compact
|
263
|
+
|
264
|
+
meter(rate_limit).put(path, body:, params:)
|
265
|
+
end
|
266
|
+
|
267
|
+
# Cancel a reservation.
|
268
|
+
#
|
269
|
+
# @note This operation can make a static sandbox call.
|
270
|
+
# @param reservation_id [String] Reservation Identifier
|
271
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
272
|
+
# @param rate_limit [Float] Requests per second
|
273
|
+
# @return [Hash] The API response
|
274
|
+
def cancel_reservation(reservation_id, marketplace_ids, rate_limit: 5.0)
|
275
|
+
path = "/service/v1/reservation/#{reservation_id}"
|
276
|
+
params = {
|
277
|
+
"marketplaceIds" => marketplace_ids,
|
278
|
+
}.compact
|
279
|
+
|
280
|
+
meter(rate_limit).delete(path, params:)
|
281
|
+
end
|
282
|
+
|
283
|
+
# Gets appointment slots for the service associated with the service job id specified.
|
284
|
+
#
|
285
|
+
# @note This operation can make a static sandbox call.
|
286
|
+
# @param service_job_id [String] A service job identifier to retrive appointment slots for associated service.
|
287
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace in which the resource operates.
|
288
|
+
# @param start_time [String] A time from which the appointment slots will be retrieved. The specified time must be
|
289
|
+
# in ISO 8601 format. If `startTime` is provided, `endTime` should also be provided. Default value is as per
|
290
|
+
# business configuration.
|
291
|
+
# @param end_time [String] A time up to which the appointment slots will be retrieved. The specified time must be
|
292
|
+
# in ISO 8601 format. If `endTime` is provided, `startTime` should also be provided. Default value is as per
|
293
|
+
# business configuration. Maximum range of appointment slots can be 90 days.
|
294
|
+
# @param rate_limit [Float] Requests per second
|
295
|
+
# @return [Hash] The API response
|
296
|
+
def get_appointmment_slots_by_job_id(service_job_id, marketplace_ids, start_time: nil, end_time: nil,
|
297
|
+
rate_limit: 5.0)
|
298
|
+
path = "/service/v1/serviceJobs/#{service_job_id}/appointmentSlots"
|
299
|
+
params = {
|
300
|
+
"marketplaceIds" => marketplace_ids,
|
301
|
+
"startTime" => start_time,
|
302
|
+
"endTime" => end_time,
|
303
|
+
}.compact
|
304
|
+
|
305
|
+
meter(rate_limit).get(path, params:)
|
306
|
+
end
|
307
|
+
|
308
|
+
# Gets appointment slots as per the service context specified.
|
309
|
+
#
|
310
|
+
# @note This operation can make a static sandbox call.
|
311
|
+
# @param asin [String] ASIN associated with the service.
|
312
|
+
# @param store_id [String] Store identifier defining the region scope to retrive appointment slots.
|
313
|
+
# @param marketplace_ids [Array<String>] An identifier for the marketplace for which appointment slots are queried
|
314
|
+
# @param start_time [String] A time from which the appointment slots will be retrieved. The specified time must be
|
315
|
+
# in ISO 8601 format. If `startTime` is provided, `endTime` should also be provided. Default value is as per
|
316
|
+
# business configuration.
|
317
|
+
# @param end_time [String] A time up to which the appointment slots will be retrieved. The specified time must be
|
318
|
+
# in ISO 8601 format. If `endTime` is provided, `startTime` should also be provided. Default value is as per
|
319
|
+
# business configuration. Maximum range of appointment slots can be 90 days.
|
320
|
+
# @param rate_limit [Float] Requests per second
|
321
|
+
# @return [Hash] The API response
|
322
|
+
def get_appointment_slots(asin, store_id, marketplace_ids, start_time: nil, end_time: nil, rate_limit: 20.0)
|
323
|
+
path = "/service/v1/appointmentSlots"
|
324
|
+
params = {
|
325
|
+
"asin" => asin,
|
326
|
+
"storeId" => store_id,
|
327
|
+
"marketplaceIds" => marketplace_ids,
|
328
|
+
"startTime" => start_time,
|
329
|
+
"endTime" => end_time,
|
330
|
+
}.compact
|
331
|
+
|
332
|
+
meter(rate_limit).get(path, params:)
|
333
|
+
end
|
334
|
+
|
335
|
+
# Creates an upload destination.
|
336
|
+
#
|
337
|
+
# @note This operation can make a static sandbox call.
|
338
|
+
# @param body [Hash] Upload document operation input details.
|
339
|
+
# @param rate_limit [Float] Requests per second
|
340
|
+
# @return [Hash] The API response
|
341
|
+
def create_service_document_upload_destination(body, rate_limit: 5.0)
|
342
|
+
path = "/service/v1/documents"
|
343
|
+
|
344
|
+
meter(rate_limit).post(path, body:)
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "peddler/api"
|
4
|
+
|
5
|
+
module Peddler
|
6
|
+
class << self
|
7
|
+
def shipment_invoicing_v0(...)
|
8
|
+
API::ShipmentInvoicingV0.new(...)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class API
|
13
|
+
# Selling Partner API for Shipment Invoicing
|
14
|
+
#
|
15
|
+
# The Selling Partner API for Shipment Invoicing helps you programmatically retrieve shipment invoice information in
|
16
|
+
# the Brazil marketplace for a selling partner’s Fulfillment by Amazon (FBA) orders.
|
17
|
+
class ShipmentInvoicingV0 < API
|
18
|
+
# Returns the shipment details required to issue an invoice for the specified shipment.
|
19
|
+
#
|
20
|
+
# @note This operation can make a static sandbox call.
|
21
|
+
# @param shipment_id [String] The identifier for the shipment. Get this value from the FBAOutboundShipmentStatus
|
22
|
+
# notification. For information about subscribing to notifications, see the
|
23
|
+
# {https://developer-docs.amazon.com/sp-api/docs/notifications-api-v1-use-case-guide Notifications API Use Case
|
24
|
+
# Guide}.
|
25
|
+
# @param rate_limit [Float] Requests per second
|
26
|
+
# @return [Hash] The API response
|
27
|
+
def get_shipment_details(shipment_id, rate_limit: 1.133)
|
28
|
+
path = "/fba/outbound/brazil/v0/shipments/#{shipment_id}"
|
29
|
+
|
30
|
+
meter(rate_limit).get(path)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Submits a shipment invoice document for a given shipment.
|
34
|
+
#
|
35
|
+
# @note This operation can make a static sandbox call.
|
36
|
+
# @param shipment_id [String] The identifier for the shipment.
|
37
|
+
# @param body [Hash]
|
38
|
+
# @param rate_limit [Float] Requests per second
|
39
|
+
# @return [Hash] The API response
|
40
|
+
def submit_invoice(shipment_id, body, rate_limit: 1.133)
|
41
|
+
path = "/fba/outbound/brazil/v0/shipments/#{shipment_id}/invoice"
|
42
|
+
|
43
|
+
meter(rate_limit).post(path, body:)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns the invoice status for the shipment you specify.
|
47
|
+
#
|
48
|
+
# @note This operation can make a static sandbox call.
|
49
|
+
# @param shipment_id [String] The shipment identifier for the shipment.
|
50
|
+
# @param rate_limit [Float] Requests per second
|
51
|
+
# @return [Hash] The API response
|
52
|
+
def get_invoice_status(shipment_id, rate_limit: 1.133)
|
53
|
+
path = "/fba/outbound/brazil/v0/shipments/#{shipment_id}/invoice/status"
|
54
|
+
|
55
|
+
meter(rate_limit).get(path)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "peddler/api"
|
4
|
+
|
5
|
+
module Peddler
|
6
|
+
class << self
|
7
|
+
def shipping_v1(...)
|
8
|
+
API::ShippingV1.new(...)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class API
|
13
|
+
# Selling Partner API for Shipping
|
14
|
+
#
|
15
|
+
# Provides programmatic access to Amazon Shipping APIs. **Note:** If you are new to the Amazon Shipping API, refer
|
16
|
+
# to the latest version of <a
|
17
|
+
# href="https://developer-docs.amazon.com/amazon-shipping/docs/shipping-api-v2-reference">Amazon Shipping API
|
18
|
+
# (v2)</a> on the <a href="https://developer-docs.amazon.com/amazon-shipping/">Amazon Shipping Developer
|
19
|
+
# Documentation</a> site.
|
20
|
+
class ShippingV1 < API
|
21
|
+
# Create a new shipment.
|
22
|
+
#
|
23
|
+
# @note This operation can make a static sandbox call.
|
24
|
+
# @param body [Hash]
|
25
|
+
# @param rate_limit [Float] Requests per second
|
26
|
+
# @return [Hash] The API response
|
27
|
+
def create_shipment(body, rate_limit: 5.0)
|
28
|
+
path = "/shipping/v1/shipments"
|
29
|
+
|
30
|
+
meter(rate_limit).post(path, body:)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Return the entire shipment object for the shipmentId.
|
34
|
+
#
|
35
|
+
# @note This operation can make a static sandbox call.
|
36
|
+
# @param shipment_id [String]
|
37
|
+
# @param rate_limit [Float] Requests per second
|
38
|
+
# @return [Hash] The API response
|
39
|
+
def get_shipment(shipment_id, rate_limit: 5.0)
|
40
|
+
path = "/shipping/v1/shipments/#{shipment_id}"
|
41
|
+
|
42
|
+
meter(rate_limit).get(path)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Cancel a shipment by the given shipmentId.
|
46
|
+
#
|
47
|
+
# @note This operation can make a static sandbox call.
|
48
|
+
# @param shipment_id [String]
|
49
|
+
# @param rate_limit [Float] Requests per second
|
50
|
+
# @return [Hash] The API response
|
51
|
+
def cancel_shipment(shipment_id, rate_limit: 5.0)
|
52
|
+
path = "/shipping/v1/shipments/#{shipment_id}/cancel"
|
53
|
+
|
54
|
+
meter(rate_limit).post(path)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Purchase shipping labels based on a given rate.
|
58
|
+
#
|
59
|
+
# @note This operation can make a static sandbox call.
|
60
|
+
# @param shipment_id [String]
|
61
|
+
# @param body [Hash]
|
62
|
+
# @param rate_limit [Float] Requests per second
|
63
|
+
# @return [Hash] The API response
|
64
|
+
def purchase_labels(shipment_id, body, rate_limit: 5.0)
|
65
|
+
path = "/shipping/v1/shipments/#{shipment_id}/purchaseLabels"
|
66
|
+
|
67
|
+
meter(rate_limit).post(path, body:)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Retrieve shipping label based on the shipment id and tracking id.
|
71
|
+
#
|
72
|
+
# @note This operation can make a static sandbox call.
|
73
|
+
# @param shipment_id [String]
|
74
|
+
# @param tracking_id [String]
|
75
|
+
# @param body [Hash]
|
76
|
+
# @param rate_limit [Float] Requests per second
|
77
|
+
# @return [Hash] The API response
|
78
|
+
def retrieve_shipping_label(shipment_id, tracking_id, body, rate_limit: 5.0)
|
79
|
+
path = "/shipping/v1/shipments/#{shipment_id}/containers/#{tracking_id}/label"
|
80
|
+
|
81
|
+
meter(rate_limit).post(path, body:)
|
82
|
+
end
|
83
|
+
|
84
|
+
# Purchase shipping labels.
|
85
|
+
#
|
86
|
+
# @note This operation can make a static sandbox call.
|
87
|
+
# @param body [Hash]
|
88
|
+
# @param rate_limit [Float] Requests per second
|
89
|
+
# @return [Hash] The API response
|
90
|
+
def purchase_shipment(body, rate_limit: 5.0)
|
91
|
+
path = "/shipping/v1/purchaseShipment"
|
92
|
+
|
93
|
+
meter(rate_limit).post(path, body:)
|
94
|
+
end
|
95
|
+
|
96
|
+
# Get service rates.
|
97
|
+
#
|
98
|
+
# @note This operation can make a static sandbox call.
|
99
|
+
# @param body [Hash]
|
100
|
+
# @param rate_limit [Float] Requests per second
|
101
|
+
# @return [Hash] The API response
|
102
|
+
def get_rates(body, rate_limit: 5.0)
|
103
|
+
path = "/shipping/v1/rates"
|
104
|
+
|
105
|
+
meter(rate_limit).post(path, body:)
|
106
|
+
end
|
107
|
+
|
108
|
+
# Verify if the current account is valid.
|
109
|
+
#
|
110
|
+
# @note This operation can make a static sandbox call.
|
111
|
+
# @param rate_limit [Float] Requests per second
|
112
|
+
# @return [Hash] The API response
|
113
|
+
def get_account(rate_limit: 5.0)
|
114
|
+
path = "/shipping/v1/account"
|
115
|
+
|
116
|
+
meter(rate_limit).get(path)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Return the tracking information of a shipment.
|
120
|
+
#
|
121
|
+
# @note This operation can make a static sandbox call.
|
122
|
+
# @param tracking_id [String]
|
123
|
+
# @param rate_limit [Float] Requests per second
|
124
|
+
# @return [Hash] The API response
|
125
|
+
def get_tracking_information(tracking_id, rate_limit: 1.0)
|
126
|
+
path = "/shipping/v1/tracking/#{tracking_id}"
|
127
|
+
|
128
|
+
meter(rate_limit).get(path)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|