com.ebay.sdk.call.ReviseItemCall Maven / Gradle / Ivy
/*
Copyright (c) 2013 eBay, Inc.
This program is licensed under the terms of the eBay Common Development and
Distribution License (CDDL) Version 1.0 (the "License") and any subsequent version
thereof released by eBay. The then-current version of the License can be found
at http://www.opensource.org/licenses/cddl1.php and in the eBaySDKLicense file that
is under the eBay SDK ../docs directory.
*/
package com.ebay.sdk.call;
import com.ebay.sdk.pictureservice.*;
import com.ebay.sdk.pictureservice.eps.*;
import java.lang.Boolean;
import java.lang.String;
import java.util.Calendar;
import com.ebay.sdk.*;
import com.ebay.soap.eBLBaseComponents.*;
/**
* Wrapper class of the ReviseItem call of eBay SOAP API.
*
* Title: SOAP API wrapper library.
* Description: Contains wrapper classes for eBay SOAP APIs.
* Copyright: Copyright (c) 2009
* Company: eBay Inc.
*
Input property: ItemToBeRevised
- The Item container is used to make changes to the active listing. The seller must pass in the ItemID value for the listing that is being revised. For anything else that the seller wishes to change, such as quantity or price, the seller should include this field in the call request and give it a new value.
*
* If the seller wants to delete one or more optional settings in the listing, the seller should use the DeletedField tag.
*
Input property: DeletedField
- Specifies the name of a field to delete from a listing. The request can
* contain zero, one, or many instances of DeletedField (one for each field
* to be deleted). See the relevant field descriptions to determine when to
* use DeletedField (and potential consequences).
*
* You cannot delete required fields from a listing.
*
* Some fields are optional when you first list an item (e.g.,
* SecondaryCategory), but once they are set they cannot be deleted when you
* revise an item. Some optional fields cannot be deleted if the item has
* bids and/or ends within 12 hours. Some optional fields cannot be deleted
* if other fields depend on them.
*
* Use values that match the case of the
* schema element names (Item.PictureDetails.GalleryURL) or make the initial
* letter of each field name lowercase (item.pictureDetails.galleryURL).
* However, do not change the case of letters in the middle of a field name.
* For example, item.picturedetails.galleryUrl is not allowed.
*
* To delete a listing enhancement like BoldTitle, specify the value you are
* deleting in square brackets ("[ ]"); for example,
* Item.ListingEnhancement[BoldTitle].
*
Input property: VerifyOnly
- When the VerifyOnly is included and set as true
, the active listing is not actually revised, but the same response is returned and the seller gets to see the expected fees based on the changes made, and can also view any listing recommendations if the Item.IncludeRecommedations boolean field is included and set to true
.
*
Output property: ReturnedItemID
- The unique identifier for the revised item. Note that the ItemID does not change when a listing is revised, so this will be the same ItemID value that was passed in the call request.
*
*
Output property: ReturnedStartTime
- This timestamp indicates the date and time when the listing was created on the eBay site. This value doesn't change when a listing is revised.
*
Output property: ReturnedEndTime
- This timestamp indicates the date and time when the revised item is scheduled to end on the eBay site. This date/time is calculated by using the StartTime and the the listing duration. This value doesn't change when a listing is revised.
*
Output property: ListingFees
- This container consists of the estimated listing fees for the revised listing. Each type of fee is returned even if it is not appplicable (has a value of 0.0
. The Final Value Fee (FVF) is not in this container, as this value cannot be determined until a sale is made.
*
Output property: ReturnedCategoryID
- Unique identifier of the primary eBay category for the revised listing. This field is returned if the primary category was changed with the revision, and the primary category can only be changed if a fixed-price listing has no sales/auction listing has no bids, and the listing does not end within 12 hours.
*
* This field can also be returned if the Item.CategoryMappingAllowed field was included and set to true
in the request and the category ID passed in the Item.PrimaryCategory field was mapped to a new category ID by eBay. If the primary category has not changed or it has expired with no replacement, this field is not returned.
*
*
Output property: ReturnedCategory2ID
- Unique identifier of the secondary eBay category for the revised listing. This field is returned if the secondary category was changed with the revision, and the secondary category can only be changed if a fixed-price listing has no sales/auction listing has no bids, and the listing does not end within 12 hours.
*
* This field can also be returned if the Item.CategoryMappingAllowed field was included and set to true
in the request and the category ID passed in the Item.PrimaryCategory field was mapped to a new category ID by eBay. If the primary category has not changed or it has expired with no replacement, this field is not returned.
*
*
Output property: ReturnedVerifyOnly
- This field is returned if the VerifyOnly field was included in the call request and set to true
.
*
* If the listing was revised in 'Verify Only' mode, the active listing is not actually revised, but the same response is returned and the seller gets to see the expected fees based on the changes made, and can also view any listing recommendations if the Item.IncludeRecommedations boolean input field was included and set to true
.
*
Output property: ReturnedDiscountReason
- This field is returned if an eBay special offer or promotion is applicable to the listing.
*
Output property: ReturnedProductSuggestions
- Provides a list of products recommended by eBay which match the item information
* provided by the seller.
*
Output property: ReturnedListingRecommendations
- Container consisting of one or more Recommendation containers. Each Recommendation container provides a message to the seller on how a listing can be improved or brought up to standard in regards to top-rated seller/listing requirements, mandated or recommended Item Specifics, picture quality requirements, pricing and/or listing format recommendations, recommended keywords and/or Item Specifics in a Title, and/or a recommendation to offer fast handling (same-day handling or handling time of 1 day) and/or a free shipping option in order to qualify the listing for a Fast 'N Free badge.
*
* This container is only returned if the IncludeRecommendations flag was included and set to 'true' in the ReviseItem request, and if at least one listing recommendation exists for the listing about to be revised. If one or more listing recommendations are returned, it will be at the seller's discretion about whether to revise the item again based on eBay's listing recommendation(s).
*
* @author Ron Murphy
* @version 1.0
*/
public class ReviseItemCall extends com.ebay.sdk.ApiCall
{
private ItemType itemToBeRevised = null;
private String[] deletedField = null;
private Boolean verifyOnly = null;
private String returnedItemID=null;
private Calendar returnedStartTime=null;
private Calendar returnedEndTime=null;
private FeesType listingFees=null;
private String returnedCategoryID=null;
private String returnedCategory2ID=null;
private Boolean returnedVerifyOnly=null;
private DiscountReasonCodeType[] returnedDiscountReason=null;
private ProductSuggestionsType returnedProductSuggestions=null;
private ListingRecommendationsType returnedListingRecommendations=null;
private TimeFilter listingDuration = null;
private PictureService pictureService;
/**
* Constructor.
*/
public ReviseItemCall() {
}
/**
* Constructor.
* @param apiContext The ApiContext object to be used to make the call.
*/
public ReviseItemCall(ApiContext apiContext) {
super(apiContext);
this.pictureService = eBayPictureServiceFactory.getPictureService(apiContext);
}
/**
* Enables a seller to revise a listing on a specified eBay site. To revise an active listing, the seller specifies the ItemID value for the listing. The seller makes one or multiple changes to the listing through the Item container, and the seller can also use one or more DeletedField tags to remove an optional field/setting from the listing.
*
*
* After a multiple-quantity, fixed-price listing has one or more sales, or less than 12 hours remain before the listing is scheduled to end, you can not edit the values in the Listing Title, Primary Category, Secondary Category, Listing Duration, and Listing Type fields for that listing. The same applies to an auction listing that has at least one bid.
*
*
* To revise a multiple-variation, fixed-price listing, the ReviseFixedPriceItem call should be used instead, as the ReviseItem call does not support variation-level edits.
*
*
* @throws ApiException
* @throws SdkException
* @throws Exception
* @return The FeesType object.
*/
public FeesType reviseItem()
throws com.ebay.sdk.ApiException, com.ebay.sdk.SdkException, java.lang.Exception
{
ReviseItemRequestType req;
req = new ReviseItemRequestType();
if( this.itemToBeRevised == null )
throw new SdkException("ItemToBeRevised property is not set.");
if (this.itemToBeRevised != null)
req.setItem(this.itemToBeRevised);
if (this.deletedField != null)
req.setDeletedField(this.deletedField);
if (this.verifyOnly != null)
req.setVerifyOnly(this.verifyOnly);
ReviseItemResponseType resp = (ReviseItemResponseType) execute(req);
this.returnedItemID = resp.getItemID();
this.returnedStartTime = resp.getStartTime();
this.returnedEndTime = resp.getEndTime();
this.listingFees = resp.getFees();
this.returnedCategoryID = resp.getCategoryID();
this.returnedCategory2ID = resp.getCategory2ID();
this.returnedVerifyOnly = resp.isVerifyOnly();
this.returnedDiscountReason = resp.getDiscountReason();
this.returnedProductSuggestions = resp.getProductSuggestions();
this.returnedListingRecommendations = resp.getListingRecommendations();
Calendar startTime = resp.getStartTime();
if (null != startTime)
{
listingDuration = new TimeFilter(startTime, resp.getEndTime());
}
return this.getListingFees();
}
/**
* Gets the ReviseItemRequestType.deletedField.
* @return String[]
*/
public String[] getDeletedField()
{
return this.deletedField;
}
/**
* Sets the ReviseItemRequestType.deletedField.
* @param deletedField String[]
*/
public void setDeletedField(String[] deletedField)
{
this.deletedField = deletedField;
}
/**
* Gets the ReviseItemRequestType.itemToBeRevised.
* @return ItemType
*/
public ItemType getItemToBeRevised()
{
return this.itemToBeRevised;
}
/**
* Sets the ReviseItemRequestType.itemToBeRevised.
* @param itemToBeRevised ItemType
*/
public void setItemToBeRevised(ItemType itemToBeRevised)
{
this.itemToBeRevised = itemToBeRevised;
}
/**
* Gets the ReviseItemRequestType.verifyOnly.
* @return Boolean
*/
public Boolean getVerifyOnly()
{
return this.verifyOnly;
}
/**
* Sets the ReviseItemRequestType.verifyOnly.
* @param verifyOnly Boolean
*/
public void setVerifyOnly(Boolean verifyOnly)
{
this.verifyOnly = verifyOnly;
}
/**
*
* @return the listing duration.
*/
public TimeFilter getListingDuration() {
return listingDuration;
}
public void uploadPictures(String[] pictureFiles, PictureDetailsType pictureDetails) throws SdkException {
if(pictureFiles == null) {
return;
}
PictureInfo[] pictureInfoArray = new PictureInfo[pictureFiles.length];
for(int i = 0; i < pictureFiles.length; i ++) {
pictureInfoArray[i] = new PictureInfo();
pictureInfoArray[i].setPictureFilePath(pictureFiles[i]);
}
uploadPictures(pictureInfoArray, pictureDetails);
}
public void uploadPictures(PictureInfo[] pictureInfoArray, PictureDetailsType pictureDetails) throws SdkException {
String epsUrl = getApiContext().getEpsServerUrl();
if(pictureInfoArray == null || epsUrl == null) {
return;
}
if(pictureDetails == null) {
pictureDetails = new PictureDetailsType();
}
if(pictureDetails.getPhotoDisplay() == null) {
pictureDetails.setPhotoDisplay(PhotoDisplayCodeType.NONE);
}
if(pictureDetails.getGalleryType() == null) {
pictureDetails.setGalleryType(GalleryTypeCodeType.NONE);
}
if(pictureDetails.getPictureSource() == null) {
pictureDetails.setPictureSource(PictureSourceCodeType.VENDOR);
}
itemToBeRevised.setPictureDetails(pictureDetails);
int uploads = pictureService.uploadPictures(pictureDetails.getPhotoDisplay(), pictureInfoArray);
if(uploads != pictureInfoArray.length ) {
// Build error message.
StringBuffer sb = new StringBuffer();
for(int i = 0; i < pictureInfoArray.length; i ++ ) {
if (pictureInfoArray[i].hasError())
sb.append(pictureInfoArray[i].getErrorType() + " : " +
pictureInfoArray[i].getErrorMessage() + "\n");
}
throw new SdkException(sb.toString());
}
// Save urls back to item object.
String[] uris = new String[pictureInfoArray.length];
for(int i = 0; i < pictureInfoArray.length; i ++) {
uris[i] = pictureInfoArray[i].getURL();
}
itemToBeRevised.getPictureDetails().setPictureURL(uris);
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.listingFees.
*
* @return FeesType
*/
public FeesType getListingFees()
{
return this.listingFees;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedCategory2ID.
*
* @return String
*/
public String getReturnedCategory2ID()
{
return this.returnedCategory2ID;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedCategoryID.
*
* @return String
*/
public String getReturnedCategoryID()
{
return this.returnedCategoryID;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedDiscountReason.
*
* @return DiscountReasonCodeType[]
*/
public DiscountReasonCodeType[] getReturnedDiscountReason()
{
return this.returnedDiscountReason;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedEndTime.
*
* @return Calendar
*/
public Calendar getReturnedEndTime()
{
return this.returnedEndTime;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedItemID.
*
* @return String
*/
public String getReturnedItemID()
{
return this.returnedItemID;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedListingRecommendations.
*
* @return ListingRecommendationsType
*/
public ListingRecommendationsType getReturnedListingRecommendations()
{
return this.returnedListingRecommendations;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedProductSuggestions.
*
* @return ProductSuggestionsType
*/
public ProductSuggestionsType getReturnedProductSuggestions()
{
return this.returnedProductSuggestions;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedStartTime.
*
* @return Calendar
*/
public Calendar getReturnedStartTime()
{
return this.returnedStartTime;
}
/**
* Valid after executing the API.
* Gets the returned ReviseItemResponseType.returnedVerifyOnly.
*
* @return Boolean
*/
public Boolean getReturnedVerifyOnly()
{
return this.returnedVerifyOnly;
}
}