This is the initial list of use cases that were discussed and considered as part of the design and requirements-gathering process for the API extension architecture.  While the project has moved on from initial requirements gathering and into implementation, it is still valuable to have additional use cases from Fedora adopters.  If you have use cases for API-X that do not match up with items on the list below, please edit this page to add the additional use cases, along with a brief description.

  1. Sharing & Deploying
    1. Deploying extensions to one's own repository
      1. Simple configuration-based approach which associates a URI pattern on compliant resources with the URI of some existing backend web service, effectively acting like a reverse proxy
      2. Provide a JAX-RS class which implements an extension.
      3. Provide camel route(s) which implement an extension, or filter the representation of a resources exposed by the extension framework.
      4. Run extensions in an instance of Karaf (or cluster of karaf instances), separate from the repository
      5. Hot deploy or re-configure an extension
    2. Authoring API extensions for others to use
  2. Service Discovery & Linking
    1. Listing URIs of services available on a given object
  3. Asynchronous services or workflows
    1. Ingesting a package of objects
    2. Preparing and shipping a package of objects to some other storage (e.g. APTrust, DPN, Amazon Glacier, etc.)
  4. Constraint enforcement & reporting
    1. Validation with respect to a model as a prerequisite to successful write operations
    2. Validation reports
  5. Domain Models & APIs
    1. Complex/multi-part objects
    2. IIIF
  6. Transformation & Representations
    1. Return a representation that uses information from a graph of objects
    2. Return a representation that is stable regardless of changes in the underlying object or objects
    3. Return a representation that is created using a model of the essential characteristics of one or a graph of objects
    4. Return an emulation of the data and behavior of an object or graph of objects
  7. External access control
  • No labels