Shopping API
 

Simple Schema Types

The eBay Schema makes use of many simple schema types. Further, some eBay-defined types (e.g. AmountType) are based on simple schema types.

Except where specified, the data types in the table below follow the conventions for XML Schema simple types as described by the World Wide Web Consortium in XML Schema Part 2: Datatypes.

Data Type Description
anyURI Specifies a Uniform Resource Identifier (URI), a compact sequence of characters that identifies an abstract or physical resource.

The anyURI type is used most often to specify Uniform Resource Locators (URLs), such as a web page URL (e.g., ViewItemURL) or a file location URL (e.g., PictureURL), but can also be used for email addresses and other valid URI schemes.

boolean Specifies binary-valued logic (true/false). Possible input values are true, false, 1, and 0. Possible output values are true and false only (not 1 or 0).

In the API, some fields that are currently defined as booleans might later be redefined as int values (enumerations) or as code lists. This would occur if more choices besides true and false become available. In these rare cases, we use a compatibility level to give you time to modify your application as needed. See the eBay Schema Versioning Strategy for information about how this works.

dateTime A specific instant of time.

Date-time values are in the ISO 8601 date and time format. Hours are in 24-hour format (e.g., 2:00:00pm is 14:00:00). Unless otherwise specified, all date-time values are recorded in Universal Coordinated Time (UTC), also known as Greenwich Mean Time (GMT) or Zulu (because the time portion of the time stamp ends with a Z). That is, time values do not reflect the time zone shown on the eBay Web site. Here is an example of the date-time format:

YYYY-MM-DDTHH:MM:SS.SSSZ (e.g., 2004-08-04T19:09:02.768Z)

See Time Values for information about how to convert between local time zones and GMT.

We use the dateTime data type to convey start and end times, the official eBay time, and other time values.

decimal A decimal value of arbitrary precision.

In the API, most fields of type decimal can contain the digits 0-9, a hyphen to designate negative numbers as needed, and a period (".") for the decimal separator. Decimal values should never include a thousands separator.

A whole number (i.e., without a period) can be passed as a decimal value.

We typically use the decimal data type to convey values related to units of measure. See individual topics for specific restrictions beyond this for fields of type decimal.

double A double-precision 64-bit floating point type.

In the API, most fields of type double can contain the digits 0-9, a hyphen to designate negative numbers as needed, and a period (".") for the decimal separator. Double values should never include a thousands separator.

We typically use the double data type to convey values related to monetary amounts. See AmountType, below.

In some cases, a whole number (i.e., without a period) can be passed or returned as a double value. See individual topics for specific restrictions beyond this for fields of type double.

duration A length of time.

Duration values are in the ISO 8601 duration format, where P represents "Period", nY represents the number of years, nM the number of months, nD the number of days, T is the date/time separator, nH the number of hours, nM the number of minutes, and nS the number of seconds. So P2DT23H32M51S means "A period of 2 days, 23 hours, 32 minutes, and 51 seconds".

PnYnMnDTnH nMnS (e.g., P2DT23H32M51S)

We use the duration data type to convey values like the time left until a listing ends. For ended listings, the time left is PT0S (zero seconds).

float A single-precision 32-bit floating point type.

In the API, most fields of type float can contain the digits 0-9, a hyphen to designate negative numbers as needed, and a period (".") for the decimal separator. Float values should never include a thousands separator.

We typically use the float data type to convey values related to percentages. See individual topics for specific restrictions beyond this for fields of type float.

int A 32-bit integer value between -2147483648 and 2147483647.

In the API, most fields of type int can contain digits 0-9, and hyphen to indicate negative numbers. Some input fields restrict the input to particular values or a range of values. These cases are noted in the associated topic for the specific input field.

We typically use the int data type for enumerations, counts (e.g., how many items are returned), quantities, certain kinds of IDs (other IDs are strings), and similar concepts.

long A value between -9223372036854775808 and 9223372036854775807.
string A string of characters. All characters in the Unicode character set are supported.

Character entity references are used for escaping markup-significant characters. For example, use &amp; for the & (ampersand) character, &lt; for the < (less-than sign) character, and &gt; for the > (greater-than sign) character. It is a good idea to escape such characters in requests instead of using a CDATA construct. Responses from eBay do not include CDATA constructs.

Note that messages from eBay may contain HTML or XML markup within the message text. In this case, the markup elements within the text are escaped (e.g., &lt;![CDATA[ ... ]]&gt;).

Some string input fields (e.g., QueryKeywords) do not have a known set of possible values. For these fields, the documentation specifies the maximum permitted length in characters. If you are using a URL for your request, and you need to use the & (ampersand) character as part of a string value (e.g. Bausch & Lomb in QueryKeywords), use &amp;.

xs:string is part of the XML schema namespace defined as:

xmlns:xs="http://www.w3.org/2001/XMLSchema"

token

A set of normalized strings.

In the API, this type of string contains no white space, by convention.

We typically use token to constrain a field to a specified set of normalized string values. For such a field, we define these values in an enumeration that uses token as its base type. For example, DestinationCountryCode uses CountryCodeType, which defines the standard set of country abbreviations that eBay recognizes.

If "CustomCode" is returned as an enumeration value, it means we're sending you a placeholder value because we think your application won't recogize the real value. This occurs when your URL (or HTTP header) specifies a version that is older than the version in which the real value was introduced in the API. To get the real value, upgrade your application to be compatible with a newer version of the API. See the eBay Schema Versioning Strategy for details about how your request version controls output data.

AmountType An eBay-defined complex type for specifying monetary amounts.

A double value (e.g., 1.00 or 1.0) is meaningful as an amount when accompanied by a specification of the currency, in which case the value specifies the amount in that currency.

In the API, an object of type AmountType expresses both the value (a decimal) and the currency.

We typically use the AmountType data type to specify details such as prices, fees, costs, and payments.

In some cases, a whole number (i.e., without a period) can be passed or returned as a monetary value. This is necessary to support certain currencies that are only expressed as whole numbers (like the Italian Lira and Spanish Peseta).

Because a double is used to represent the amount, this also means whole monetary amounts may be returned with only one 0 after the decimal. For example, a dollar value could be returned as 5.0 instead of 5.00 in calls like GetSingleItem. See individual topics for specific restrictions beyond this for fields of type Amount.

Repeatable (Unbounded) Fields

If the multiplicity of an element is defined as maxOccurs="unbounded" or a value greater than 1 in the schema, it means you can specify the field multiple times in a request (like you are specifying an array), or eBay can return the field multiple times in the response. In this case, the fields must be contiguous. That is, in a request, you cannot insert other fields between the repeating fields. Otherwise, some of the data will be dropped in an unpredictable manner.

For example, GetSingleItem can return multiple payment methods for an item. Here is the definition of the PaymentMethod element in the Item schema (SimpleItemType):

<xs:element name="PaymentMethods" type="ns:BuyerPaymentMethodCodeType" minOccurs="0" maxOccurs="unbounded" />

In the response, the PaymentMethods fields are always contiguous, with no other fields between them:

If you are using URL-style input or Name-Value Pair input, repeatable fields can be expressed with a comma-separated format in most cases. For example, for ItemID in GetItemStatus, you can specify ...&ItemID=123456789012,223456789012,323456789012. If you are specifying only one value, you can specify, for example, ...&ItemID=123456789012. Formerly, when URL-style or Name-Value Pair input included a repeatable field, an array index always was required (e.g., for ItemID in GetItemStatus, you had to specify input such as ...&ItemID(0)=123456789012&ItemID(1)=223456789012). The array index was required even if you only passed in one value. The array index is still supported.

In some cases, an array index still is required. Whenever a comma can be embedded in a string, you must use an array index to prevent the comma from acting as a delimiter. This applies in the case of string types. For example, for DomainName in a FindProducts request, use an index value (not a comma). To specify a DomainName of Textbooks, Education in a URL (or Name-Value Pair) input format, you must specify DomainName(0)=Textbooks,%20Education.

Multiplicity Notation

Sample XML notation Corresponding doc notation Meaning §
minOccurs="0" maxOccurs="unbounded" [0..*] Zero or more
minOccurs="0"
minOccurs="0" maxOccurs="1"
[0..1] Zero or one
minOccurs="0" maxOccurs="6" [0..6] Zero to six

§  While this is the general meaning, be sure to read the description of the particular field: it may state an exception for a particular use.