Code Monkey home page Code Monkey logo

ruby-mws's Introduction

ruby-mws

by Erik Lyngved

Read me!

ruby-mws is a Ruby gem that wraps the Amazon Marketplace Web Service (RubyMWS) API. Right now it only supports Amazon's Order and Inventory APIs.

I made this gem for my own purposes, and it's not fully featured. Pull requests or bug reports are always welcome.

Quick Start

To quickly test your connection to the service without credentials, you can ping the server, which returns server time in UTC:

RubyMWS::Base.server_time

Initialization

Pass in your developer account credentials. All four params below are required.

mws = RubyMWS.new (:aws_access_key_id => "AKIAIFKEXAMPLE4WZHHA",
  :secret_access_key => "abc123def456/SECRET/+ghi789jkl",
  :seller_id => "A27WEXAMPLEBXY",
  :marketplace_id => "ATVPDKIKX0DER")

Requests

We'll use the Orders API to retrieve recently updated orders.

# Retrieve all orders updated within the last 4 hours
response = mws.orders.list_orders :last_updated_after => 4.hours.ago   # ActiveSupport time helper

(All datetime fields accept Time or DateTime objects, as well as strings in iso8601 format.)

Responses

Response objects inherit Hashie for easy access and Rash to convert Amazon's CamelCase convention to underscore. So you're just left with plain ol' Ruby goodness.

Let's parse our response to view the orders and any other data returned.

response.orders.first   # => { "amazon_order_id" => "002-EXAMPLE-0031387",
                        #      "purchase_date" => "2012-01-13T19:11:46.000Z",
                        #      ... }

Response objects are accessible in Hash or method notation.

response.orders == response[:orders]   # => true

Use keys and has_key? to discover what's in the response.

response.keys   # => ["last_updated_before", "orders"]
response.has_key? :last_updated_before   # => true

NextToken requests

For responses with long lists of data, results are returned from the service in pages (usually 100 per page). Example:

response = mws.orders.list_orders :last_updated_after => 1.week.ago   # returns 100 orders & next_token

Here, there are more orders to be returned. You can call has_next? on the same API instance to see if the last response returned has a next page. If so, calling next will make the request for the next page.

mws.orders.has_next?   # => true
next_response = mws.orders.next   # returns next page of orders

Repeat as necessary. You can keep calling next on the API instance as long as has_next? returns true.

Or if you need to, you can save next_token and go about the manual way as per Amazon's docs:

next_response = mws.orders.list_orders_by_next_token :next_token => response.next_token

API

@mws = RubyMWS.new(authentication_hash)   # initialize the connection object (see above)

This object can be used to access all API services. Below are examples on how to make the different requests that are available so far. Refer to the Amazon RubyMWS Reference Docs for available fields for each request.

Orders API

  • ListOrders - Gets orders by time range and other parameters

    @mws.orders.list_orders :last_updated_after => Time.now-4.hours, :order_status => 'Shipped'

  • GetOrder - Gets orders by Amazon order ID

    @mws.orders.get_order :amazon_order_id => "002-EXAMPLE-0031387"

    :amazon_order_id can be an array to retrieve multiple orders.

  • ListOrderItems - Gets order items for one order ID (only one order at a time here)

    @mws.orders.list_order_items :amazon_order_id => "002-EXAMPLE-0031387"

Fulfillment Inventory API

  • ListInventorySupply - Returns availability of inventory, only returns items based on list of SKUs or last change date

    @mws.inventory.list_inventory_supply :seller_skus => ['PF-5VZN-04XR', 'V4-03EY-LAL1', 'OC-TUKC-031P'] @mws.inventory.list_inventory_supply :query_start_date_time => Time.now-1.day

Reports API

  • RequestReport - Used to submit a request for a report by report type. Returns report request info.

    @mws.reports.request_report :report_type => "_GET_FBA_FULFILLMENT_CUSTOMER_RETURNS_DATA_", :start_date => 1.day.ago, :end_date => Time.now

  • GetReportRequestList - Returns a list of the most recently requested reports. Use report_request_id to find the status of your report. Once report_processing_status for your request is "DONE", use generated_report_id to get your results.

    @mws.reports.get_report_request_list

  • GetReport - Used to request a report by report ID. All reports are currently returned as a flat file string.

    @mws.reports.get_report :report_id => '11223344'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.