# Retrieve a spec

Only available to Buyer Users.

Endpoint: GET /me/products/{productID}/specs/{specID}
Version: 1.0.450.36533
Security: OAuth2

## Path parameters:

  - `productID` (string, required)
    ID of the product.

  - `specID` (string, required)
    ID of the spec.

## Query parameters:

  - `catalogID` (string)
    ID of the catalog.

## Response 200 fields (application/json):

  - `OwnerID` (string)
    ID of the organization that owns the spec. Only the marketplace owner can override the OwnerID on create.

  - `ID` (string)

  - `ListOrder` (integer)
    Example: 1

  - `Name` (string)

  - `DefaultValue` (string)
    If no value is passed in the line item spec, this value will be used.

  - `Required` (boolean)

  - `AllowOpenText` (boolean)
    For spec options that are not pre-defined, such as FirstName for a business card.

  - `DefaultOptionID` (string)
    This property can only be written to after both the spec and options have been created. If no Spec.OptionID is passed in the line item spec, this option will be used.

  - `DefinesVariant` (boolean)
    If true, each unique combinations of this spec's options should map to a unique product variant.

  - `xp` (object)
    Example: {}

  - `OptionCount` (integer)

  - `Options` (array)
    Example: [{"ID":"","Value":"","ListOrder":1,"IsOpenText":false,"PriceMarkupType":"NoMarkup","PriceMarkup":0,"xp":{}}]

  - `Options.ID` (string)

  - `Options.Value` (string)

  - `Options.ListOrder` (integer)
    Example: 1

  - `Options.IsOpenText` (boolean)

  - `Options.PriceMarkupType` (string)
    Enum: "NoMarkup", "AmountPerQuantity", "AmountTotal", "Percentage"

  - `Options.PriceMarkup` (number)

  - `Options.xp` (object)
    Example: {}

## Response 4XX fields (application/json):

  - `StatusCode` (integer)
    Example: "404"

  - `ErrorCode` (string)
    Example: "NotFoundError"

  - `Message` (string)
    Example: "Object not found"

  - `Data` (object)
    Example: {"ObjectType":"","ObjectID":""}


