HATEOAS

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