GET v1/Shops/{shopId}/Products/{productId}
Get product projection for a shop. This is a simplified shop view of a product. Most important changes compared to Full product view: <list type="bullet"><item>Product Properties are already translated for the shop (Caption and Value)</item><item>Published is True when both Product.Punlished and ProductSelectionProduct.Active are True</item><item>Product Stock quantities are already filtered based on warehouses for shop</item><item>Prices are copied from ProductSelectionProduct</item></list>
Request Information
URI Parameters
| Name | Description | Type | Additional information |
|---|---|---|---|
| shopId |
Id of shop |
integer |
Required. |
| productId |
Id of product |
integer |
Required. |
Body Parameters
None.
Response Information
Resource Description
ShopProduct| Name | Description | Type | Additional information |
|---|---|---|---|
| MainImageFile |
Main Product Image file information |
File |
None. |
| Properties |
A collection of Product Properties. |
Collection of ShopProductProperty |
None. |
| ShopId |
Id of Shop |
integer |
None. |
| ExchangeRate |
Exchange rate. This is the conversion rate used based on the currency of the ShopOwner |
decimal number |
None. |
| ForeignPriceExVat |
Price exclusive VAT (Sales Tax) for shop |
decimal number |
None. |
| ForeignPriceInVat |
Price inclusive VAT (Sales Tax) for shop |
decimal number |
None. |
| VatTariff |
Vat Tariff |
VATTariff |
None. |
| ShopGroupId |
Gets or sets the shop group identifier. |
integer |
Required |
| Note |
Gets or sets the note. |
string |
Max length: 2147483647 |
| RefCode |
An optional reference for the Product. |
string |
Max length: 500 |
| ProductBrand |
Optionally contains Brand information for the Product. |
ProductBrand |
None. |
| ProductVariantParentId |
The Id to the ProductVariant parent. The Type of the product should be ProductVariant (2) when used. |
integer |
None. |
| VariantInfo |
This field contains a summary of the values of the Variation properties. This field is only used when the Type = ProductVariant (2). Eg: 'Black | XL' |
string |
Max length: 100 |
| CreationDate |
Gets the creation date. |
date |
Required |
| KeepStock |
Gets or sets a value indicating whether [keep stock]. |
boolean |
Required |
| IsShippable |
Gets or sets a value indicating whether [is shippable]. Note: when a product is not shippable, you can not manage stock for the product. |
boolean |
Required |
| MinimumStock |
Gets or sets the minimum stock. |
decimal number |
Required |
| MainImageFileId |
Gets or sets the main image file identifier. |
integer |
None. |
| QtyAvailable |
Gets or sets the qty available. |
decimal number |
Required |
| QtyOnHand |
Gets or sets the qty on hand. |
decimal number |
Required |
| QtyReserved |
Gets or sets the qty reserved. |
decimal number |
Required |
| Published |
Gets or sets a value indicating whether this <see cref="T:ShopCtrl.API.Models.Product" /> is published. |
boolean |
Required |
| Weight |
Gets or sets the weight. |
decimal number |
None. |
| WeightUOMId |
Gets or sets the weight uom identifier. |
integer |
None. |
| Height |
Gets or sets the height. |
decimal number |
None. |
| SizeUOMId |
Gets or sets the Size (used for length/height/width/diameter) uom identifier. |
integer |
None. |
| Length |
Gets or sets the length. |
decimal number |
None. |
| Width |
Gets or sets the width. |
decimal number |
None. |
| Diameter |
Gets or sets the Diameter. |
decimal number |
None. |
| VolumeUOMId |
Gets or sets the Volume uom identifier. |
integer |
None. |
| Volume |
Gets or sets the Volume. |
decimal number |
None. |
| PriceExVat |
Gets or sets the price ex vat. |
decimal number |
Required |
| ProductPropertyDefSetId |
Gets or sets the product property definition set identifier. |
integer |
None. |
| TransportCategoryId |
The Transport Category assigned to the Product. |
integer |
None. |
| RequiresLotNumber |
Indication whether LotNumbers are required for StockItems |
boolean |
Required |
| RequiresExpiryDate |
Indication whether ExpiryDate are required for StockItems |
boolean |
Required |
| RequiresSerialNumber |
Indication whether SerialNumbers are required for StockItems |
boolean |
Required |
| IsGroupedProduct |
Returns whether this product is a grouped product. This field is readonly. |
boolean |
None. |
| ExpiryWarningUnit |
Determines the time frame (either daily or monthly) for issuing the first and second expiry warnings. |
ExpireWarningUnitEnum |
None. |
| FirstExpiryWarning |
How many intervals are needed to trigger the first warning of a StockItem expiring. If the value is less than zero or null, the existing database value will be removed. |
integer |
None. |
| SecondExpiryWarning |
How many intervals are needed to trigger the second warning of a StockItem expiring. If the value is less than zero or null, the existing database value will be removed. |
integer |
None. |
| ProductGroups |
Gets or sets the product groups. |
Collection of integer |
None. |
| Resources |
Gets a list of all Product Resources. Resources can be additional images, documents, etc. |
Collection of ProductResource |
None. |
| ProductRelations |
Gets a list of all Product Relations. Relations can exist for cross-sell, up-sell, etc. |
Collection of ProductRelation |
None. |
| ProductVariantPropertyDefIds |
This collection holds the Id's of ProductPropertyDefinitions which are used to create Product Variants for. This collection is only used when the Product is of the Type ProductVariantParent. |
Collection of integer |
None. |
| ProductVariantIds |
This collection holds the Id's of the (child) Product Variants. This collection is only used when the Product is of the Type ProductVariantParent. |
Collection of integer |
None. |
| OriginCountryId |
Gets or sets the Country of Origin. |
integer |
None. |
| OriginCountryCode |
Gets or sets the country code (ISO2) for the Country of Origin. |
string |
None. |
| Id |
Gets or sets the identifier. |
integer |
Required |
| Code |
Gets or sets the code. |
string |
Required Max length: 100 |
| Name |
Gets or sets the name. |
string |
Max length: 400 |
| Hscode |
Gets or sets the Harmonized System Code. |
string |
Max length: 20 |
| EAN |
Gets or sets the European Article Number. |
string |
Max length: 20 |
| Type |
The ProductType, available: SimpleProduct = 0, ProductVariantParent = 1, ProductVariant = 2 |
integer |
None. |
| IsLocked |
Indicates whether product is locked against changes |
boolean |
Required |
| ChangedTimestamp |
Gets the changed timestamp. |
date |
None. |
Response Formats
application/json, text/json
{
"MainImageFile": {
"CreatedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"ChangedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"FileLength": 3,
"Checksum": "sample string 4",
"Sequence": 5,
"Base64Data": "sample string 6",
"Id": 7,
"Filename": "sample string 8"
},
"Properties": [
{
"ProductPropertyDefId": 1,
"Code": "sample string 2",
"Caption": "sample string 3",
"Value": "sample string 4"
},
{
"ProductPropertyDefId": 1,
"Code": "sample string 2",
"Caption": "sample string 3",
"Value": "sample string 4"
}
],
"ShopId": 1,
"ExchangeRate": 2.0,
"ForeignPriceExVat": 3.0,
"ForeignPriceInVat": 4.0,
"VatTariff": {
"Id": 1,
"Code": "sample string 2",
"Name": "sample string 3",
"Percentage": 4.0
},
"ShopGroupId": 5,
"Note": "sample string 6",
"RefCode": "sample string 7",
"ProductBrand": {
"Id": 1,
"Name": "sample string 2",
"Ref1": "sample string 3",
"Ref2": "sample string 4",
"Enabled": true,
"LogoFileId": 1
},
"ProductVariantParentId": 1,
"VariantInfo": "sample string 8",
"CreationDate": "2026-01-11T16:16:34.4626565+01:00",
"KeepStock": true,
"IsShippable": true,
"MinimumStock": 12.0,
"MainImageFileId": 1,
"QtyAvailable": 13.0,
"QtyOnHand": 14.0,
"QtyReserved": 15.0,
"Published": true,
"Weight": 1.0,
"WeightUOMId": 1,
"Height": 1.0,
"SizeUOMId": 1,
"Length": 1.0,
"Width": 1.0,
"Diameter": 1.0,
"VolumeUOMId": 1,
"Volume": 1.0,
"PriceExVat": 17.0,
"ProductPropertyDefSetId": 1,
"TransportCategoryId": 1,
"RequiresLotNumber": true,
"RequiresExpiryDate": true,
"RequiresSerialNumber": true,
"IsGroupedProduct": true,
"ExpiryWarningUnit": 1,
"FirstExpiryWarning": 1,
"SecondExpiryWarning": 1,
"ProductGroups": [
1,
2
],
"Resources": [
{
"Id": 1,
"CultureId": 1,
"FileId": 1,
"File": {
"CreatedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"ChangedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"FileLength": 3,
"Checksum": "sample string 4",
"Sequence": 5,
"Base64Data": "sample string 6",
"Id": 7,
"Filename": "sample string 8"
},
"Name": "sample string 2",
"Data": "sample string 3",
"Sequence": 4,
"ResourceType": 5,
"ContentType": 6,
"ChangedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"CreatedTimestamp": "2026-01-11T16:16:34.4626565+01:00"
},
{
"Id": 1,
"CultureId": 1,
"FileId": 1,
"File": {
"CreatedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"ChangedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"FileLength": 3,
"Checksum": "sample string 4",
"Sequence": 5,
"Base64Data": "sample string 6",
"Id": 7,
"Filename": "sample string 8"
},
"Name": "sample string 2",
"Data": "sample string 3",
"Sequence": 4,
"ResourceType": 5,
"ContentType": 6,
"ChangedTimestamp": "2026-01-11T16:16:34.4626565+01:00",
"CreatedTimestamp": "2026-01-11T16:16:34.4626565+01:00"
}
],
"ProductRelations": [
{
"RelatedProductId": 1,
"RelationType": 2,
"Quantity": 3,
"Sequence": 4
},
{
"RelatedProductId": 1,
"RelationType": 2,
"Quantity": 3,
"Sequence": 4
}
],
"ProductVariantPropertyDefIds": [
1,
2
],
"ProductVariantIds": [
1,
2
],
"OriginCountryId": 1,
"OriginCountryCode": "sample string 19",
"Id": 20,
"Code": "sample string 21",
"Name": "sample string 22",
"Hscode": "sample string 23",
"EAN": "sample string 24",
"Type": 25,
"IsLocked": true,
"ChangedTimestamp": "2026-01-11T16:16:34.4626565+01:00"
}
application/xml, text/xml
<ShopProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Id>20</Id>
<Code>sample string 21</Code>
<Name>sample string 22</Name>
<Hscode>sample string 23</Hscode>
<EAN>sample string 24</EAN>
<Type>25</Type>
<IsLocked>true</IsLocked>
<ChangedTimestamp>2026-01-11T16:16:34.4626565+01:00</ChangedTimestamp>
<ShopGroupId>5</ShopGroupId>
<Note>sample string 6</Note>
<RefCode>sample string 7</RefCode>
<ProductBrand>
<Id>1</Id>
<Name>sample string 2</Name>
<Ref1>sample string 3</Ref1>
<Ref2>sample string 4</Ref2>
<Enabled>true</Enabled>
<LogoFileId>1</LogoFileId>
</ProductBrand>
<ProductVariantParentId>1</ProductVariantParentId>
<VariantInfo>sample string 8</VariantInfo>
<CreationDate>2026-01-11T16:16:34.4626565+01:00</CreationDate>
<KeepStock>true</KeepStock>
<IsShippable>true</IsShippable>
<MinimumStock>12</MinimumStock>
<MainImageFileId>1</MainImageFileId>
<QtyAvailable>13</QtyAvailable>
<QtyOnHand>14</QtyOnHand>
<QtyReserved>15</QtyReserved>
<Published>true</Published>
<Weight>1</Weight>
<WeightUOMId>1</WeightUOMId>
<Height>1</Height>
<SizeUOMId>1</SizeUOMId>
<Length>1</Length>
<Width>1</Width>
<Diameter>1</Diameter>
<VolumeUOMId>1</VolumeUOMId>
<Volume>1</Volume>
<PriceExVat>17</PriceExVat>
<ProductPropertyDefSetId>1</ProductPropertyDefSetId>
<TransportCategoryId>1</TransportCategoryId>
<RequiresLotNumber>true</RequiresLotNumber>
<RequiresExpiryDate>true</RequiresExpiryDate>
<RequiresSerialNumber>true</RequiresSerialNumber>
<IsGroupedProduct>true</IsGroupedProduct>
<ExpiryWarningUnit>Day</ExpiryWarningUnit>
<FirstExpiryWarning>1</FirstExpiryWarning>
<SecondExpiryWarning>1</SecondExpiryWarning>
<ProductGroups>
<ProductGroupId>1</ProductGroupId>
<ProductGroupId>2</ProductGroupId>
</ProductGroups>
<Resources>
<Resources>
<Id>1</Id>
<CultureId>1</CultureId>
<FileId>1</FileId>
<File>
<Id>7</Id>
<Filename>sample string 8</Filename>
<CreatedTimestamp>2026-01-11T16:16:34.4626565+01:00</CreatedTimestamp>
<ChangedTimestamp>2026-01-11T16:16:34.4626565+01:00</ChangedTimestamp>
<FileLength>3</FileLength>
<Checksum>sample string 4</Checksum>
<Sequence>5</Sequence>
<Base64Data>sample string 6</Base64Data>
</File>
<Name>sample string 2</Name>
<Data>sample string 3</Data>
<Sequence>4</Sequence>
<ResourceType>5</ResourceType>
<ContentType>6</ContentType>
<ChangedTimestamp>2026-01-11T16:16:34.4626565+01:00</ChangedTimestamp>
<CreatedTimestamp>2026-01-11T16:16:34.4626565+01:00</CreatedTimestamp>
</Resources>
<Resources>
<Id>1</Id>
<CultureId>1</CultureId>
<FileId>1</FileId>
<File>
<Id>7</Id>
<Filename>sample string 8</Filename>
<CreatedTimestamp>2026-01-11T16:16:34.4626565+01:00</CreatedTimestamp>
<ChangedTimestamp>2026-01-11T16:16:34.4626565+01:00</ChangedTimestamp>
<FileLength>3</FileLength>
<Checksum>sample string 4</Checksum>
<Sequence>5</Sequence>
<Base64Data>sample string 6</Base64Data>
</File>
<Name>sample string 2</Name>
<Data>sample string 3</Data>
<Sequence>4</Sequence>
<ResourceType>5</ResourceType>
<ContentType>6</ContentType>
<ChangedTimestamp>2026-01-11T16:16:34.4626565+01:00</ChangedTimestamp>
<CreatedTimestamp>2026-01-11T16:16:34.4626565+01:00</CreatedTimestamp>
</Resources>
</Resources>
<ProductRelations>
<ProductRelations>
<RelatedProductId>1</RelatedProductId>
<RelationType>2</RelationType>
<Quantity>3</Quantity>
<Sequence>4</Sequence>
</ProductRelations>
<ProductRelations>
<RelatedProductId>1</RelatedProductId>
<RelationType>2</RelationType>
<Quantity>3</Quantity>
<Sequence>4</Sequence>
</ProductRelations>
</ProductRelations>
<ProductVariantPropertyDefIds>
<ProductVariantPropertyDefIds>1</ProductVariantPropertyDefIds>
<ProductVariantPropertyDefIds>2</ProductVariantPropertyDefIds>
</ProductVariantPropertyDefIds>
<ProductVariantIds>
<ProductVariantIds>1</ProductVariantIds>
<ProductVariantIds>2</ProductVariantIds>
</ProductVariantIds>
<OriginCountryId>1</OriginCountryId>
<OriginCountryCode>sample string 19</OriginCountryCode>
<MainImageFile>
<Id>7</Id>
<Filename>sample string 8</Filename>
<CreatedTimestamp>2026-01-11T16:16:34.4626565+01:00</CreatedTimestamp>
<ChangedTimestamp>2026-01-11T16:16:34.4626565+01:00</ChangedTimestamp>
<FileLength>3</FileLength>
<Checksum>sample string 4</Checksum>
<Sequence>5</Sequence>
<Base64Data>sample string 6</Base64Data>
</MainImageFile>
<Properties>
<Property>
<ProductPropertyDefId>1</ProductPropertyDefId>
<Code>sample string 2</Code>
<Caption>sample string 3</Caption>
<Value>sample string 4</Value>
</Property>
<Property>
<ProductPropertyDefId>1</ProductPropertyDefId>
<Code>sample string 2</Code>
<Caption>sample string 3</Caption>
<Value>sample string 4</Value>
</Property>
</Properties>
<ShopId>1</ShopId>
<ExchangeRate>2</ExchangeRate>
<ForeignPriceExVat>3</ForeignPriceExVat>
<ForeignPriceInVat>4</ForeignPriceInVat>
<VatTariff>
<Id>1</Id>
<Code>sample string 2</Code>
<Name>sample string 3</Name>
<Percentage>4</Percentage>
</VatTariff>
</ShopProduct>