diff --git a/.DS_Store b/.DS_Store
index 16b290ff..5fe6965e 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/_raml/apps/gpsrinfo/examples/get_gpsrinfo_response.json b/_raml/apps/gpsrinfo/examples/get_gpsrinfo_response.json
new file mode 100644
index 00000000..5edb235e
--- /dev/null
+++ b/_raml/apps/gpsrinfo/examples/get_gpsrinfo_response.json
@@ -0,0 +1,36 @@
+{
+ "gpsrInfo": {
+ "pictograms": [
+ {
+ "age_restriction_0_3": {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ },
+ {
+ "skull": {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ }
+ }
+ ],
+ "safetyStatements": [
+ {
+ "H_225": {
+ "description": "Highly flammable liquid and vapour."
+ }
+ },
+ {
+ "H_413": {
+ "description": "May cause long lasting harmful effects to aquatic life."
+ }
+ },
+ {
+ "H_224": {
+ "description": "Extremely flammable liquid and vapour."
+ }
+ }
+
+ ]
+ }
+}
\ No newline at end of file
diff --git a/_raml/apps/gpsrinfo/gpsrinfo.raml b/_raml/apps/gpsrinfo/gpsrinfo.raml
new file mode 100644
index 00000000..fc1408c3
--- /dev/null
+++ b/_raml/apps/gpsrinfo/gpsrinfo.raml
@@ -0,0 +1,12 @@
+#%RAML 0.8
+displayName: GpsrInfo
+get:
+ description: Returns all GPSR pictogramms and safety statements from the shop. *epages6 *epagesNow
+ securedBy: [products_read]
+ is: [ locale ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include examples/get_gpsrinfo_response.json
+ schema: !include schema/get_gpsrinfo.schema.json
diff --git a/_raml/apps/gpsrinfo/schema/get_gpsrinfo.schema.json b/_raml/apps/gpsrinfo/schema/get_gpsrinfo.schema.json
new file mode 100644
index 00000000..0eba89db
--- /dev/null
+++ b/_raml/apps/gpsrinfo/schema/get_gpsrinfo.schema.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "GET GpsrInfo Schema",
+ "type": "object",
+ "properties": {
+ "": {
+ "type": "object of [gpsrinfo](page:apps-data-types#gpsrInfo)",
+ "description": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/_raml/apps/manufacturers/examples/get_manufacturers_manufacturerid_response.json b/_raml/apps/manufacturers/examples/get_manufacturers_manufacturerid_response.json
new file mode 100644
index 00000000..aec6c08f
--- /dev/null
+++ b/_raml/apps/manufacturers/examples/get_manufacturers_manufacturerid_response.json
@@ -0,0 +1,23 @@
+{
+ "zipCode": "07749",
+ "country": "Germany",
+ "street": "Heinrich-Heine-Str. 1",
+ "state": null,
+ "emailOrContactFormUrl": "test@epages.de",
+ "responsiblePersonAddress": {
+ "zipCode": "07749",
+ "country": "Germany",
+ "emailAddress": "test@epages.de",
+ "street": "Heinrich-Heine-Str. 99",
+ "state": null,
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "DJ Oetzi",
+ "phoneNumber": null
+ },
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "DJ Bass",
+ "manufacturerId": "691C23A6-6908-FB99-5807-C0A80502185B",
+ "phoneNumber": null
+}
\ No newline at end of file
diff --git a/_raml/apps/manufacturers/examples/get_manufacturers_response.json b/_raml/apps/manufacturers/examples/get_manufacturers_response.json
new file mode 100644
index 00000000..d492f51b
--- /dev/null
+++ b/_raml/apps/manufacturers/examples/get_manufacturers_response.json
@@ -0,0 +1,43 @@
+{
+ "results": 2,
+ "page": 1,
+ "resultsPerPage": 2,
+ "items": [
+ {
+ "zipCode": null,
+ "country": null,
+ "street": null,
+ "state": null,
+ "emailOrContactFormUrl": null,
+ "responsiblePersonAddress": null,
+ "city": null,
+ "streetDetails": null,
+ "company": "Tatonka",
+ "manufacturerId": "691B2E5A-A321-9921-8A5E-C0A805021988",
+ "phoneNumber": null
+ },
+ {
+ "zipCode": "07749",
+ "country": "Germany",
+ "street": "Heinrich-Heine-Str. 1",
+ "state": null,
+ "emailOrContactFormUrl": "test@epages.de",
+ "responsiblePersonAddress": {
+ "zipCode": "07749",
+ "country": "Germany",
+ "emailAddress": "test@epages.de",
+ "street": "Heinrich-Heine-Str. 99",
+ "state": null,
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "DJ Oetzi",
+ "phoneNumber": null
+ },
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "DJ Bass",
+ "manufacturerId": "691C23A6-6908-FB99-5807-C0A80502185B",
+ "phoneNumber": null
+ }
+ ]
+}
diff --git a/_raml/apps/manufacturers/examples/patch_manufacturers_manufacturerid_request.json b/_raml/apps/manufacturers/examples/patch_manufacturers_manufacturerid_request.json
new file mode 100644
index 00000000..4dbd086e
--- /dev/null
+++ b/_raml/apps/manufacturers/examples/patch_manufacturers_manufacturerid_request.json
@@ -0,0 +1,32 @@
+[{
+ "op": "add",
+ "path": "/manufacturerAddress",
+ "value": {
+ "zipCode": "12345",
+ "country": "FR",
+ "street": "Heinrich-Heine-Str. 555",
+ "state": null,
+ "emailOrContactFormUrl": "test@epages.de",
+ "city": "Jena",
+ "streetDetails": null,
+ "phoneNumber": null,
+ "company": "DJ Anton",
+ "responsiblePersonAddress": {
+ "zipCode": "07745",
+ "country": "Germany",
+ "emailAddress": "test@epages.de",
+ "street": "Heinrich-Heine-Str. 6000",
+ "state": null,
+ "city": "Berlin",
+ "streetDetails": null,
+ "company": "Tony Tester",
+ "phoneNumber": "1234567890"
+ }
+
+ }
+},
+{
+ "op": "remove",
+ "path": "/responsiblePersonAddress"
+}
+]
\ No newline at end of file
diff --git a/_raml/apps/manufacturers/examples/patch_manufacturers_manufacturerid_response.json b/_raml/apps/manufacturers/examples/patch_manufacturers_manufacturerid_response.json
new file mode 100644
index 00000000..0a152f88
--- /dev/null
+++ b/_raml/apps/manufacturers/examples/patch_manufacturers_manufacturerid_response.json
@@ -0,0 +1,23 @@
+{
+ "zipCode": "12345",
+ "country": "FR",
+ "street": "Heinrich-Heine-Str. 555",
+ "state": null,
+ "emailOrContactFormUrl": "test@epages.de",
+ "city": "Jena",
+ "streetDetails": null,
+ "phoneNumber": null,
+ "company": "DJ Anton",
+ "responsiblePersonAddress": {
+ "zipCode": "07745",
+ "country": "Germany",
+ "emailAddress": "test@epages.de",
+ "street": "Heinrich-Heine-Str. 6000",
+ "state": null,
+ "city": "Berlin",
+ "streetDetails": null,
+ "company": "Tony Tester",
+ "phoneNumber": "1234567890"
+ },
+ "manufacturerId": "691C23A6-6908-FB99-5807-C0A80502185B"
+}
diff --git a/_raml/apps/manufacturers/examples/post_manufacturer_request.json b/_raml/apps/manufacturers/examples/post_manufacturer_request.json
new file mode 100644
index 00000000..9a72dcdc
--- /dev/null
+++ b/_raml/apps/manufacturers/examples/post_manufacturer_request.json
@@ -0,0 +1,36 @@
+[
+ {
+ "zipCode": "07749",
+ "country": "DE",
+ "street": "Heinrich-Heine-Str. 1",
+ "state": "Thüringen",
+ "responsiblePersonAddress": {
+ "zipCode": "07749",
+ "country": "DE",
+ "emailAddress": "test@epages.de",
+ "street": "Heinrich-Heine-Str. 99",
+ "state": "Thüringen",
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "Responsible Company",
+ "phoneNumber": "12345"
+ },
+ "emailOrContactFormUrl": "test@epages.de",
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "Fancy Manufacturer",
+ "phoneNumber": "08154711"
+},
+{
+"zipCode": 7863,
+"country": "Italy",
+"street": "Via Regia 42",
+"state": null,
+"responsiblePersonAddress": null,
+"emailOrContactFormUrl": null,
+"city": null,
+"streetDetails": null,
+"company": "Ducati",
+"phoneNumber": "1234567890"
+}
+]
diff --git a/_raml/apps/manufacturers/examples/post_manufacturer_response.json b/_raml/apps/manufacturers/examples/post_manufacturer_response.json
new file mode 100644
index 00000000..807ed768
--- /dev/null
+++ b/_raml/apps/manufacturers/examples/post_manufacturer_response.json
@@ -0,0 +1,38 @@
+[
+ {
+ "zipCode": "07749",
+ "country": "DE",
+ "street": "Heinrich-Heine-Str. 1",
+ "state": "Thüringen",
+ "responsiblePersonAddress": {
+ "zipCode": "07749",
+ "country": "DE",
+ "emailAddress": "test@epages.de",
+ "street": "Heinrich-Heine-Str. 99",
+ "state": "Thüringen",
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "Responsible Company",
+ "phoneNumber": "12345"
+ },
+ "emailOrContactFormUrl": "test@epages.de",
+ "city": "Jena",
+ "streetDetails": null,
+ "company": "Fancy Manufacturer",
+ "phoneNumber": "08154711",
+ "manufacturerId": "693FDFB0-C202-DD74-584A-C0A80502D85C"
+ },
+ {
+ "zipCode": 7863,
+ "country": "Italy",
+ "street": "Via Regia 42",
+ "state": null,
+ "responsiblePersonAddress": null,
+ "emailOrContactFormUrl": null,
+ "city": null,
+ "streetDetails": null,
+ "company": "Ducati",
+ "phoneNumber": "1234567890",
+ "manufacturerId": "693FDFB0-C202-DD74-584A-C0A80502X3YZ"
+ }
+]
diff --git a/_raml/apps/manufacturers/manufacturers.raml b/_raml/apps/manufacturers/manufacturers.raml
new file mode 100644
index 00000000..bdcc63b8
--- /dev/null
+++ b/_raml/apps/manufacturers/manufacturers.raml
@@ -0,0 +1,70 @@
+#%RAML 0.8
+displayName: Manufacturers
+get:
+ description: Returns all manufacturers with their addresses from the shop. *epages6 *epagesNow
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include examples/get_manufacturers_response.json
+ schema: !include schema/get_manufacturers.schema.json
+post:
+ description: Creates a new manufacturer. *epages6 *epagesNow
+ securedBy: [products_write]
+ is: [ locale, currency ]
+ body:
+ application/json:
+ example: !include examples/post_manufacturer_request.json
+ schema: !include schema/post_manufacturer_request.schema.json
+ responses:
+ 201:
+ body:
+ application/json:
+ example: !include examples/post_manufacturer_response.json
+ schema: !include schema/post_manufacturer.schema.json
+
+/{manufacturerId}:
+ displayName: Manufacturer
+ uriParameters:
+ manufacturerId:
+ description: The unique identifier of the manufacturer.
+ example: 693FDFB0-C202-DD74-584A-C0A80502D85C
+ get:
+ description: Returns information on a single manufacturer. *epages6 *epagesNow
+ securedBy: [products_read]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include examples/get_manufacturers_manufacturerid_response.json
+ schema: !include schema/get_manufacturers_manufacturerid.schema.json
+ patch:
+ description: Updates information for a single manufacturer with partial data according to [RFC 6902](https://tools.ietf.org/html/rfc6902). You can either add or remove certain attributes. *epages6 *epagesNow
+
+ *Supported JSON-PATCH operations*
+ - add (sets or replaces an attribute)
+ - remove (unsets an attribute)
+
+ *Attribute paths that allow updates via PATCH*
+ - /manufacturerAddress¹
+ - /responsiblePersonAddress²
+
+ **¹** supports *add* only
+ **²** supports *remove* only
+
+ securedBy: [products_write]
+ body:
+ application/json-patch+json:
+ example: !include examples/patch_manufacturers_manufacturerid_request.json
+ schema: !include schema/patch_manufacturers_manufacturerid_request.schema.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include examples/patch_manufacturers_manufacturerid_response.json
+ schema: !include schema/patch_manufacturers_manufacturerid.schema.json
+ delete:
+ description: Deletes a single manufacturer. *epages6 *epagesNow
+ securedBy: [products_write]
+ responses:
+ 204:
diff --git a/_raml/apps/manufacturers/schema/get_manufacturers.schema.json b/_raml/apps/manufacturers/schema/get_manufacturers.schema.json
new file mode 100644
index 00000000..cc41f8c0
--- /dev/null
+++ b/_raml/apps/manufacturers/schema/get_manufacturers.schema.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "GET Manufacturers Schema",
+ "type": "object",
+ "properties": {
+ "results": {
+ "type": "integer",
+ "description": "The number of manufacturers in total."
+ },
+ "page": {
+ "type": "integer",
+ "description": "The page number on which the manufacturers appears."
+ },
+ "resultsPerPage": {
+ "type": "integer",
+ "description": "The number of manufacturers returned per page."
+ },
+ "items": {
+ "type": "array of [manufacturer](page:apps-data-types#manufacturer)",
+ "description": "The list of all manufacturers."
+ }
+ }
+}
\ No newline at end of file
diff --git a/_raml/apps/manufacturers/schema/get_manufacturers_manufacturerid.schema.json b/_raml/apps/manufacturers/schema/get_manufacturers_manufacturerid.schema.json
new file mode 100644
index 00000000..a3957015
--- /dev/null
+++ b/_raml/apps/manufacturers/schema/get_manufacturers_manufacturerid.schema.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "GET Manufacturers ManufacturerID Schema",
+ "type": "object",
+ "properties": {
+ "": {
+ "type": "object of [manufacturer](page:apps-data-types#manufaturer)",
+ "description": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/_raml/apps/manufacturers/schema/patch_manufacturers_manufacturerid.schema.json b/_raml/apps/manufacturers/schema/patch_manufacturers_manufacturerid.schema.json
new file mode 100644
index 00000000..6e4b2105
--- /dev/null
+++ b/_raml/apps/manufacturers/schema/patch_manufacturers_manufacturerid.schema.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "PATCH Manufacturers ManufacturerID Schema",
+ "type": "object",
+ "properties": {
+ "": {
+ "type": "object of [manufacturer](page:apps-data-types#manufacturer)",
+ "description": ""
+ }
+ }
+}
diff --git a/_raml/apps/manufacturers/schema/patch_manufacturers_manufacturerid_request.schema.json b/_raml/apps/manufacturers/schema/patch_manufacturers_manufacturerid_request.schema.json
new file mode 100644
index 00000000..0522029b
--- /dev/null
+++ b/_raml/apps/manufacturers/schema/patch_manufacturers_manufacturerid_request.schema.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "PATCH Manufacturers ManufacturerID Request Schema",
+ "type": "object",
+ "properties": {
+ "": {
+ "type": "array of [jsonPatch](page:apps-data-types#jsonpatch)",
+ "description": ""
+ }
+ }
+}
diff --git a/_raml/apps/manufacturers/schema/post_manufacturer.schema.json b/_raml/apps/manufacturers/schema/post_manufacturer.schema.json
new file mode 100644
index 00000000..dc4c2859
--- /dev/null
+++ b/_raml/apps/manufacturers/schema/post_manufacturer.schema.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "POST Manufacturer Schema",
+ "type": "object",
+ "properties": {
+ "": {
+ "type": "array of [manufacturer](page:apps-data-types#manufacturer)",
+ "description": ""
+ }
+ }
+}
diff --git a/_raml/apps/manufacturers/schema/post_manufacturer_request.schema.json b/_raml/apps/manufacturers/schema/post_manufacturer_request.schema.json
new file mode 100644
index 00000000..339bdf7a
--- /dev/null
+++ b/_raml/apps/manufacturers/schema/post_manufacturer_request.schema.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "title": "POST Manufacturer Request Schema",
+ "type": "object",
+ "properties": {
+ "": {
+ "type": "array of [manufacturer (create request)](page:apps-data-types#manufacturer-create-request)",
+ "description": ""
+ }
+ }
+}
diff --git a/_raml/apps/products/examples/get_product_productid_response.json b/_raml/apps/products/examples/get_product_productid_response.json
index ae4dc9bc..5ac8a021 100644
--- a/_raml/apps/products/examples/get_product_productid_response.json
+++ b/_raml/apps/products/examples/get_product_productid_response.json
@@ -257,6 +257,27 @@
"source": "https://vimeo.com/7265982"
}
],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
diff --git a/_raml/apps/products/examples/get_product_response.json b/_raml/apps/products/examples/get_product_response.json
index c12529f8..d638a02a 100644
--- a/_raml/apps/products/examples/get_product_response.json
+++ b/_raml/apps/products/examples/get_product_response.json
@@ -130,6 +130,27 @@
"stocklevel": null,
"minStocklevel": null,
"isInWishlist": false,
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"videos": [
{
"type": "YouTube",
@@ -293,6 +314,27 @@
"source": "https://vimeo.com/7265982"
}
],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
@@ -566,6 +608,27 @@
"source": "https://vimeo.com/7265982"
}
],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
diff --git a/_raml/apps/products/examples/get_product_updated_property_response.json b/_raml/apps/products/examples/get_product_updated_property_response.json
index 130cdd97..8e472cd4 100644
--- a/_raml/apps/products/examples/get_product_updated_property_response.json
+++ b/_raml/apps/products/examples/get_product_updated_property_response.json
@@ -245,6 +245,27 @@
"minStocklevel": 10,
"isInWishlist": false,
"videos": [],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
diff --git a/_raml/apps/products/examples/patch_product_productid_request.json b/_raml/apps/products/examples/patch_product_productid_request.json
index cd1f1054..48647bf2 100644
--- a/_raml/apps/products/examples/patch_product_productid_request.json
+++ b/_raml/apps/products/examples/patch_product_productid_request.json
@@ -134,4 +134,19 @@
"op": "add",
"path": "/orderUnitInfo",
"value": { "priceQuantity":1, "orderUnit":"piece(s)", "minOrder":1, "intervalOrder":1 }
-}]
\ No newline at end of file
+},
+{
+ "op": "add",
+ "path": "/gpsrInfo",
+ "value": {
+ "pictograms": ["skull", "age_restriction_0_3"],
+ "safetyStatements": ["H_413","H_225", "H_372"],
+ "supplemetaryInformation": "Dangerous"
+ }
+},
+{
+ "op": "remove",
+ "path": "/gpsrInfo"
+}
+
+]
\ No newline at end of file
diff --git a/_raml/apps/products/examples/patch_product_productid_response.json b/_raml/apps/products/examples/patch_product_productid_response.json
index 580d317f..131a4293 100644
--- a/_raml/apps/products/examples/patch_product_productid_response.json
+++ b/_raml/apps/products/examples/patch_product_productid_response.json
@@ -217,6 +217,27 @@
"minStocklevel": 10,
"isInWishlist": false,
"videos": [],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
diff --git a/_raml/apps/products/examples/post_product_find_response.json b/_raml/apps/products/examples/post_product_find_response.json
index 9cf6f2ed..8589c57f 100644
--- a/_raml/apps/products/examples/post_product_find_response.json
+++ b/_raml/apps/products/examples/post_product_find_response.json
@@ -134,6 +134,27 @@
"source": "https://vimeo.com/7265982"
}
],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
@@ -281,6 +302,27 @@
"source": "https://vimeo.com/7265982"
}
],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
@@ -490,6 +532,27 @@
"source": "https://vimeo.com/7265982"
}
],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
diff --git a/_raml/apps/products/examples/post_product_request.json b/_raml/apps/products/examples/post_product_request.json
index 562fa8fa..3f32afaf 100644
--- a/_raml/apps/products/examples/post_product_request.json
+++ b/_raml/apps/products/examples/post_product_request.json
@@ -5,5 +5,10 @@
"description": "This is a brand new product",
"manufacturer": "Awesome Products Company",
"price": 5.99,
- "searchKeywords": ["awesome", "product"]
+ "searchKeywords": ["awesome", "product"],
+ "gpsrInfo": {
+ "pictograms": ["skull", "age_restriction_0_3"],
+ "safetyStatements": ["H_413","H_225", "H_372"],
+ "supplemetaryInformation": "Dangerous"
+ }
}
diff --git a/_raml/apps/products/examples/post_product_response.json b/_raml/apps/products/examples/post_product_response.json
index 6b35b29b..15329638 100644
--- a/_raml/apps/products/examples/post_product_response.json
+++ b/_raml/apps/products/examples/post_product_response.json
@@ -85,6 +85,27 @@
"minStocklevel": null,
"isInWishlist": false,
"videos": [],
+ "gpsrInfo": {
+ "responsiblePersonAddress": null,
+ "manufacturerAddress": null,
+ "pictograms": [
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-skull.svg",
+ "description": "Acute toxicity"
+ },
+ {
+ "url": "https://pm.epages.com/rs/shops/apidocu/WebRoot/SafetyPictograms/product-safety-age-0-3.svg",
+ "description": "Not suitable for children under 3 years of age."
+ }
+ ],
+ "safetyStatements": [
+ "May cause long lasting harmful effects to aquatic life.",
+ "Flammable liquid and vapour.",
+ "May cause damage to organs through prolonged or repeated exposure."
+ ],
+ "relevantDocuments": [],
+ "supplemetaryInformation": "Dangerous"
+ },
"links": [
{
"rel": "self",
diff --git a/_raml/apps/products/products.raml b/_raml/apps/products/products.raml
index b12861da..86d7aa80 100644
--- a/_raml/apps/products/products.raml
+++ b/_raml/apps/products/products.raml
@@ -121,7 +121,8 @@ post:
- /productDataSheet
- /shippingMethodsRestrictedTo
- /productCode
- - /orderUnitInfo¹
+ - /orderUnitInfo¹
+ - /gpsrInfo
**¹** supports *add* only
**²** value will not be replaced, but changed, i.e. if the stocklevel is 3 and you add 1, you will get 4; if you add -5, you will get -2.
diff --git a/apps/data-types.md b/apps/data-types.md
index a68a7646..73052cde 100644
--- a/apps/data-types.md
+++ b/apps/data-types.md
@@ -373,6 +373,32 @@ ePages Now only!
| filter | object of [filter](page:apps-data-types#filter) | The available filter with name and value or name and range that is used for filtering. |
| selectedValue | string | The search term(s) used for filtering. |
+
+## gpsrInfo
+
+| Attribute | Type | Description |
+| - | - | - |
+| pictograms | array of pictograms objects | The GPSR pictograms of the system |
+| safetyStatements | array of safetyStatement objects | The GPSR safety statements of the system |
+
+## gpsrInfo (create request)
+
+| Attribute | Type | Description |
+| - | - | - |
+| pictograms | array of pictograms | The GPSR pictogram names. |
+| safetyStatements | array of safetyStatement | The GPSR safety statement names. |
+| supplemetaryInformation | string | The text of the supplementary information. |
+
+## gpsrInfo (get request)
+
+| Attribute | Type | Description |
+| - | - | - |
+| responsiblePersonAddress | object of [responsiblePerson](page:apps-data-types#responsibleperson) | The address of the responsible person of a manufaturer. |
+| manufacturerAddress| object of [manufacturer](page:apps-data-types#manufacturer) | The address of the product manufacturer. |
+| pictograms | array of pictograms | The GPSR pictogram names. |
+| safetyStatements | array of safetyStatement | The GPSR safety statement names. |
+| supplemetaryInformation | string | The text of the supplementary information. |
+
## image
| Attribute | Type | Description |
@@ -430,6 +456,34 @@ ePages Now only!
| href | string | The URL of the related link that can be used for subsequent calls. |
| title | string | The title of the item that is linked. (optional) |
+## manufacturersPaged
+
+| Attribute | Type | Description |
+| - | - | - |
+| results | string | The number of manufacturers in total. |
+| page | string | The page number on which the manufacturers appear. |
+| resultsPerPage | string | The number of manufacturers returned per page. |
+| items | object of [manufacturer](page:apps-data-types#manufacturer) | The list of all manufacturers. |
+
+
+## manufacturer
+
+This object is used for the attributes of manufacturers.
+
+| Attribute | Type | Description |
+| - | - | - |
+| company | string | The manufacturer's company.|
+| street | string | The street name of the manufacturer's address. |
+| streetDetails | string | An additional field for the street address.|
+| zipCode | string | The zip or postal code of the address. |
+| city | string | The name of the city. |
+| state | string | The name of the state.|
+| country | string | The name of the country. |
+| phoneNumber | string | The manufacturer's landline number. |
+| emailOrContactFormUrl | string | The manufacturer's email or website url |
+| responsiblePersonAddress | object of [responsiblePerson](page:apps-data-types#responsibleperson) | The address of the responsible person of a manufaturer. |
+| manufacturerId | string | The identifier of manufacturer. |
+
## minimumCart
| Attribute | Type | Description |
@@ -647,6 +701,8 @@ This object is used for the attributes of basePrice, depositPrice, ecoParticipat
| intervalOrder | number | The increment by which the order amount for the product can be adjusted (e.g. 1.5 m). |
| productCode | string | The product code (e.g. EAN, UPC, ASIN and ISBN). |
| isInWishlist | boolean | Indicates if the product is stored as a wish list item. |
+| gpsrInfo | object of [gpsrInfo (get request)](page:apps-data-types#gpsrinfo-get-request)| The GPSR data of the product.|
+
## product (create request)
@@ -669,6 +725,8 @@ This object is used for the attributes of basePrice, depositPrice, ecoParticipat
| depositPrice | number | The deposit price for the product, e.g. bottle deposit.|
| manufacturerPrice | number | The sales price recommended by the manufacturer.|
| deliveryWeight | object of [deliveryWeightQuantity](page:apps-data-types#deliveryweightquantity)| The delivery weight of the product.|
+| gpsrInfo | object of [gpsrInfo (create request)](page:apps-data-types#gpsrinfo-create-request)| The GPSR data for the product.|
+
## productLineItem
@@ -837,6 +895,21 @@ ePages Now only!
| amount | number | The amount displayed as a decimal number. |
| unit | string | The unit displayed as abbreviated unit, if available. Can be one of *Byte*, *kByte*, *MByte*, *GByte*, *TByte*, *l*, *ml*, *ft³*, *in³*, *m³*, *yd³*, *fl oz*, *gal*, *qt*, *m*, *cm*, *ft*, *in*, *km*, *mm*, *yd*, *s*, *min*, *m²*, *cm²*, *ft²*, *in²*, *mm²* or *yd²*. Otherwise a localised name of the unit is displayed. Can be *piece(s)*, *bottle(s)*, *crate(s)*, *can(s)*, *capsule(s)*, *box(es)*, *glass(es)*, *kit(s)*, *pack(s)*, *package(s)*, *pair(s)*, *roll(s)*, *set(s)*, *sheet(s)*, *ticket(s)*, *unit(s)*, *day(s)*, *hour(s)*, *week(s)*, *month(s)*, *night(s)* or *year(s)*. |
+## responsiblePerson
+
+| Attribute | Type | Description |
+| - | - | - |
+| company | string | The reponsible persons's company. |
+| street | string | The street name of the reponsible persons's address. |
+| streetDetails | string | An additional field for the street address.|
+| zipCode | string | The zip or postal code of the address. |
+| city | string | The name of the city. |
+| state | string | The name of the state. |
+| country | string | The name of the country. |
+| phoneNumber | string | The reponsible persons's landline number. |
+| emailAddress | string | The reponsible persons's email address |
+
+
## sales
| Attribute | Type | Description |