How to use AtomPub interface:
1. Access the repository based on packages: The base URL is http://host:portnumber/repository/packages
a). Get package list:
A HTTP GET request to URL http://host:portnumber/repository/packages returns a list of packages in the repository in Atom Feed format. An example looks like below:
<feed xml:base="http://localhost:9080/repository/packages">
<title type="text">Packages</title>
<entry xml:base="http://localhost:9080/repository/packages">
<title type="text">defaultPackage</title>
<link href="http://localhost:9080/repository/packages/defaultPackage"/>
</entry>
<entry xml:base="http://localhost:9080/repository/packages">
<title type="text">testPackage1</title>
<link href="http://localhost:9080/repository/packages/testPackage1"/>
</entry>
</feed>
This allows users to navigate from packages to a specific package using the URL link returned.
b). Get a specific pacakge:
A HTTP GET request to URL http://host:portnumber/repository/packages/testPackage1 returns testPackag1 in the repository in Atom Entry format. An example looks like below:
<entry xml:base="http://localhost:9080/repository/packages/testPackage1">
<title type="text">testPackage1</title>
<id>5632cf6c-0ef5-4ccc-b7e5-293285c4ce19</id>
<link href="http://localhost:9080/repository/packages/testPackage1"/>
<summary type="text">desc1</summary>
<updated>2008-10-17T08:12:42.046Z</updated>
<content type="text">This is the actual content of testPackage1</content>
</entry>
c). Create a package:
A HTTP POST request to URL http://host:portnumber/repository/packages with the data:
<entry xml:base="http://localhost:9080/repository/packages">
<title type="text">testPackage1</title>
</entry>
creates a package named testPackage1 in the repository
d). Update a package:
A HTTP PUT request to URL http://host:portnumber/repository/packages with the data:
<entry xml:base="http://localhost:9080/repository/packages">
<title type="text">testPackage1</title>
<summary type="text">desc2</summary>
<content type="text">This is the actual content of testPackage1</content>
</entry>
updates testPackage1 in the repository
e). Delete a package:
A HTTP DELETE request to URL http://host:portnumber/repository/packages/testPackage1 deletes the package testPackage1
f). Get asset list under the pacakge:
A HTTP GET request to URL http://host:portnumber/repository/packages/testPackage1/assets returns a list of assets under the testPackage1 in the repository in Atom feed format. An example looks like below:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:base="http://localhost:9080/repository/packages/testPackage1/assets">
<title type="text">Packages</title>
<entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets">
<title type="text">testAsset1</title>
<link href="http://localhost:9080/repository/packages/packageName/asset/testAsset1" />
</entry>
<entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets">
<title type="text">testAsset2</title>
<link href="http://localhost:9080/repository/packages/packageName/asset/testAsset2" />
</entry>
</feed>
g). Get an asset:
Again a HTTP GET request to URL http://host:portnumber/repository/packages/testPackage1/assets/testAsset1 returns the testAsset1 under the testPackage1 in the repository in Atom entry format
f). History and versions:
A HTTP GET request to URL http://host:portnumber/repository/packages/testPackage1/assets/myassets/versions returns a list of versions in Atom feed format. An example looks like below:
A HTTP GET request to URL http://host:portnumber/repository/packages/{packageName}/assets/{artifactName}/versions/{versionName} returns an asset with specified version name in Atom Entry format. An example looks like below:
g). Asset attributes/metadata:
A HTTP GET request to URL http://host:portnumber/repository/packages/testPackage1/assets/{assetName}/metadatatypes returns a list of metadata types(names) belong to the specified asert in Atom feed format. An example looks like below:
A HTTP POST request to URL http://host:portnumber/repository/packages/testPackage1/assets/{assetName}/metadatatypes
with the data:
<entry xml:base="http://localhost:9080/repository/packages/testPackage1/assets/myasset/metadatatypes">
<title type="text">mycustomedTag</title>
</entry>
creates a metadate named mycustomedTag for myasset
2. Access the repository based on categories:The base URL is http://host:portnumber/repository/categories
3. The mapping between Atom Entry element and Drools PackageItem is as below:
atom:title - PackageItem.name
atom:id - PackageItem.UUID
atom:updated - PackageItem.lastModified
atom:summary - PackageItem.description
To be defined:
* Collections: packages?
* Binary stuff
* Subscribe for particular categories, statuses etc. - use the URLs
* Paging?
* Querying?
* Versioning - how to get history - URL - again??
* Repository standard? (see google group)
Comments