Selecting Categories using API in Amazon MWS - amazon-web-services

I am developing a integration between a desktop application and Amazon MWS and need to be able to offer users a choice of categories to put the product they are listing into. My problem is that I can't find any way of programmatically getting the current categories from MWS using the API.
Additionally once I have a category reference to use I will need a way to the pull in and add the category specific XML child of ProductData (eg Home, Jewelry, Computers, etc) but they don't seem to be linked in any well defined way. For example, I can't say "if the chosen category is reference nnnnn ask them to populate the Computers specific ProductData", unless I write something myself to map them.
Has anyone else come across these problems and found a workable solution?
Any help appreciated...
I am currently exploring the option of limiting users to only selling products already listed on Amazon but still can't figure out how to pull in the correct category specific XML.
There are various product look-ups but they all seem to work from either my SKU (which will not yet be there) or Amazons ASIN (which I don't yet know)

You can use amazon advertizement api for this.
You have to create account on amazon affiliate programme.From that you have to get security credentials also .
After That go to BrowseNode Tree Page and download root categories list and save it to file or database.From there you get categoryname and their browseNodeId.
Then call BrowseNodeApi to get Child Categories for parent Category.
Please Follow This Link
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/ProgrammingGuide.html
code for calling BrowseNodeApi
SignedRequestHelper helper =
new SignedRequestHelper(appConfig["AWSAccessKey"], appConfig["AWSSecretKey"], appConfig["endpoint"]);
string url = helper.Sign("http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Operation=BrowseNodeLookup&BrowseNodeId=" + value + "&AssociateTag=beginners00-00&Version=2011-08-01");
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
}
and also download SignatureGenerator class HMAC

Related

get a permanent browseNodeId from amazon product API

I'm using Amazon Product API to get new products of certain category everyday.
Sometimes the BrowseNodeId changes, let's say I want to get new books about 'Python', at the moment I'm calling Amazon API like this:
get_new_products(BrowseNodeId=36848)
but sometimes BrowseNodeId changes and I get this error:
InvalidParameterValue: AWS.InvalidParameterValue: 36848 is not a
valid value for BrowseNodeId. Please change this value and retry your
request.
What can I do to keep the BrowseNodeId of Python updated? Which API should I use to get the BrowseNodeId passing the string 'Python'?
I need something like this getBrowseNodeId('Python') to get the correct and updated BrowseNodeId to avoid the error posted over.
Any advice or workflow that I can follow?
Thanks in advance.
Best regards.
Amazon does seem to change the Ids every so often. The recommended way is to take a product and go through its associated BrowseNodes.

Retrieve Used and New Items, detecting their condition - Amazon-MWS

We allready get a list of our Products through the Amazon MWS API, with the ReportTyp _GET_FLAT_FILE_OPEN_LISTINGS_DATA_.
Probelm we have is, that we cant see if the product is NEW or USED.
And i also dont know any report with whom i could do that.
Do you know any solution, which gives me the opportunity to detect, wether an SKU is listed under NEW or under USED?
Thanks in adcanve
I found the following way to go, for this problem.
You will need the Amazon MWS Product API with the ReportTyp GetMyPriceForSKU. There you will find the section condition and subCondition.

A way to bypass the per-ip limit retrieving profile picture?

My app download all the user's friends pictures.
All the requests are of this kind:
https://graph.facebook.com/<friend id>/picture?type=small
But, after a certain limit is reached, instead of the picture I get:
{"error""message":"(#4) Application request limit reached","type":"OAuthException"}}
Actually, the only way I found to prevent this is to change the server ip (manually).
There isn't a better way?
For the record:
The limit is related to the Graph Api only, and the graph.facebook.com/<user>/picture url is a graph api call that returns a redirect.
So, to avoid the daily limit, simply fetch all the images url from FQL, like:
SELECT uid, pic_small, pic_big, pic, pic_square FROM user WHERE uid = me() or IN (SELECT uid2 FROM friend WHERE uid1=me())
now these are the direct urls to the images, for eg:
http://profile.ak.fbcdn.net/hprofile-ak-snc4/275716_1546085527_622218197_q.jpg
so don't store them since they continuously change.
If it's needed for an online app better way not to download those images, but use an online version, there is couple of reasons for doing so:
Users change pictures (some frequently), do you need an updated version?
Facebook's servers probably faster than yours and friends pictures probably cached within browser of your user.
Update:
Since limit you reach is Graph API call limit, not the image retrieval, another solution that comes to my head just now is using friends connection of user in Graph API and specifying picture in fields argument, eq: https://graph.facebook.com/me/friends?fields=picture, this will return direct URL-s for friends pictures so you can do only one call to get all needed info to download the images for every user...

Searching for E-mails with Exchange Web Services Operations

I am doing an integration project for a customer running Microsoft Exchange 2007 (BPOS). I am looking for a way to search for e-mail using the Exchange Web Services Operations -- MS' API to their own hosted exchange solution. So far, I have found a nice API description, but as far as I can see none of it allows for searching for e-mails using different criteria. In this case, I need to find all e-mails that contains a specific sender or recipient identified by an e-mail address.
Could you provide me with guidance on how to do this? Thanks.
In my (admittedly minimal) experience with Exchange Web Services, the only way to do this would be to retrieve all items in a folder and scan through their properties.
You need to specify which properties are retrieved when you call the FindItem() operation.
PathToUnindexedFieldType fieldTypePath = new PathToUnindexedFieldType();
fieldTypePath.FieldURI = UnindexedFieldURIType.folderDisplayName;
GetFolderType folderType = new GetFolderType();
folderType.FolderShape = new FolderResponseShapeType();
folderType.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly;
folderType.FolderShape.AdditionalProperties = new BasePathToElementType[1];
folderType.FolderShape.AdditionalProperties[0] = fieldTypePath;
So the only saving grace is that you don't need to retrieve the full email body etc - just the fields you explicitly require.

Find the newest products using Amazon API

Is it possible to find all the new Amazon products in a specific category using the Amazon Associates Web Service or any other tool ?
I tried also the RSS which give only 10 results and it is updated only once in few months. Do you have any other ideas ?
Once you know the Browse Node for the category you're interested in, you can use the BrowseNodeLookup operation with the NewReleases ResponseGroup to get some new products in that category; looks like you get 10, even in a busy category like Music ยป Alternative.
They don't say anything in those pages about getting more, and NewReleases is only a valid ResponseGroup for BrowseNodeLookup operations and not, say, ItemSearch, so I don't think you can get more than 10 new releases per category.