Amazon mws - Update MerchantOrderID - amazon-web-services

I'm trying to update the Amazon Merchant Order ID through the Feed API.
It was succesfully submitted and I've checked the response from Amazon MWS Scratchpad by check with the GetFeedSubmissionResult call. it returned that the process was completed without any erro.
But when I open my order in Amazon (sellercentral.amazon.com) it says "none saved": Your Merchant Order ID: # none saved
Nothing have been changed.

Your XML feed (provided in your comment) is missing the <Item> elements. Amazon wants you to acknowledge that you have not only received the order, but also all contained items. A complete XML feed should look like this:
<?xml version="1.0"?>
<AmazonEnvelope xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>M_xxxxx_114513393</MerchantIdentifier>
</Header>
<MessageType>OrderAcknowledgement</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderAcknowledgement>
<AmazonOrderID>114-8862878-1197857</AmazonOrderID>
<MerchantOrderID>abc-402637</MerchantOrderID>
<StatusCode>Success</StatusCode>
<Item> <-- you need to repeat the "Item" element for each order line
<AmazonOrderItemCode>abc</AmazonOrderItemCode>
<MerchantOrderItemID>def</MerchantOrderItemID> <-- I'm not sure this is required, but haven't tried without
</Item>
</OrderAcknowledgement>
</Message>
</AmazonEnvelope>
( the <-- ... comments are not part of the actual feed)
You may also wish to look at this related StackOverflow answer.

Related

Including a CDATA field in a Service Connector

An API I am communicating with is Soap based and requires XML with inner XML (CDATA) in the request.
For the service connector action test I have hard-coded the inner xml with this format:
<![CDATA[
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationCrossReferenceId="123">
...
...
</Application> ]]>
where the dots indicate the data contained.
When running the test the request payload has been transformed to the html entity for < which is $lt; - as seen below :
Is there a way to avoid this?
This is a bug in Informatica. the other characters are decoded back to their original correctly, as described in KB 512858, &gt and &lt however are not decoded.
A bug report has been raised 29.05.2020.
Edit: Further investigation revealed that using CDATA was not necessary in my case, instead I was able to use the following input for the body binding:
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationCrossReferenceId="123">
...
...
</Application>

IBM Connections API - Adding Members to Wiki

I've been trying to add members to the wiki to no avail. Here's the link to the instructions on how to do so:
http://www-10.lotus.com/ldd/appdevwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Connections+4.5+API+Documentation#action=openDocument&res_title=Updating_a_wiki_ic45&content=pdcontent
Basically, what I need to do is to retrieve the wiki first using this URL:
connectionsURL/wikis/basic/api/wiki/{wiki-label}/entry
And then append the information there and then send it back using a PUT request, Content-Type: application/atom+xml. The content passed should look like the one below based on the example:
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
<id>ignore</id>
<td:label xmlns:td="urn:ibm.com/td">Lake Champlain</td:label>
<category term="wiki" scheme="tag:ibm.com,2006:td/type" label="wiki">
</category>
<author>
<name>Bill Jones</name>
<snx:userid xmlns:snx="http://www.ibm.com/xmlns/prod/sn">
bf9117c0-f8f2-102c-97c4-ceb7f24c5708
</snx:userid>
<email>bjones#us.example.com</email>
</author>
<td:sharedWith xmlns:td="urn:ibm.com/td">
<ca:member
xmlns:ca="http://www.ibm.com/xmlns/prod/composite-applications/v1.0"
ca:id="new_user_id"
ca:type="user"
ca:role="editor" >
</ca:member>
<ca:member
xmlns:ca="http://www.ibm.com/xmlns/prod/composite-applications/v1.0"
ca:id="anonymous-user"
ca:type="virtual"
ca:role="reader" >
</ca:member>
</td:sharedWith>
<title type="text">Long Lake</title>
<summary type="text">
modification none
</summary>
</entry>
I tried that and I always keep getting this 400 Bad Request response:
<?xml version="1.0" encoding="UTF-8" ?>
<td:error>
<td:errorCode>InvalidRequest</td:errorCode>
<td:errorMessage>Atom entry is null</td:errorMessage>
</td:error>
Try this API - https://conServer.com/wikis/basic/api/wiki/{WIKI_LABEL}/members
Then do a PUT on that resource to change the entries (I think type should be atom/xml or atom+cat/xml
Thanks
paul

creating relationship feeds through Amazon MWS

One of my client wants me to upload and maintain the variations of the products on Amazon. I am stuck in creating relationship(Variations) feed. I have googled it for many hours but with no luck.
I can easily generate and upload simple product, inventory, image and price feeds successfully through MWS, but my concept regarding variation feeds is not clear.
To simplify, my client has a product say "ABC" with two different colors (Black,Red). The ABC is not yet Registered on Amazon. The client has EAN for this product to list on amazon and also show the two different variations.
Now if any body can help me out as how to make the feeds to reflect the variations.
Please explain with practical code example.
Thanks
you can use following XML to create relationship.Use "_POST_PRODUCT_RELATIONSHIP_DATA_" as type of feed
<?xml version="1.0" encoding="utf-8"?>
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>xxxxxxxxxxxxxxx</MerchantIdentifier>
</Header>
<MessageType>Relationship</MessageType>
<Message>
<MessageID>1</MessageID>
<OperationType>Update</OperationType>
<Relationship>
<ParentSKU>skt_parent1234</ParentSKU>
<Relation>
<SKU>skt_white123</SKU>
<Type>Variation</Type>
</Relation>
<Relation>
<SKU>skt_orange1234</SKU>
<Type>Variation</Type>
</Relation>
</Relationship>
</Message>
</AmazonEnvelope>

Django RSS Feed has domain set to example.com

I am able to get an output for the rss feed but the domain in the item link is http://example.com instead of the domain that I used in Feed.link (http://www.mydomain.com/blog). What do I need to do to get "mydomain.com" instead of "example.com"?
Below is the generated rss feed:
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>MyDomain Blog</title>
<link>http://www.mydomain.com/blog</link>
<description>insights and new developments in creating Pushstack</description>
<atom:link href="http://example.com/blog/rss/" rel="self"></atom:link>
<language>en-us</language>
<lastBuildDate>Mon, 31 Jan 2011 19:41:42 -0000</lastBuildDate>
<item>
<title>Example</title>
<link>http://example.com/blog/example</link>
<description></description>
<guid>http://example.com/blog/example</guid>
</item>
</channel>
</rss>
Also, in the title of the browser (OS X Chrome) it says, "NameError at /blog/rss/". Not sure if that is something that always shows up or if something else is wrong.
example.com is the domain that is automatically inserted into the database via the Sites framework.
You can edit the site in the admin: http://yourserver.com/admin/sites/site/
That's correct. You can also update it directly from the DDBB from "django_site" table, in case you are not using the admin.
Regards,
Martin
The atom:link value defaults to the information in the Sites framework, but you can override it by setting a feed_link property in your feed class, eg:
feed_link = "http://www.mydomain.com/blog/rss"

Is it possible to search SharePoint metadata?

When I use the Search.asmx web service it won't allow me to search MetaData. Is there a way that I can do this?
Below is what I have come up with so far for my query, but it errors out with an InvalidPropertyException every time I run it.
<?xml version="1.0" encoding="utf-8" ?>
<QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000">
<Query domain="QDomain">
<SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats>
<Context>
<QueryText language="en-US" type="MSSQLFT">
<![CDATA[ SELECT Title, Rank, Size, Description, Write, Path FROM portal..scope() WHERE "Published" = 'Yes' ORDER BY "Rank" DESC ]]>
</QueryText>
</Context>
<Range><StartAt>1</StartAt><Count>20</Count></Range>
<EnableStemming>false</EnableStemming>
<TrimDuplicates>true</TrimDuplicates>
<IgnoreAllNoiseQuery>true</IgnoreAllNoiseQuery>
<ImplicitAndBehavior>true</ImplicitAndBehavior>
<IncludeRelevanceResults>true</IncludeRelevanceResults>
<IncludeSpecialTermResults>true</IncludeSpecialTermResults>
<IncludeHighConfidenceResults>true</IncludeHighConfidenceResults>
</Query></QueryPacket>
You can't just search an arbitrary column of metadata, you need to make sure it gets crawled first and is made available under a sensible name (managed property). See this blog post for an example.
Also, if Published is a boolean, I think you might want to test "Published" = 1, in stead of yes.