The iPIM Server REST API make use of the principles of hateoas although using *URI variables instead of the standard _links variable.
The idea is that each returned resource also contains links to resources somehow related to the current resource, or links for progress tracking.
Examples:
Related Resources Links:
The product resource response for instance contains itemsURI with a link to the corresponding items resources, itemURIs with a list of links to each corresponding item resource and dimensionURIs with a list of links to each corresponding dimension resource.
GET .../iPIM/rest/api/product/100990
{
"productNo": "100990",
"description": "Product 100990",
"category": {
"pimRef": "1",
"parentPimRef": "1",
"identifier": "CATALOG",
"descriptions": [
{
"text": "iPIM Classification",
"lang": "en_GB"
},
{
"text": "Klassifikation",
"lang": "de_DE"
}
],
"sequenceNo": 1,
"categoryURI": "/iPIM/rest/api/categories/CATALOG?versionIdentifier=VER_EK",
"versionIdentifier": "VER_EK"
},
"objectType": "ARTICLE_TYPE_PRODUCT",
"itemURIs": [
"/iPIM/rest/api/items/100990%20BLAU%20L",
"/iPIM/rest/api/items/100990%20BLAU%20M",
"/iPIM/rest/api/items/100990%20BLAU%20XL",
"/iPIM/rest/api/items/100990%20BLAU%20XXL",
"/iPIM/rest/api/items/100990%20BLAU%20XXXL",
"/iPIM/rest/api/items/100990%20GRUEN%20L",
"/iPIM/rest/api/items/100990%20GRUEN%20M",
"/iPIM/rest/api/items/100990%20GRUEN%20XL",
"/iPIM/rest/api/items/100990%20GRUEN%20XXL",
"/iPIM/rest/api/items/100990%20GRUEN%20XXXL",
"/iPIM/rest/api/items/100990%20ROT%20L",
"/iPIM/rest/api/items/100990%20ROT%20M",
"/iPIM/rest/api/items/100990%20ROT%20XL",
"/iPIM/rest/api/items/100990%20ROT%20XXL",
"/iPIM/rest/api/items/100990%20ROT%20XXXL",
"/iPIM/rest/api/items/7000001301",
"/iPIM/rest/api/items/7000000500",
"/iPIM/rest/api/items/7000001302"
],
"dimensionURIs": [
"/iPIM/rest/api/dimensions/8000000104",
"/iPIM/rest/api/dimensions/8000000103",
"/iPIM/rest/api/dimensions/8000000002",
"/iPIM/rest/api/dimensions/8000000000",
"/iPIM/rest/api/dimensions/8000000001"
],
"selfURI": "/iPIM/rest/api/products/100990",
"itemsURI": "/iPIM/rest/api/items?itemNos=100990%20BLAU%20L%2C100990%20BLAU%20M%2C100990%20BLAU%20XL%2C100990%20BLAU%20XXL%2C100990%20BLAU%20XXXL%2C100990%20GRUEN%20L%2C100990%20GRUEN%20M%2C100990%20GRUEN%20XL%2C100990%20GRUEN%20XXL%2C100990%20GRUEN%20XXXL%2C100990%20ROT%20L%2C100990%20ROT%20M%2C100990%20ROT%20XL%2C100990%20ROT%20XXL%2C100990%20ROT%20XXXL%2C7000001301%2C7000000500%2C7000001302"
}
Progress Tracking Links:
Some resource responses contain URI with a link for tracking the progress of an asynchronous action or process. This link can either be in the response body or part of the response header Progress-Location
.
POST .../iPIM/rest/api/assetexport/exportassets
Request:
{
"asynchronousMode": false,
"serviceCaller": "iPIM Buy",
"assetExportProfileIdentifier": "ORIGINAL_FORMAT",
"assetTitles": [
"985652.jpg"
]
}
Response Body:
{
"targetAssetExportPaths": [
"/home/ipim/data/assetexport/8f5e1148-980b-40c6-a0c3-bb13b5fd70f8_985652.jpg"
]
}
Response Header:
Progress-Location /processes/10062516