imf-mm-api Requirements

nav: | Background | Requirements | Partners | Contact + Mailing List |

Summary

The imf-mm-api project requirements were generated as a result of discussions among the project partners.

Use Cases

  1. Finding assets from IDs
    • As an Application I want to authenticate with the imf-mm-apiservice so that I can process IMF Assets
    • As an Application I want to resolve a list of URLs for an Asset ID so that I can optimally access the Asset
    • As an Application I want to register a URL for an Asset ID so that other applications can access the Asset
    • As an Application I want to de-register a URL for an Asset ID so that other applications don’t Error 404 and annoy their users
  2. Finding IMF IDs from registered IDs (EIDR, MAM etc.)
    • As an Application I want to resolve a list of Asset IDs for a ContentVersionIdentifier so that I can enumerate the assets required for processing
    • As an Application I want to register a list of Asset IDs for a ContentVersionIdentifier so that other applications can enumerate the assets required for processing
    • As an Application I want to de-register a alist of Asset IDs for a ContentVersionIdentifier so that other applications don’t Error
  3. Optimising a deliver without holding state
    • As an Application I want to negotiate with a downstream application so that I can Deliver only the IMF Assets the downstream application requires

Open Requirements

  • JSON or XML in the responses?
  • What Authentication mechanism?

FAQ

This is work in progress from ongoing discussions

  • Why Authenticate?
    • Because the facility wants to control the access of all applications.
    • We should build a Zero-Trust system where no authentication == no access
  • Why a list of URLs and not a single URL?
    • Because an asset might live online, near-line and in the cloud
    • Only the app knows which is optimal for its use
  • What registered Identifiers are supported?
    • Anything found in the ContentVersionlist
    • Probably treated as a dumb text string in the minimal implmentation
  • Why negotiate a delivery?
    • So that the two applications don’t need to hold state
    • e.g.
      • AppA "Hello AppB, here’s PKL with Asset1-10"
      •   AppB "Hello AppA, I only need Asset6,8,10"
      • AppA: "Hello AppB, here’s Delivery PKL & AM with Asset6,8,10"
      •   AppB: "Hello AppA. Thanks"
      • AppA: "Here’s Delivery XXX Receipt"