10-15-2023 05:09 AM
Hello I am trying to update my .NET software to support the new Condition Grading for trading cards but the the .NET SDK ImageType does not contain the "ConditionDescriptor" field required to do this.
I use my .NET software to take images of TCG cards and post them to my store. This saves me incredible amounts of time as my software also does an OCR routine that reads the card, gets card information, sets the title , does a price lookup on TCG player and fills out basically all fields programmatically.
The current SDK does not support this new grading requirement from eBay. There needs to be a ConditionDescriptor for all Card listings next week but there is no support for this in software.
I'm now worried my application I've developed over years will be unusable due to this requirement that is not supported by the eBay SDK . This will really mess with my business listing throughput if so. I'm not sure why eBay would set this deadline requirement and not roll out any support for the SDK prior.
Any thoughts, suggestions, ideas would be appreciated. Not sure if I need to reach out and pay for premium support for this?
Solved! Go to Best Answer
10-19-2023 08:54 AM
To anyone out there who may need help on this, my solution for now is a workaround for the lack of the ConditionDescriptor in the eBay SDK.
Instead of using the SDK to make the calls, I created a RESTful client to and manually make the AddFixedPriceItem call and add the condition descriptor to the XML document I build manually.
<PrimaryCategory>
<CategoryID>183454</CategoryID>
</PrimaryCategory>
<ConditionDescriptors>
<ConditionDescriptor>
<Name>40001</Name>
<Value>"+ condition +"</Value>
</ConditionDescriptor>
</ConditionDescriptors>
<ConditionID>4000</ConditionID>
Below is sample of my code call, hopefully this info can assist someone.
var client = new RestClient("https://api.ebay.com/ws/api.dll");
var request = new RestRequest(Method.POST);
request.AddHeader("X-EBAY-API-SITEID", "0");
request.AddHeader("X-EBAY-API-COMPATIBILITY-LEVEL", "967");
request.AddHeader("X-EBAY-API-DETAIL-LEVEL", "0");
request.AddHeader("X-EBAY-API-APP-NAME", "YOUR INFO HERE");
request.AddHeader("X-EBAY-API-DEV-NAME", "YOUR INFO HERE");
request.AddHeader("X-EBAY-API-CERT-NAME", "YOUR INFO HERE");
request.AddHeader("X-EBAY-API-CALL-NAME", "AddFixedPriceItem");
request.AddHeader("X-EBAY-API-IAF-TOKEN", "YOUR INFO HERE");
string condition = "40010";
switch (cb_cond2.SelectedIndex)
{
case 0: condition = "400010";
break;
case 1:
condition = "400015";
break;
case 2:
condition = "400016";
break;
case 3:
condition = "400017";
break;
}
string urlPre = "<PictureURL>";
string urlSuf = "</PictureURL>";
StringBuilder urlSB = new StringBuilder();
foreach (string surl in URLList)
{
urlSB.Append(urlPre + surl + urlSuf);
}
string xmlRequestBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?><AddFixedPriceItemRequest xmlns=\"urnapis:eBLBaseComponents\"> <WarningLevel>High</WarningLevel> <Item> <Title>"+ TxtTitle.Text +"</Title> <Description>" + TxtDescription.Text + "</Description> <PrimaryCategory> <CategoryID>183454</CategoryID> </PrimaryCategory> <StartPrice>" + TxtStartPrice.Text +"</StartPrice> <ConditionDescriptors> <ConditionDescriptor> <Name>40001</Name> <Value>"+ condition +"</Value> </ConditionDescriptor> </ConditionDescriptors> <ConditionID>4000</ConditionID> <Country>US</Country> <Currency>USD</Currency> <DispatchTimeMax>1</DispatchTimeMax> <ListingDuration>GTC</ListingDuration> <ListingType>FixedPriceItem</ListingType> <PictureDetails>" + urlSB.ToString() +"</PictureDetails> <PostalCode>YOUR INFO</PostalCode> <ItemSpecifics> <NameValueList> <Name>Game</Name> <Value>"+ CBgame.Text +"</Value> </NameValueList> <NameValueList> <Name>Graded</Name> <Value>No</Value> </NameValueList> </ItemSpecifics> <Quantity>"+ TxtQuantity.Text +"</Quantity> <ReturnPolicy> <ReturnsAcceptedOption>ReturnsAccepted</ReturnsAcceptedOption> <RefundOption>MoneyBack</RefundOption> <ReturnsWithinOption>Days_30</ReturnsWithinOption> <ShippingCostPaidByOption>Buyer</ShippingCostPaidByOption> </ReturnPolicy> <ShippingDetails> <ShippingType>Flat</ShippingType> <ShippingServiceOptions> <ShippingServicePriority>1</ShippingServicePriority> <ShippingService>US_eBayStandardEnvelope</ShippingService> <FreeShipping>true</FreeShipping> <ShippingServiceAdditionalCost currencyID=\"USD\">0.00</ShippingServiceAdditionalCost> </ShippingServiceOptions> </ShippingDetails> <Site>US</Site> </Item> </AddFixedPriceItemRequest >";
request.AddParameter("text/xml", xmlRequestBody,ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string s = response.Content.ToString();
10-19-2023 08:54 AM
To anyone out there who may need help on this, my solution for now is a workaround for the lack of the ConditionDescriptor in the eBay SDK.
Instead of using the SDK to make the calls, I created a RESTful client to and manually make the AddFixedPriceItem call and add the condition descriptor to the XML document I build manually.
<PrimaryCategory>
<CategoryID>183454</CategoryID>
</PrimaryCategory>
<ConditionDescriptors>
<ConditionDescriptor>
<Name>40001</Name>
<Value>"+ condition +"</Value>
</ConditionDescriptor>
</ConditionDescriptors>
<ConditionID>4000</ConditionID>
Below is sample of my code call, hopefully this info can assist someone.
var client = new RestClient("https://api.ebay.com/ws/api.dll");
var request = new RestRequest(Method.POST);
request.AddHeader("X-EBAY-API-SITEID", "0");
request.AddHeader("X-EBAY-API-COMPATIBILITY-LEVEL", "967");
request.AddHeader("X-EBAY-API-DETAIL-LEVEL", "0");
request.AddHeader("X-EBAY-API-APP-NAME", "YOUR INFO HERE");
request.AddHeader("X-EBAY-API-DEV-NAME", "YOUR INFO HERE");
request.AddHeader("X-EBAY-API-CERT-NAME", "YOUR INFO HERE");
request.AddHeader("X-EBAY-API-CALL-NAME", "AddFixedPriceItem");
request.AddHeader("X-EBAY-API-IAF-TOKEN", "YOUR INFO HERE");
string condition = "40010";
switch (cb_cond2.SelectedIndex)
{
case 0: condition = "400010";
break;
case 1:
condition = "400015";
break;
case 2:
condition = "400016";
break;
case 3:
condition = "400017";
break;
}
string urlPre = "<PictureURL>";
string urlSuf = "</PictureURL>";
StringBuilder urlSB = new StringBuilder();
foreach (string surl in URLList)
{
urlSB.Append(urlPre + surl + urlSuf);
}
string xmlRequestBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?><AddFixedPriceItemRequest xmlns=\"urnapis:eBLBaseComponents\"> <WarningLevel>High</WarningLevel> <Item> <Title>"+ TxtTitle.Text +"</Title> <Description>" + TxtDescription.Text + "</Description> <PrimaryCategory> <CategoryID>183454</CategoryID> </PrimaryCategory> <StartPrice>" + TxtStartPrice.Text +"</StartPrice> <ConditionDescriptors> <ConditionDescriptor> <Name>40001</Name> <Value>"+ condition +"</Value> </ConditionDescriptor> </ConditionDescriptors> <ConditionID>4000</ConditionID> <Country>US</Country> <Currency>USD</Currency> <DispatchTimeMax>1</DispatchTimeMax> <ListingDuration>GTC</ListingDuration> <ListingType>FixedPriceItem</ListingType> <PictureDetails>" + urlSB.ToString() +"</PictureDetails> <PostalCode>YOUR INFO</PostalCode> <ItemSpecifics> <NameValueList> <Name>Game</Name> <Value>"+ CBgame.Text +"</Value> </NameValueList> <NameValueList> <Name>Graded</Name> <Value>No</Value> </NameValueList> </ItemSpecifics> <Quantity>"+ TxtQuantity.Text +"</Quantity> <ReturnPolicy> <ReturnsAcceptedOption>ReturnsAccepted</ReturnsAcceptedOption> <RefundOption>MoneyBack</RefundOption> <ReturnsWithinOption>Days_30</ReturnsWithinOption> <ShippingCostPaidByOption>Buyer</ShippingCostPaidByOption> </ReturnPolicy> <ShippingDetails> <ShippingType>Flat</ShippingType> <ShippingServiceOptions> <ShippingServicePriority>1</ShippingServicePriority> <ShippingService>US_eBayStandardEnvelope</ShippingService> <FreeShipping>true</FreeShipping> <ShippingServiceAdditionalCost currencyID=\"USD\">0.00</ShippingServiceAdditionalCost> </ShippingServiceOptions> </ShippingDetails> <Site>US</Site> </Item> </AddFixedPriceItemRequest >";
request.AddParameter("text/xml", xmlRequestBody,ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string s = response.Content.ToString();
10-21-2023 03:01 PM
Thanks for this. I was considering this approach, but I haven't begun implementation yet.