Documentation
Interface Changes
Changes with IMS V23H1
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V23H1 | StoreApi returns status 409 if the key already exists | Detail |
|
|
The StoreApi returns status 409 if the key already exists. Before it made an update and returned status 201. |
||||
Changes with IMS V22H1
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V22H1 | New PublisherUrlsApi to create IMS Publisher URLs | Detail |
|
|
The PublisherUrlsApi creates IMS Publisher URL settings supporting all documented options. |
||||
Changes with IMS V21H2
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V21H2 | The KeywordCatalogApi supports catalogs with validity time ranges | Detail |
|
|
Requesting a catalog on the KeywordCatalogApi provides a different behaviour depending on what is used as identifier:
|
||||
|
Changed/Fixed
|
V21H2 | The KeywordCatalogApi POST method has changed the URL | Detail |
|
|
POST a catalog for update or creation doesn't anymore need the qualification of its name in the URL. Status 201 is returned upon successfull operation
|
||||
|
Add
|
V21H2 | The EntryOriginalApi supports caching using ETag and If-None-Matches header fields | Detail |
|
|
The EntryOriginalApi sends a ETag in GET calls and accepts earlier sent ETag as value for the If-None-Matches header field for caching support. |
||||
|
Add
|
V21H2 | The EntryThumbnailApi supports caching using ETag and If-None-Matches header fields | Detail |
|
|
The EntryThumbnailApi sends a ETag in GET calls and accepts earlier sent ETag as value for the If-None-Matches header field for caching support. |
||||
Changes with IMS V20H1
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V20H1 | The EntriesUploadApi allows file names with non-ASCII characters | Detail |
|
|
The EntriesUploadApi allows the declaration of files with non-ASCII characters by URL-encoding them. Along with the header field "URLEncodedFilename:true", this allows the REST-API to correctly handle such files. |
||||
|
Add
|
V20H1 | The ModelTableApi has an additional qualifier attribute for fields | Detail |
|
|
The ModelTableApi now provides a qualifier attribute for each field which can have one of the two values SYSTEM and USER. SYSTEM means that the field is a IMS internal system field and should not be written. USER is a customer specific field. |
||||
|
New
|
V20H1 | The AliasApi provides alias for all archive tables and fields from all alias sets defined by the IMS Server | Detail |
|
|
The AliasApi provides for each archive allways at least Default set and for each set at least the Default language. Additional sets and languages are available if they are definded in the IMS Server. |
||||
Changes with IMS V19H1
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V19H1 | The SegmentsApi has a new attribut type. | Detail |
|
|
The SegmentsApi has a new attribute type. This new attribute can have the values restclient, restacquisition and mobilecapture. Mobilecapture is only for internal use and can not be used by an external application. |
||||
|
Add
|
V19H1 | The TokensApi may return 3 new error codes. | Detail |
|
|
The TokensApi may return 3 new error codes if the segment type is mobilecapture. Forbidden RestError with error code MobileCaptureAppDevicesExhausted: This is returned if all instances of a mobilecapture license segment are bound to a mobile device. Bad Request RestError with error code UnknownLicenseSegment: This is returned if an unknown license segment is used. Bad Request RestError with error code WrongSegmentUsage: This is returned if an external application tries to use a mobilecapture license segment. |
||||
Changes with IMS V18Q2
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Fix
|
V18Q2 | ConditionsApi, FiltersApi, PermissionsApi and RolesApi do not response with unexpected body content after POST requests. | Detail |
|
|
The resources ConditionsApi, FiltersApi, PermissionsApiand RolesApi did response on POST request with and unexpected body content. They still response with a status header 201 and the location of the created entity but now without any body content. |
||||
Changes with IMS V17Q2
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V17Q2 | Create an image entry with a linked path instead of uploading the image | Detail |
|
|
The EntriesUploadSettingApi has been extend to define a linked file to link large image files without the need for an upload. Check Create Linked Image Entry for how to create a linked image entry. |
||||
Changes with IMS V17Q1
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Fix
|
V17Q1 | EntriesFilterApi user/domain comparison is case sensitive | Detail |
|
|
While searching for filters in the entries resource the domain/user has been taken from user request instead of the stored user in the database. The EntriesFilterApi was empty even when the user has correct filters and roles configured. |
||||
|
Add
|
V17Q1 | Changing size information for streamed download | Detail |
|
|
The header of the response for the EntryOriginalApi and the EntryThumbnailApi has been changed. The Content-Length attribute is provided as http header for single file node, but not for multi file nodes. The size attribute has been removed from the Content-Disposition header. |
||||
Changes with IMS V16Q3
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
New
|
V16Q3 | Add ims-FileSize to Entry Image Attributes Api | Detail |
|
|
In order to read the file size of an original image the ims-FileSize is now present in the GET response of the EntryImageAttributesApi |
||||
|
Add
|
V16Q3 | Do no longer return a bad request response when Image Attributes with ims- prefix will be added to the EntryImageAttributesApi | Detail |
|
|
Image Attribute Keys posted to the Entry Image Attributes Api that start with the ims- prefix will now be silently ignored instead of returning a BadRequest RestError with errorcode ImageAttributeImsKeyNotAllowed |
||||
|
Add
|
V16Q3 | Errorcode change to InvalidLicenseToken in case a token expired | Detail |
|
|
When a token expires there will now be a new errorcode InvalidLicenseToken that replaces the generic InsufficentPrivilegs errorcode |
||||
|
New
|
V16Q3 | Add ims special keys to search expression | Detail |
|
|
The search expression that will be used for querying entries and for filter permissions has been extended to support ims special keys. %USER%, %GROUP% will be automatically replaced with the current logged in user / group. See example queries in the search chapter |
||||
|
Fix
|
V16Q3 | Allow updating and replacing of Annotations | Detail |
|
|
While updating annotations points have been added to the object instead of replaced. It was also not possible to change an annotation type while keeping the same ordinalNumber attribute |
||||
Changes with IMS V16Q2
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
New
|
V16Q2 | New Keyword Catalogs resources | Detail |
|
|
The KeywordcatalogApi and KeywordcatalogsApi allow to modify existing keyword catalogs. |
||||
|
Add
|
V16Q2 | Added Keyword Catalog Link to Model Fields | Detail |
|
|
ModelFields has been extened with a catalogHref link to the keyword catalog. |
||||
|
New
|
V16Q2 | Introduction of Boolean Condition | Detail |
|
|
If you want to globaly activate / deactivate an operation for a spefic scope it is now possible to use boolean conditions. See details in the Entires Authorisation Section |
||||
|
New
|
V16Q2 | Default Permissions when creating a filter | Detail |
|
|
If you create a new filter with no permissions configured all default permissions will be automatically created. We suggest to always create a filter without permissions and then change the default behaviour. |
||||
|
Add
|
V16Q2 | Executing an operation without any condition is no longer possible | Detail |
|
|
It is no longer possible to execute an operation for a specific scope if there is no permission configured. |
||||
|
Add
|
V16Q2 | Automatic Filter migration with first server start | Detail |
|
|
To ensure same behaviour as in V16Q1 for every default operation and scope a default permissions will be created with the first time you start the rest server with a V16Q2 release. Already created permissions will not be touched. Please take care that Boolean Conditions created with V16Q2 are not working on a V16Q1 release |
||||
|
New
|
V16Q2 | Update entry without writing modification fields | Detail |
|
|
It is now possible to update entries, annotations, calibrations without writing the ims specific modification fields. See details in the chapter Update entry without writing modification fields. |
||||
Changes with IMS V16Q1
| Status | Version | Date | Description | Detail |
|---|---|---|---|---|
|
Add
|
V16Q1 | Added Domain User to UserApi | Detail |
|
|
If a user is in a domain the user entity now contains the
domain as a field. See UserApi for an
example
|
||||
|
Add
|
V16Q1 | Unify ImageAttributesApi Response | Detail |
|
|
To unifiy all resources the ImageAttributesApi does
no longer just provide a key value map but contains a
navigation info. The key value map is now a value of the
attributes key
|
||||
|
New
|
V16Q1 | Introduction Optmistic Concurrency | Detail |
|
|
To prevent REST clients from overwriting concurrent changes done by other users we introduced the optimistic concurrency feature for the REST interface. This requires REST clients to send an additional If-Match HTTP header when updating or deleting entries. Please check Optimistic concurrency for update and Optimistic concurrency for delete on how to use the new feature. |
||||
|
New
|
V16Q1 | Introduction Licensing | Detail |
|
|
The REST interface requires a valid ims license to access entires. This means that for all /rest/entries/* resources one need to send a valid rest token that can be created via the license resources. Read the chapter Licensing for detailed information about how to create such tokens. |
||||
|
New
|
V16Q1 | Controll Image Rotation with UploadSetting | Detail |
|
|
The ImageUpload resource has been extended to put image upload settings. This can be used to control image rotation during the inseration of a new image. See Image Upload Settings for further information. |
||||
|
Add
|
V16Q1 | Milliseconds added to DateTime Fields | Detail |
|
|
All fields of type DateTime now contains milliseconds. Thus the response for all DateTime Fields will change when loading an entry. For example "IAModificationDate":"2015-12-04T09:50:23Z" will change to "IAModificationDate":"2015-12-04T09:50:23.923Z" This change will not affect old DateTime queries. It is still possible to search for a DateTime without milliseconds ( DATETIME_FIELD(>2014-01-10T09:35:10Z is still possible). Still we highly recommend to include the milliseconds in your search queries ( DATETIME_FIELD(>2014-01-10T09:35:10.921Z ). |
||||
|
New
|
V16Q1 | New field useOwnUnit in Measurement of Annotations | Detail |
|
|
If the value of this field is set to false (default) it means that the documents calibration unit is used, in case of true the unit value of the measurement is used. |
||||
Best Practice
Token Management
Any client to the IMAGIC REST API should first create a license token and persist it.
It is recommended to just use this one token.
In case the token expires (server restart or token is more than 5 minutes unused) see here how to create a new license token
Introduction
This section describes the current version of the IMS REST API by explaining various high-level concepts.
The documentation includes examples using curl or Advanced Rest Client requests for easier understanding. Naturally, these examples use full URLs. Nevertheless, a IMS REST client should always be programmed to follow links to reach the resources and should thus not know any hardcoded URLs expect for the entry point.
Please note that the whole API is still under active development and some aspects may change.
Authentification
To login to the IMS REST API you must authenticate via the HTTP Basic Authentication Scheme. All resources except (this documentation) require such an authentication.
The login name and password are the same as in IMS, no addional setup for REST is needed.
$ curl -u <username>:<password> http://localhost:9000/rest
If the user is in a domain the domain will be added before the username seperated with a backslash.
$ curl -u <domain\username>:<password> http://localhost:9000/rest
In addition to the user/password approach, 3rd party applications can login with user and a token. The corresponding token can be created with the Open In Tool in the IMS client and will expire when the user terminates the IMS client.
$ curl -u <username>:<token> http://localhost:9000/rest
Typical Server Responses
The following list compiles typical IMS REST API status codes and their meanings. This list is not complete
- 200 OK - The request was successful
- 201 Created - The request was successful and the created resource can be found in the location header
- 204 No Content - The request was successful but there is no representation to return. Used when deleting a entry
- 400 Bad Request - The request could not be understood or was missing required parameters.
- 401 Unauthorized - Authentication failed because the password/token is wrong or the user is not a valid IMS user
- 404 Not Found - Resource was not found
- 405 Method Not Allowed - Requested method is not supported for the specified resource.
- 500 Internal Server Error - We could not process the request due to a internal problem
Error Handling
Every status code over 400 means that something went wrong. In this case, the body of the response contains a JSON object wraps the statusCode, an errroCode, a message, and optionally a server stacktrace.
{
"statusCode": 404,
"errorCode": "TableNotFound",
"message": "TableNotFoundException:Table not found: MyTable2"
}
There is a resource for the currently known error codes:
$ curl -u admin:admin http://localhost:9000/rest/info/errorcodes
Entry Point
The IMS REST API has been designed such that every resource can be reached from the entry point just by following the provided links. You can see this in the Live Demo RootApi, which will direct you to the RootApi.
For compatibility with future versions of the IMS REST API, clients must be programmed to follow these links instead of hard-coding URLs to reach the actual resources.
Model
As IMS installations can differ greatly in the layout of the archive, a REST client must first learn the structure of the archive it is interested in. To that end, the IMS REST API provides model resources. The ModelArchivesApi lists available archives. For each archive, a ModelArchiveApi defines the tables and their hierarchy (where the last table is the image table that stores binary media). Finally, a ModelTableApi resource describes a table with a set of standard IMS fields and the custom fields.
REST clients that do not program against the model but hard-code a certain structure will fail to work for customers that don't adhere the assumed structure.
The easiest way to get familiar with the models, is to click through it. See the ModelArchivesApi it will direct you to the ModelArchivesApi.
Entries Authorisation
The authorisation of the REST API mirrors the workplace and permissions concept in the IMS client. There, a workplace defines a set of functionality that is available to a group of users. Within the workplace, the permissions configured in the Image Manager restricts the access to the archive. In the IMS REST api, a role corresponds to a workplace and similar to the workplaces, a user can use a role only if she is a member of one of the groups associated with the role. Each role allows in turn the selection of a filter. The filter defines the permissions for creating, reading, updating and deleting IMS entries. Thus a filter corresponds to the permissions of an Image Manager within the workplace.
For the REST client, this means that for each access to the entries, it must pick a filter. This filter must be associated with a role that is available to the user (because the user is a member in one of the groups associated with the role).
Only IMS configurator users are allowed to create roles and filters. Currently, roles and filters can be created and modifed only through the REST API. Later versions of IMS will automatically create roles for each created workplace and filters for each Image Manager within the workplace. Consequently, the EntriesFilterApi is initially empty and you must first create at least one role and one filter to access the entries. The following paragraphs detail how to do this.
To create a role, provide its name and one or more IMS groups:
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin -d '{"name":"myRole", "groups":[{"id": "2"}]}' \
http://localhost:9000/rest/roles
This returns the location of the created role:
HTTP/1.1 201 Created Location: http://localhost:9000/rest/roles/1
To create a filter without any restrictions, provide its name, a reference to the IMS archive, and one or more roles that you want to associate with the filter:
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin -d '{"name":"NoRestriction", "archiveName":"myarchive", "roles":[{"id": "1"}]}' \
http://localhost:9000/rest/filters
This returns the location of the created filter:
HTTP/1.1 201 Created Location: http://localhost:9000/rest/filters/2
As the filter has been created without any permissions the default permissions have been created. The default permission create an activated boolean condition on allow all standard operations (READ, WRITE, CREATE, DELETE) for every scopes (tables)
How to obtain a token, see below Licensing
$ curl -v -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" http://localhost:9000/rest/entries/2
Restrict access to entries
To restrict access to entries you must add a permission to a filter. This can only be done if the IMS license contains the AccessRightManagement Feature .
So first create a new filter with a descriptive name:
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin \
-d '{"name":"RestrictionBigImages", "archiveName":"myarchive", "roles":[{"id": "1"}]}' \
http://localhost:9000/rest/filters
This returns the location of the created filter:
HTTP/1.1 201 Created Location: http://localhost:9000/rest/filters/3
The filter has been created with it's default permissions. If you to want restrict access for a specific operation or scope first reload the filter to get an overview of the permissions.
curl -v -X GET -H "Content-Type: application/json" -u admin:admin http://localhost:9000/rest/filters/3
This returns the filter with all it's default permissions
Click to collapse
{
"id":"3",
"name":"RestrictionBigImages",
"archiveName":"myarchive",
"permissions":[
{
"dataHref":"http://localhost:16201/rest/filters/3/permissions/109",
"operation":"READ_ROW",
"scope":"Image",
"conditions":[
{
"id":"120",
"type":"BOOLEAN_CONDITION",
"condition":"true"
}
]
},
....
]
}
Now we will delete the default permission to later create our permission with the Im_Widht restriction
curl -v -X DELETE -H "Content-Type: application/json" -u admin:admin http://localhost:9000/rest/filters/3/permissions/109
Last step is to recreate the permission. Every permission has a scope (table of the archive) a operation (for Example READ_ROW) and one or more conditions. There are two condition types. The BOOLEAN_CONDITION that can be used to enable / disable an operation. And the EXPRESSION_CONDITION that are written in the query syntax. See more info about the syntax in the section Search from the documentation.
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin \
-d '{"scope":"Image", "operation":"READ_ROW", "conditions":[{"type":"EXPRESSION_CONDITION", "condition":"Im_Width(<100)"}]}' \
http://localhost:9000/rest/filters/3/permissions
When a REST client now accesses the images with the newly created filter, it will see images where the Im_Width field is less than 100 only.
$ curl -v -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" http://localhost:9000/rest/entries/3/Image
Licensing
To access the /rest/entries/* resources a valid license token needs to be present in the request. The REST interface expects this token in an ims-rest-token header. To obtain a rest token one must first select a segment from the LicenseSegmentsApi and then post this segment to the LicenseTokensApi. This will create a resource for the new token.
Be aware that per license segment only one token can be reserved
and therefore be active at the same time.
In case there is
already a token reserved for a license segment when trying to
follow the steps from above, a
RestAcquisitionClientAlreadyInUseException
will be thrown, saying
The user: ... has insufficent privileges.The license
token: ... is invalid. Please create a new license token
You then can either use the already reserved token or release the
assigned license, see below or
wait for 5 minutes without any further access until the license
segment gets released.
We recommend that you locally cache the license token in order to prevent acquiring a new license token for every request against the /rest/entries/* resources. The expiration for the rest token will be extended with every request against any /rest/entries/* resource. This allows continuous working with the same license token.
So first let's list all license segments:
$ curl -v -X GET -H "Content-Type: application/json" -u admin:admin http://localhost:9000/rest/license/segments
{"segments": [{
"name": "Rest Aquisition Client 2",
"licensePermission": {
"modifyEntries": true,
"hostname": "wsserver",
"readers": [
{ "id": "PNG","mimeString": "image/png"},
{ "id": "BMP","mimeString": "image/x-ms-bmp"},
{ "id": "JPEG","mimeString": "image/jpeg"}]
}
}]}
Now with the segment name create a license token:
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin http://localhost:9000/rest/license/tokens \
-d '{"name": "Rest Acquisition Client 2"}'
This returns the URI to the license token resource:
HTTP/1.1 201 Created Location: http://localhost:16101/rest/license/tokens/RDFDMjg4NjcwMzU1M0YwNzZCOTE1QzM2MkY0NkZFMUM=
With this URI one can get the license token and the expiration date of the token. The token will be extended every time it has been used.
curl -X GET -H "Content-Type: application/json" -u admin:admin http://localhost:16101/rest/license/tokens/RDFDMjg4NjcwMzU1M0YwNzZCOTE1QzM2MkY0NkZFMUM=
{"token":"ArDKGGLcOa0y5rpI9gdAW1","licenseExpirationDate":"2015-10-28T16:45:12Z"}
All requests to the /rest/entries/* resources need to have a valid license token in the ims-rest-token header:
$ curl -v -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" -u admin:admin http://localhost:9000/rest/entries/3/Image
If the token has already expired, the REST client will receive HTTP status 403 with error code InvalidLicenseToken. It's advised that REST clients are prepared for this error upon every request and create a new token in this case.
Release a license
It is possible to release a license so other users can reuse this license segment. To protected against fraud it is currently possible to release a segment 3600 times per hour.
$ curl -v -X DELETE -u admin:admin http://localhost:9000/rest/license/tokens/RDFDMjg4NjcwMzU1M0YwNzZCOTE1QzM2MkY0NkZFMUM=
Create entry
When creating a new entry all mandatory fields must be present. The model resource of the table lists the mandatory fields. The REST client must transmit the fields of the new entry as a key-value pairs where both parts are strings.
When uploading date/time related fields use the following patterns:
- yyyy-MM-dd'T'HH:mm:ssX for datetime
- yyyy-MM-dd for date
- HH:mm:ss for time
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" -d '{"fields": { "I_PatID", "PAT001"}}' http://localhost:9000/rest/entries/3/Patient
Create image entry
When creating an entry in the image table, the REST client first needs to post to the upload resource of the image table to create a new upload container. In this container the image will be stored and later assigned to a new image entry:
$ curl -v -X POST -H "Content-Type: application/json" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" \ http://localhost:9000/rest/entries/3/Image/uploadsThis returns the location of the container where the image can be uploaded:
HTTP/1.1 201 Created Location: http://localhost:9000/rest/entries/13/Image/uploads/7C846779B8F607EBFFA11C17F9083686
In the next step, the REST client posts the binary data to the created container. It is mandatory to set a filename as part of the Content-Disposition header.
$ curl -v -H "Content-Type:application/octet-stream" -H "Content-Disposition: attachment; filename=flower.jpg" \ -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" --data-binary @flower.jpg \ http://localhost:9000/rest/entries/13/Image/uploads/7C846779B8F607EBFFA11C17F9083686
Alternatively, if the filename contains non-ASCII characters, it has to be declared URL-encoded and accompanied with the header field URLEncodedFilename:true for correct processing
$ curl -v -H "Content-Type:application/octet-stream" -H "Content-Disposition: attachment; filename=%D7%A4%D7%A5%D7%A6%20%E0%AE%95%E0%AE%99%20%E0%BD%99%E0%BD%9A%E0%BD%9B%E0%BD%9C%E0%BD%9D%E0%BD%9E%E0%BD%9F%20%E2%9D%B5%E2%9D%B6%E2%9D%B7%20%E3%94%89%E3%94%8A%E3%94%8B.bin" \ -H "URLEncodedFilename:true" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" --data-binary @פץצ கங ཙཚཛཛྷ�ཞཟ ��� 㔉㔊㔋.bin \ http://localhost:9000/rest/entries/13/Image/uploads/7C846779B8F607EBFFA11C17F9083686
Finally, to create a new image resource, the REST client posts the fields of the image to the upload container. For multi-level archives, it is mandatory to include a reference to the parent entry.
$ curl -v -H "Content-Type:application/json" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" \
-d '{"fields":{"IDStudy": "7", "I_Manufact": "ManufactExample"}}' \
http://localhost:9000/rest/entries/13/Image/uploads/7C846779B8F607EBFFA11C17F9083686
This will return the location of the new image entry
HTTP/1.1 201 Created Location: http://localhost:9000/rest/entries/13/Image/8
Update Image Entry
The update of the Image of an Image Entry is almost equivalent to the creation of a Single Image Entry. The only difference is that when updating the entry the entryID and the ifMatch header must be present.
$ curl -v -H "Content-Type:application/json" -H "If-Match:1441701592710" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" \
-d '{"entryId":"13", "fields":{"I_Manufact": "ManufactExample"}}' \
http://localhost:9000/rest/entries/13/Image/uploads/7C846779B8F607EBFFA11C17F9083686
Create Multi File Image Entry
The creation of a Multi File Image Entry is almost equivalent to the creation of a Single Image Entry. Just post all multi file elements sequentially to the upload container. Be aware that the first uploaded file is automatically the main file that should reference other files.
To create a subfolder append the directory name to the container url.
$ curl -v -H "Content-Type:application/json" -H "If-Match:1441701592710" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" \
-d '{"entryId":"13", "fields":{"IDStudy": "7", "I_Manufact": "ManufactExample"}}' \
http://localhost:9000/rest/entries/13/Image/uploads/7C846779B8F607EBFFA11C17F9083686/subfolder
Image Upload Settings
When creating an image entry the image will be uploaded according to upload settings. Currently one can configure if jpg and tiff images will be automatically rotated according to their exif tags. The setting can be found in every upload container in the EntriesUploadSettingApi. To overwrite this setting execute a PUT request to the EntriesUploadSettingApi with the upload settings.
$ curl -v -X PUT -H "Content-Type: application/json" -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1 \
-u admin:admin -d '{"readerSetting" : {"autoRotateJpeg" : false,"autoRotateTiff" : true }}' \
http://localhost:9000/rest/entries/13/Image/uploads/DE073A419F2BA53A3BCAF4308FC112CF/setting
Create linked Image Entry
The linked image entry feature can be used to link large image files to the ims archive. Instead of coping the stream the file will just be linked from a shared drive. Be aware that the file must be accessible for reading from ims server!
Instead of posting the binary data, a fully qualified file name must be passed with the EntriesLinkApi using the linkedFilePath attribute.
For multi-level archives, it is mandatory to include a reference to the parent entry.
$ curl -v -X PUT -H "Content-Type: application/json" -u admin:admin -H "ims-rest-token:token:ArDKGGLcOa0y5rpI9gdAW1" \
-d '{"fields":{"IDStudy": "7", "I_Manufact": "ManufactExample"}, "originals": [{"linkedFilePath": "\\\\ims\\ext\\images\\IMAGE.TIF"}]}' \
http://localhost:9000/rest/entries/13/Image/link
Update linked Image Entry
The update of a linked Image Entry is almost equivalent to the creation of a linked Image Entry. The only difference is that when updating the entry the entryID and the ifMatch header must be present.
$ curl -v -X PUT -H "Content-Type: application/json" -H "If-Match:1441701592710" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" \
-d '{"entryId":"13", "originals": [{"linkedFilePath": "\\\\ims\\ext\\images\\OTHER_IMAGE.TIF"}]}' \
http://localhost:9000/rest/entries/13/Image/link
Optimistic concurrency for update
To prevent REST clients from updating entries that were changed concurrently by other users, it is mandatory to send an If-Match header with every update request. The If-Match header contains the entry version id that can be read from the ETag header in the get response of the entry.
Command to receive the current ETag$ curl -I -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" http://localhost:9000/rest/entries/13/Image/8 | grep ETagThis will return the ETag
ETag: 1441701592710Now this ETag can be used as the If-Match header for posting the entry that needs to be updated.
$ curl -v -H "If-Match:1441701592710" -H "Content-Type:application/json" -u admin:admin \
-d '{"fields":{"I_ImageComm": "Entry changed"}}' \
http://localhost:9000/rest/entries/13/Image/8
Optimistic concurrency for delete
To prevent REST clients from deleting entries that were changed concurrently by other users, it is mandatory to send an If-Match header with every delete request. The If-Match header contains the entry version id that can be read from the ETag header in the get response of the entry.
Command to receive the current ETag$ curl -I -u admin:admin http://localhost:9000/rest/entries/13/Image/8 | grep ETagThis will return the ETag
ETag: 1441701592710Now this ETag can be used as the If-Match header for the delete request.
$ curl -v -X DELETE -H "If-Match:1441701592710" -u admin:admin -H "ims-rest-token:ArDKGGLcOa0y5rpI9gdAW1" \ http://localhost:9000/rest/entries/13/Image/8
Update entry without writing modification fields
Caution this feature could cause ims client reload errors as the ims caching currently depends on modification fields
In rare usecases it could be possible that you are willing to update an entry, annotations or calibrations without changing the ims specific modify fields (IA_MODIFICATIONDATE, IA_MODIFICATIONUSER and IA_MODIFICATIONDATE) To do so one must first create a permission with the operation UPDATE_ROW_DONT_WRITE_MODIFY_FIELD . See details about creating a permission in the restrict access to entries section of the entries authorisation chapter. Then one must set the update_dont_write_modification_fields header to true when updating an entry.
$ curl -v -H "update_dont_write_modification_fields:true" \
-H "If-Match:1441701592710" -H "Content-Type:application/json" -u admin:admin \
-d '{"fields":{"I_ImageComm": "Entry changed"}}' \
http://localhost:9000/rest/entries/13/Image/8
Search
The entries resource supports a query parameter that allows filtering of table entries. As the query may refer to values on parent or child tables, it corresponds to a full-fledged search functionality.
The value of the query parameter is a search expression that may consist of a filter on a single field or combine multiple filters using complex AND/OR operators. The filter on a single field consists of the name of the field, an operator symbol, and a value. The supported operators depend on the type of the field. The next paragraphs detail them.
Text fields support operators that act either on single words within the field or across the whole text. The "words" stem from splitting the text according to Unicode Standard Annex #29, which basically means that any non-alphanumeric character terminates a word. Operators that act on words are in general much faster than queries on the whole text. Text fields support the following operators:
| Operator | Sample | |
|---|---|---|
| Word equals | (implicit) | abc |
| Word not equals | - | -abc |
| Field equals | = | =abc |
| Field not equals | <> | <>abc |
| Contains | "" | "abc xyz" |
| Not contains | -"" | -"abc xyz" |
| any single character within a word | ? | ab? or a?b or ?ab |
| any number of characters within a word | * | ab* or a*b or *ab |
| Field starts | FieldStartsWith: | FieldStartsWith: ab |
| Field ends | FieldEndsWith: | FieldEndsWith: yz |
| Empty | -* | -* |
Non-text fields support the following set of operators:
| Expression | Integer | Double | Date and Time | Boolean | |
|---|---|---|---|---|---|
| Equals | true, false (not case-sensitive) | ||||
| Equals | = | x | |||
| Not Equals | <> | x | |||
| More | > | x | |||
| More than | >= | x | |||
| Less | < | x | |||
| Less than | <= | x | |||
| x means not supported | |||||
Examples
- Filters on a single field
- query=Keyword_1(Messing) Filter for the word "Messing" in the field "Keyword_1" of table "Probe"
- query=Keyword_1(Mess)Filter for the word "Mess" in the field "Keyword_1" of table "Probe" (yields no results)
- query=Probenlage(Schweißerproben) Filter for the word "Schweißerproben" in the field "Probenlage" of table "Probe"
- query=Probenlage(Schwei?erproben) Same as above, but any single character instead of ß
- query=Probenlage(Schwei*proben) Same as above, but any number of characters instead of ß
- query=Probenlage(*proben) Filter for any word that ends with "proben" in the field "Probenlage" of table "Probe"
- query=Im_OriginalFilename("aterial") Filter for the character sequence "aterial" somewhere within the field "Im_OriginalFilename" of table "Mediendat3"
- query=Im_OriginalFilename("volcano(1).png") Filter for the character sequence "volcano(1).png" somewhere within the field "Im_OriginalFilename" of table "Mediendat3"
- query=Im_OriginalFilename(*) Filter for non-empty field "Im_OriginalFilename" of table "Mediendat3"
- query=Keyword_1(<>Diffusionsschicht) Filter for all entries that do NOT contain the word "Diffusionsschicht" in the field "Keyword_1" of table "Probe"
- query=Text2(-*) Filter for empty field "Text2" of table "Probe"
- Keyword_1(FieldStartsWith:AlM)
- Keyword_1(FieldEndsWith: schicht)
- query=Datum_3_1(2014-10-07)
- query=Datum_3_1(2014-10*)(not allowed)
- query=Datum_3_1(=2014-10-07)
- query=Datum_3_1(>2014-10-07)
- query=Datum_3_1(>=2014-10-07)
- query=Datum_3_1(<2014-10-07)
- query=Datum_3_1(<=2014-10-07)
- query=IACreationDate(<=2014-11-07T00:00:00:000%2B0000) (The format for DateTime values is YYYY-MM-DDThh:mm:ss+X)
- query=IDAuftrag(61) Filter for all probes that refer to the entry with "IDAuftrag" = 61 in the table "Auftrag"
- query=Im_Height(>=1024)
- OR combined filters
Use either the operator "|" or the operator "OR" to union two sub-filters. - AND combined filters
Use either the operator " " (whitespace) or the operator "AND" to intersect two sub-filters. - Parentheses
OR and AND filters can be nested, Use parentheses to group the operands. - fields from other levels
The filters can also apply to fields of parent or child entries. Use "Tablename.Fieldname" to refer to these foreign fields.- query=Mediendat3.Im_OriginalFilename(Material*) Filter for entries of table "Probe" that contain entries of table "Mediendat3" where a word of the field "Im_OriginalFilename" starts with "Material".
- ims special keys
- query=IACreationUser(%USER%) Filter for all the images that have been created from this user.
- query=IACreationGroup(%GROUP%) Filter for all the images that have been created from this users group.
Create Publisher URLs
Together with the options, a query may be sent with the request. The allowed query is restricted to match the ability of the IMS Publisher:
- OR-ing conditions on different fields like
OriginalFilename(Material2*) OR IDProbe(143) is not supported
supported: OriginalFilename(Brass) OR OriginalFilename(Nickel) - OR-ing conditions on same field but different operators like OriginalFilename(FieldStartsWith: Material2) OR OriginalFilename(Brass) is not supported
- OR-ing a condition with nested conditions like Material(Zinc) OR (Material(Brass) Processing(Drill)) is not supported
- AND-ing conditions containing OR-ed conditions not interfering the listed restrictions like Processing(Drill) (Material(Brass) OR Material(Nickel) OR Material(Steel)) is allowed
Request Logging
To ease the development of REST clients, the IMS server can log every request and response in a specific log file. To enable the debug logging. Extend the server_propeties.xml in the REST (<rest>) section with the element <EnableFileLogging>true</EnableFileLogging>
Advanced Rest Client
Advanced Rest Client is a browser plugin for Google Chrome and can be found in Chrome Web Store
In order for a fast start with the Advanced Rest Client. Download the Imagic Rest Projects JSON and import the file to the Advanced Rest Client. To import the projects open the Advanced Rest Client plugin, go to Settings --> Import / Export and drag the downloaded json file to the Import from File panel.
Use of rest annotations and measurements
Reference Version: 24.10.24
AdminStoresGlobalApi
DELETE /adminstores/global/{storeId}
Delete a global store entry by storeId
Path parameters
Responses
204
No Content404
storeId does not existGET /adminstores/global/{storeId}
Return a global entry of the store by storeId
Path parameters
Return type
Example data
{
"id" : "2",
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresGlobalEntryGET /adminstores/global
Return all global entries of the store found by any combination of these query parameters: type key
Query parameters
Return type
Example data
{
"id" : "2",
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresGlobalEntryPOST /adminstores/global
Create or update a global store entry
Consumes
- application/json
Request body
Return type
Example data
{
"id" : "2",
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
201
A global store entry has been created RestStoresGlobalEntry200
Global store entry has been updated RestStoresGlobalEntryAdminStoresGroupsApi
DELETE /adminstores/groups/{storeId}
Delete a group store entry by storeId
Path parameters
Responses
204
No Content404
storeId does not existGET /adminstores/groups
Return all group entries of the store found by any combination of these query parameters: type key groupIds
Query parameters
Return type
Example data
{
"groupIds" : 2,
"id" : "2",
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresGroupsEntryGET /adminstores/groups/{storeId}
Return a group entry of the store by storeId
Path parameters
Return type
Example data
{
"groupIds" : 2,
"id" : "2",
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresGroupsEntryPOST /adminstores/groups
Create or update a group store entry for a list of group ids
Consumes
- application/json
Request body
Return type
Example data
{
"groupIds" : 2,
"id" : "2",
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
201
A group store entry has been created RestStoresGroupsEntry200
Group store entry has been updated RestStoresGroupsEntryAdminStoresUsersApi
DELETE /adminstores/users/{storeId}
Delete a user store entry by storeId
Path parameters
Responses
204
No Content404
storeId does not existGET /adminstores/users/{storeId}
Return a user entry of the store by storeId
Path parameters
Return type
Example data
{
"id" : "2",
"type" : "type",
"value" : "value",
"userId" : "2",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresUsersEntryGET /adminstores/users
Return all user entries of the store found by any combination of these query parameters: type key userId
Query parameters
Return type
Example data
{
"id" : "2",
"type" : "type",
"value" : "value",
"userId" : "2",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresUsersEntryPOST /adminstores/users
Create or update a user store entry for a defined user
Consumes
- application/json
Request body
Return type
Example data
{
"id" : "2",
"type" : "type",
"value" : "value",
"userId" : "2",
"key" : "key"
}
Produces
- application/json
Responses
201
A user store entry has been created RestStoresUsersEntry200
User store entry has been updated RestStoresUsersEntryAliasApi
GET /alias
Provides an overview of all archives for alias.
Return type
Example data
{
"archives" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "MED_REF_024"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "MED_REF_024"
} ],
"dataHref" : "dataHref"
}
Produces
- application/json
- application/vnd.ch.imagic.Archives+json
Responses
200
OK RestAliasArchivesGET /alias/{archiveName}/{set}
Provides an overview of all sets for alias.
Path parameters
Return type
Example data
{
"archives" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "name",
"language" : "Default"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "name",
"language" : "Default"
} ],
"languages" : [ null, null ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestAliasLanguages404
Alias set not foundGET /alias/{archiveName}/{set}/{language}
Provides all alias for all tables and fields for the defined language.
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"tables" : [ {
"fieldAlias" : {
"key" : "fieldAlias"
},
"dataHref" : "dataHref",
"name" : "Image",
"alias" : "Image alias"
}, {
"fieldAlias" : {
"key" : "fieldAlias"
},
"dataHref" : "dataHref",
"name" : "Image",
"alias" : "Image alias"
} ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestAliasTables404
Language not foundGET /alias/{archiveName}
Provides an overview of all sets for alias.
Path parameters
Return type
Example data
{
"archives" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"set" : "set",
"dataHref" : "dataHref",
"name" : "Default"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"set" : "set",
"dataHref" : "dataHref",
"name" : "Default"
} ],
"sets" : [ null, null ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestAliasSets404
Archive not foundConditionApi
GET /filters/{filterId}/permissions/{permissionId}/conditions/{conditionId}
Return a condition by conditionId
Path parameters
Return type
Example data
{
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}
Produces
- application/json
Responses
200
OK RestConditionDELETE /filters/{filterId}/permissions/{permissionId}/conditions/{conditionId}
Deletea a condition by conditionId
Path parameters
Responses
204
No ContentConditionsApi
POST /filters/{filterId}/permissions/{permissionId}/conditions
Create a new condition
Path parameters
Consumes
- application/json
Request body
Responses
201
A condition has been createdGET /filters/{filterId}/permissions/{permissionId}/conditions
Return a list of conditions that are present in this permission
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ]
}
Produces
- application/json
Responses
200
OK RestConditionsEntriesApi
POST /entries/{filterId}/{tableName}
Create a new table entry
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
201
A table entry has been createdGET /entries/{filterId}/{tableName}
Return a list of table entries
Path parameters
Request headers
Query parameters
Return type
Example data
{
"uploadHref" : "http://localhost:9000/rest/entries/18/Image/uploads",
"entries" : [ {
"docType" : "JPEG",
"dataHref" : "dataHref",
"fields" : "{\"Im_InsertionDate\": \"2015-06-24T13:05:12Z\",}",
"entryId" : "6",
"tableName" : "Image"
}, {
"docType" : "JPEG",
"dataHref" : "dataHref",
"fields" : "{\"Im_InsertionDate\": \"2015-06-24T13:05:12Z\",}",
"entryId" : "6",
"tableName" : "Image"
} ],
"pagination" : {
"previousPage" : "previousPage",
"nextPage" : "nextPage",
"start" : 0,
"pageSize" : 20,
"totalEntries" : 2036
},
"modelHref" : "http://localhost:9000/rest/models/sit_rest_ref_szb/Image",
"query" : {
"uriInfo" : {
"path" : "path",
"absolutePathBuilder" : { },
"queryParameters" : {
"empty" : true
},
"baseUri" : "http://example.com/aeiou",
"absolutePath" : "http://example.com/aeiou",
"pathSegments" : [ {
"path" : "path"
}, {
"path" : "path"
} ],
"requestUri" : "http://example.com/aeiou",
"matchedURIs" : [ "matchedURIs", "matchedURIs" ],
"matchedResources" : [ { }, { } ]
},
"queryExpression" : "queryExpression"
},
"dataHref" : "dataHref",
"archiveId" : "archiveId",
"tableName" : "Image"
}
Produces
- application/json
Responses
200
OK RestTableEntries413
Payload too largeEntriesArchiveApi
GET /entries/{filterId}
Return the archive assigned to the filterId
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"tables" : [ {
"uploadHref" : "http://localhost:9000/rest/entries/18/Image/uploads",
"entries" : [ {
"docType" : "JPEG",
"dataHref" : "dataHref",
"fields" : "{\"Im_InsertionDate\": \"2015-06-24T13:05:12Z\",}",
"entryId" : "6",
"tableName" : "Image"
}, {
"docType" : "JPEG",
"dataHref" : "dataHref",
"fields" : "{\"Im_InsertionDate\": \"2015-06-24T13:05:12Z\",}",
"entryId" : "6",
"tableName" : "Image"
} ],
"pagination" : {
"previousPage" : "previousPage",
"nextPage" : "nextPage",
"start" : 0,
"pageSize" : 20,
"totalEntries" : 2036
},
"modelHref" : "http://localhost:9000/rest/models/sit_rest_ref_szb/Image",
"query" : {
"uriInfo" : {
"path" : "path",
"absolutePathBuilder" : { },
"queryParameters" : {
"empty" : true
},
"baseUri" : "http://example.com/aeiou",
"absolutePath" : "http://example.com/aeiou",
"pathSegments" : [ {
"path" : "path"
}, {
"path" : "path"
} ],
"requestUri" : "http://example.com/aeiou",
"matchedURIs" : [ "matchedURIs", "matchedURIs" ],
"matchedResources" : [ { }, { } ]
},
"queryExpression" : "queryExpression"
},
"dataHref" : "dataHref",
"archiveId" : "archiveId",
"tableName" : "Image"
}, {
"uploadHref" : "http://localhost:9000/rest/entries/18/Image/uploads",
"entries" : [ {
"docType" : "JPEG",
"dataHref" : "dataHref",
"fields" : "{\"Im_InsertionDate\": \"2015-06-24T13:05:12Z\",}",
"entryId" : "6",
"tableName" : "Image"
}, {
"docType" : "JPEG",
"dataHref" : "dataHref",
"fields" : "{\"Im_InsertionDate\": \"2015-06-24T13:05:12Z\",}",
"entryId" : "6",
"tableName" : "Image"
} ],
"pagination" : {
"previousPage" : "previousPage",
"nextPage" : "nextPage",
"start" : 0,
"pageSize" : 20,
"totalEntries" : 2036
},
"modelHref" : "http://localhost:9000/rest/models/sit_rest_ref_szb/Image",
"query" : {
"uriInfo" : {
"path" : "path",
"absolutePathBuilder" : { },
"queryParameters" : {
"empty" : true
},
"baseUri" : "http://example.com/aeiou",
"absolutePath" : "http://example.com/aeiou",
"pathSegments" : [ {
"path" : "path"
}, {
"path" : "path"
} ],
"requestUri" : "http://example.com/aeiou",
"matchedURIs" : [ "matchedURIs", "matchedURIs" ],
"matchedResources" : [ { }, { } ]
},
"queryExpression" : "queryExpression"
},
"dataHref" : "dataHref",
"archiveId" : "archiveId",
"tableName" : "Image"
} ],
"archiveName" : "MED_REF_024",
"dataHref" : "dataHref"
}
Produces
- application/json
- application/vnd.ch.imagic.Archive+json
Responses
200
OK RestEntryArchiveEntriesFilterApi
GET /entries
Return the list of filters
Request headers
Return type
Example data
{
"dataHref" : "dataHref",
"filters" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"archiveName" : "MED_REF_024",
"permissions" : [ {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}, {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
} ],
"roles" : [ {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}, {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
} ],
"dataHref" : "dataHref",
"name" : "NoRestrictions",
"description" : "This filter has no restrictions. ",
"id" : "10"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"archiveName" : "MED_REF_024",
"permissions" : [ {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}, {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
} ],
"roles" : [ {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}, {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
} ],
"dataHref" : "dataHref",
"name" : "NoRestrictions",
"description" : "This filter has no restrictions. ",
"id" : "10"
} ]
}
Produces
- application/json
Responses
200
OK RestFiltersEntriesLinkApi
POST /entries/{filterId}/{tableName}/link
Create or update a link
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
201
A link has been created200
A link has been updatedEntriesUploadApi
PUT /entries/{filterId}/{tableName}/uploads/{uploadidentifier}
Create or update a image table entry by uploadidentifier
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
201
A image table entry has been created200
A image table entry has been updatedDELETE /entries/{filterId}/{tableName}/uploads/{uploadidentifier}
Delete a container by uploadidentifier
Path parameters
Request headers
Responses
204
No ContentGET /entries/{filterId}/{tableName}/uploads/{uploadidentifier}
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"settingHref" : "settingHref",
"mainFile" : "mainFile"
}
Produces
- application/json
Responses
default
default response RestUploadGET /entries/{filterId}/{tableName}/uploads/{uploadidentifier}/{relativePathAndFilename}
Return the sub file
Path parameters
Request headers
Return type
Example data
""
Produces
- application/octet-stream
Responses
200
OK byte[]404
sub file not foundPOST /entries/{filterId}/{tableName}/uploads/{uploadidentifier}
Create a new upload entry
Path parameters
Consumes
- application/octet-stream
Request body
Request headers
Responses
201
A upload entry has been createdPOST /entries/{filterId}/{tableName}/uploads/{uploadidentifier}/{relativePath}
Create a new relative upload entry
Path parameters
Consumes
- application/octet-stream
Request body
Request headers
Responses
201
A relative upload entry has been createdEntriesUploadSettingApi
GET /entries/{filterId}/{tableName}/uploads/{uploadidentifier}/setting
Return upload settings by uploadidentifier
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"readerSetting" : {
"autoRotateTiff" : true,
"autoRotateJpeg" : true
}
}
Produces
- application/json
Responses
200
OK RestUploadSettingPUT /entries/{filterId}/{tableName}/uploads/{uploadidentifier}/setting
Update upload settings
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
200
UploadSetting has been replacedEntriesUploadsApi
POST /entries/{filterId}/{tableName}/uploads
Create a new upload id
Path parameters
Request headers
Responses
201
A upload id has been createdGET /entries/{filterId}/{tableName}/uploads
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"uploadHrefs" : [ "uploadHrefs", "uploadHrefs" ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
default
default response RestUploadsEntryApi
DELETE /entries/{filterId}/{tableName}/{entryId}
Delete a entry by entryId
Path parameters
Request headers
Responses
204
No ContentGET /entries/{filterId}/{tableName}/{entryId}
Return a table entry by entryId
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"restEntryVersionInfo" : {
"modificationTime" : 0
},
"docType" : "docType",
"dataHref" : "dataHref",
"restEntryUpdateMode" : {
"restEntryUpdateMode" : "restEntryUpdateMode"
},
"fields" : {
"key" : "fields"
},
"entryId" : "entryId",
"parentRef" : {
"name" : "name",
"id" : "id"
},
"tableName" : "tableName"
}
Produces
- application/json
Responses
200
OK RestModifiableTableEntryPOST /entries/{filterId}/{tableName}/{entryId}
Update table entry
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
200
Table entry has been updatedEntryImageAnnotationsApi
GET /entries/{filterId}/{tableName}/{entryId}/annotations
Return a list of annotations
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"annotations" : [ {
"captionProperties" : {
"visible" : true,
"opaque" : true,
"rotationAngle" : 0.0,
"font" : {
"fontName" : "Arial",
"attributes" : [ {
"type" : "type",
"value" : 10,
"key" : "SIZE"
}, {
"type" : "type",
"value" : 10,
"key" : "SIZE"
} ]
}
},
"type" : "type",
"properties" : {
"ordinalNumber" : 1,
"lineStyle" : 0,
"frameColor" : {
"red" : 255,
"green" : 127,
"blue" : 63,
"alpha" : 255
},
"lineWeight" : 2,
"showOrdinalNumber" : true
},
"connectionLineProperties" : {
"visible" : true,
"weight" : 2
},
"measurements" : {
"key" : {
"unit" : "mm",
"potency" : 2,
"useOwnUnit" : false,
"value" : 1.0
}
}
}, {
"captionProperties" : {
"visible" : true,
"opaque" : true,
"rotationAngle" : 0.0,
"font" : {
"fontName" : "Arial",
"attributes" : [ {
"type" : "type",
"value" : 10,
"key" : "SIZE"
}, {
"type" : "type",
"value" : 10,
"key" : "SIZE"
} ]
}
},
"type" : "type",
"properties" : {
"ordinalNumber" : 1,
"lineStyle" : 0,
"frameColor" : {
"red" : 255,
"green" : 127,
"blue" : 63,
"alpha" : 255
},
"lineWeight" : 2,
"showOrdinalNumber" : true
},
"connectionLineProperties" : {
"visible" : true,
"weight" : 2
},
"measurements" : {
"key" : {
"unit" : "mm",
"potency" : 2,
"useOwnUnit" : false,
"value" : 1.0
}
}
} ],
"restEntryUpdateMode" : {
"restEntryUpdateMode" : "restEntryUpdateMode"
}
}
Produces
- application/json
Responses
200
OK RestAnnotationsPOST /entries/{filterId}/{tableName}/{entryId}/annotations
Update a annotation
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
200
A annotation has been updatedEntryImageAttributesApi
GET /entries/{filterId}/{tableName}/{entryId}/original/{originalId}/attributes
Return image attributes by originalId
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"restEntryUpdateMode" : {
"restEntryUpdateMode" : "restEntryUpdateMode"
},
"attributes" : {
"key" : { }
}
}
Produces
- application/json
Responses
200
OK RestImageAttributesPUT /entries/{filterId}/{tableName}/{entryId}/original/{originalId}/attributes
Replace image attributes
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
200
Image attributes have been replacedPOST /entries/{filterId}/{tableName}/{entryId}/original/{originalId}/attributes
Update image attributes
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
200
Image attributes have been updatedEntryImageCalibrationApi
GET /entries/{filterId}/{tableName}/{entryId}/calibration
Return a calibration
Path parameters
Request headers
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"unit" : "mm",
"unitPerPixel" : 1.0,
"dataHref" : "dataHref",
"restEntryUpdateMode" : {
"restEntryUpdateMode" : "restEntryUpdateMode"
}
}
Produces
- application/json
Responses
200
OK RestCalibrationPOST /entries/{filterId}/{tableName}/{entryId}/calibration
Update image attributes
Path parameters
Consumes
- application/json
Request body
Request headers
Responses
200
Calibration has been updatedEntryOriginalApi
GET /entries/{filterId}/{tableName}/{entryId}/original/{originalId}
Return the original entry
Path parameters
Request headers
Return type
Example data
""
Produces
- application/octet-stream
Responses
200
OK byte[]304
Not modified404
Original not foundEntryThumbnailApi
GET /entries/{filterId}/{tableName}/{entryId}/thumbnail/big
Return the big thumbnail image
Path parameters
Request headers
Return type
Example data
""
Produces
- image/jpeg
Responses
200
OK byte[]304
Not modified404
Thumbnail not foundGET /entries/{filterId}/{tableName}/{entryId}/thumbnail/small
Return the thumbnail image
Path parameters
Request headers
Return type
Example data
""
Produces
- image/jpeg
Responses
200
OK byte[]304
Not modified404
Thumbnail not foundErrorCodesApi
GET /info/errorcodes
Return all error codes
Return type
Example data
[ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"errorCode" : "Unspecified"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"errorCode" : "Unspecified"
} ]
Produces
- application/json
Responses
200
OKFilterApi
DELETE /filters/{filterId}
Delete a filter by filterId
Path parameters
Responses
204
No ContentGET /filters/{filterId}
Return a filter by filterId
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"archiveName" : "MED_REF_024",
"permissions" : [ {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}, {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
} ],
"roles" : [ {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}, {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
} ],
"dataHref" : "dataHref",
"name" : "NoRestrictions",
"description" : "This filter has no restrictions. ",
"id" : "10"
}
Produces
- application/json
Responses
200
OK RestFilterFiltersApi
POST /filters
Create a new filter
Consumes
- application/json
Request body
Responses
201
A filter has been createdGET /filters
Return all filters
Return type
Example data
{
"dataHref" : "dataHref",
"filters" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"archiveName" : "MED_REF_024",
"permissions" : [ {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}, {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
} ],
"roles" : [ {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}, {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
} ],
"dataHref" : "dataHref",
"name" : "NoRestrictions",
"description" : "This filter has no restrictions. ",
"id" : "10"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"archiveName" : "MED_REF_024",
"permissions" : [ {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}, {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
} ],
"roles" : [ {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}, {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
} ],
"dataHref" : "dataHref",
"name" : "NoRestrictions",
"description" : "This filter has no restrictions. ",
"id" : "10"
} ]
}
Produces
- application/json
Responses
200
OK RestFiltersGroupApi
GET /groups/{groupid}
Return a group by groupId
Path parameters
Return type
Example data
{
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}
Produces
- application/json
Responses
200
OK RestGroupGroupsApi
GET /groups
Return all groups
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ]
}
Produces
- application/json
Responses
200
OK RestGroupsInfoApi
GET /info
Return infos about this api
Return type
Example data
{
"currentUser" : {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
},
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"errorCodesHref" : "errorCodesHref",
"dataHref" : "dataHref",
"version" : "version"
}
Produces
- application/json
Responses
200
OK RestInfoKeywordcatalogApi
GET /keywordcatalogs/{catalogIDOrName}
Return the requested keyword catalog, either identified by its ID and independent of its validity date range, or - when using the name: valid at provided, ISO8601 coded reference date (yyyy-MM-dd'T'hh:mm:ssXXX), or current time if missing
Path parameters
Query parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"keywords" : [ {
"code" : "code",
"children" : [ null, null ],
"keyword" : "masculin"
}, {
"code" : "code",
"children" : [ null, null ],
"keyword" : "masculin"
} ],
"dataHref" : "dataHref",
"name" : "sex",
"validUntil" : "2000-01-23T04:56:07.000+00:00",
"id" : "2",
"validFrom" : "2000-01-23T04:56:07.000+00:00"
}
Produces
- application/json
Responses
200
OK RestKeywordCatalog204
No catalog valid at requested reference datePOST /keywordcatalogs
Update a keyword catalog
Consumes
- application/json
Request body
Responses
201
A keyword catalog has been created/updatedKeywordcatalogsApi
GET /keywordcatalogs
Return all keyword catalogs
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"catalogs" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"keywords" : [ {
"code" : "code",
"children" : [ null, null ],
"keyword" : "masculin"
}, {
"code" : "code",
"children" : [ null, null ],
"keyword" : "masculin"
} ],
"dataHref" : "dataHref",
"name" : "sex",
"validUntil" : "2000-01-23T04:56:07.000+00:00",
"id" : "2",
"validFrom" : "2000-01-23T04:56:07.000+00:00"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"keywords" : [ {
"code" : "code",
"children" : [ null, null ],
"keyword" : "masculin"
}, {
"code" : "code",
"children" : [ null, null ],
"keyword" : "masculin"
} ],
"dataHref" : "dataHref",
"name" : "sex",
"validUntil" : "2000-01-23T04:56:07.000+00:00",
"id" : "2",
"validFrom" : "2000-01-23T04:56:07.000+00:00"
} ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestKeywordCatalogsLicenseApi
GET /license
Return a license
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"segments" : {
"dataHref" : "dataHref",
"link" : "info",
"description" : "Provides information about version, logged in user, error codes"
}
}
Produces
- application/json
Responses
200
OK RestLicenseLicenseSegmentsApi
GET /license/segments
Return all license segments
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"segments" : [ {
"licensePermission" : {
"hostname" : "hostname",
"modifyEntries" : true,
"barcodePositioning" : true,
"readers" : [ {
"mimeString" : "mimeString",
"id" : "id"
}, {
"mimeString" : "mimeString",
"id" : "id"
} ],
"modifyAnnotations" : true,
"modifyCalibration" : true,
"modifyMeasurements" : true
},
"name" : "name",
"type" : "type"
}, {
"licensePermission" : {
"hostname" : "hostname",
"modifyEntries" : true,
"barcodePositioning" : true,
"readers" : [ {
"mimeString" : "mimeString",
"id" : "id"
}, {
"mimeString" : "mimeString",
"id" : "id"
} ],
"modifyAnnotations" : true,
"modifyCalibration" : true,
"modifyMeasurements" : true
},
"name" : "name",
"type" : "type"
} ]
}
Produces
- application/json
Responses
200
OK RestLicenseSegmentsLicenseTokensApi
POST /license/tokens
Create a new license token
Consumes
- application/json
Request body
Request headers
Responses
201
A license token has been createdDELETE /license/tokens/{tokenHash}
Delete a license token by tokenHash
Path parameters
Responses
204
No ContentGET /license/tokens/{tokenHash}
Return the license token by tokenHash
Path parameters
Return type
Example data
{
"licenseExpirationDate" : "licenseExpirationDate",
"token" : "token"
}
Produces
- application/json
Responses
200
OK RestLicenseTokenMaintenanceLicenseApi
GET /maintenance/license/tokens
Return license tokens
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"tokens" : [ {
"licenseExpirationDate" : "licenseExpirationDate",
"token" : "token"
}, {
"licenseExpirationDate" : "licenseExpirationDate",
"token" : "token"
} ]
}
Produces
- application/json
Responses
200
OK RestLicenseTokensModelArchiveApi
GET /models/{archiveName}
Provides an overview of all tables of an archive. The order of the tables describe the relationship of the tables to each other. The parent table is on top, followed by its child table and so on. The Image table is the last table in the list.
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"tables" : [ {
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
}, {
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
} ],
"dataHref" : "dataHref",
"name" : "name"
}
Produces
- application/json
- application/vnd.ch.imagic.Archives+json
Responses
200
OK RestModelArchiveModelArchivesApi
GET /models
Provides an overview of all archives.
Return type
Example data
{
"archives" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"tables" : [ {
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
}, {
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
} ],
"dataHref" : "dataHref",
"name" : "name"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"tables" : [ {
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
}, {
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
} ],
"dataHref" : "dataHref",
"name" : "name"
} ],
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref"
}
Produces
- application/json
- application/vnd.ch.imagic.Archives+json
Responses
200
OK RestModelArchivesModelTableApi
GET /models/{archiveName}/{tableName}
Return a model table by table name
Path parameters
Return type
Example data
{
"identifierField" : "identifierField",
"uploadHref" : "uploadHref",
"modelHref" : "modelHref",
"dataHref" : "dataHref",
"name" : "name",
"parentReferenceField" : "parentReferenceField",
"autonamingActive" : true,
"fields" : [ {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
}, {
"catalogHref" : "catalogHref",
"qualifier" : "SYSTEM",
"dataHref" : "dataHref",
"length" : 0,
"name" : "name",
"alias" : "alias",
"sortable" : true,
"type" : "INTEGER",
"mandatory" : true,
"searchable" : true,
"writable" : true
} ]
}
Produces
- application/json
- application/vnd.ch.imagic.Archives+json
Responses
200
OK RestModelTableOperationApi
GET /operations/{operationId}
Return a operation by operationId
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "READ_ROW",
"id" : "1"
}
Produces
- application/json
Responses
200
OK RestOperationOperationsApi
GET /operations
Return all operations
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"operations" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "READ_ROW",
"id" : "1"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "READ_ROW",
"id" : "1"
} ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestOperationsPermissionApi
DELETE /filters/{filterId}/permissions/{permissionId}
Delete a permission token by permissionId
Path parameters
Responses
204
No ContentGET /filters/{filterId}/permissions/{permissionId}
Return a permission by permissionId
Path parameters
Return type
Example data
{
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}
Produces
- application/json
Responses
200
OK RestPermissionPermissionsApi
POST /filters/{filterId}/permissions
Create a new permission
Path parameters
Consumes
- application/json
Request body
Responses
201
A permission has been createdGET /filters/{filterId}/permissions
Return all permissions
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"permissions" : [ {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
}, {
"scopeId" : "5",
"operationHref" : "http://localhost:9000/rest/operations/2",
"archiveName" : "MED_REF_024",
"scope" : "Image",
"dataHref" : "dataHref",
"description" : "This permissions has READ_ROW conditions on the image table",
"operationId" : "2",
"scopeHref" : "http://localhost:9000/rest/scopes/5",
"id" : "10",
"conditions" : [ {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
}, {
"condition" : "Im_Width(>100) Im_Width(<200)",
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"id" : "12",
"type" : "EXPRESSION_CONDITION"
} ],
"operation" : "READ_ROW"
} ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestPermissionsPublisherUrlsApi
POST /publisherurls/{filterId}
Create a new publisher URL
Path parameters
Consumes
- application/json
Request body
Request headers
Query parameters
Responses
201
A publisher URL has been createdReportApi
POST /report/{filterId}/{tableName}/{templateName}
Request a report by templateName and report query data
Path parameters
Request headers
Query parameters
Return type
Example data
""
Produces
- application/octet-stream
Responses
201
A report has been created byte[]RoleApi
DELETE /roles/{roleId}
Delete a role by roleId
Path parameters
Responses
204
No ContentGET /roles/{roleId}
Return a role by roleId
Path parameters
Return type
Example data
{
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}
Produces
- application/json
Responses
200
OK RestRoleRolesApi
POST /roles
Create a new role
Consumes
- application/json
Request body
Responses
201
A role has been createdGET /roles
Return all roles
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"roles" : [ {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
}, {
"dataHref" : "dataHref",
"name" : "TechnicalAPIUser",
"description" : "A role for a technical API User",
"groups" : [ {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}, {
"roles" : [ null, null ],
"dataHref" : "dataHref",
"name" : "Administrator_Group",
"id" : "2",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
} ],
"filters" : [ null, null ],
"id" : "19"
} ],
"dataHref" : "dataHref"
}
Produces
- application/json
Responses
200
OK RestRolesRootApi
GET /
Return the links the resources
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"links" : [ {
"dataHref" : "dataHref",
"link" : "info",
"description" : "Provides information about version, logged in user, error codes"
}, {
"dataHref" : "dataHref",
"link" : "info",
"description" : "Provides information about version, logged in user, error codes"
} ]
}
Produces
- application/json
Responses
200
OK RestLinksScopeApi
GET /scopes/{scopeId}
Return a scope by scopeId
Path parameters
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "Image",
"id" : "1"
}
Produces
- application/json
Responses
200
OK RestScopeScopesApi
GET /scopes
Return all scopes
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"scopes" : [ {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "Image",
"id" : "1"
}, {
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"name" : "Image",
"id" : "1"
} ]
}
Produces
- application/json
Responses
200
OK RestScopesStoreApi
POST /store
Create a new store entry
Consumes
- application/json
Request body
Responses
201
A key has been createdDELETE /store/{keyname}
Delete a store entry by name
Path parameters
Responses
204
No Content404
Key does not existsGET /store/{keyname}
Return a store entry by name
Path parameters
Return type
Example data
{
"name" : "name",
"value" : "value"
}
Produces
- application/json
Responses
200
OK RestKeyGET /store
Return all entries of the store
Return type
Example data
[ {
"name" : "name",
"value" : "value"
}, {
"name" : "name",
"value" : "value"
} ]
Produces
- application/json
Responses
200
OKPUT /store/{keyname}
Create or update a new store entry
Path parameters
Consumes
- application/json
Request body
Responses
201
A key has been created200
Key has been replacedStoresGlobalApi
GET /stores/global
Return all global entries of the stores
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKGET /stores/global/{type}
Return all global entries of the stores for a specifiy type
Path parameters
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKGET /stores/global/{type}/{key}
Return global store entry by type and key
Path parameters
Return type
Example data
{
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresEntryStoresGroupsApi
GET /stores/groups
Return all group entries of the stores for all groups of the autheticated user
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKGET /stores/groups/{type}
Return all group entries of the stores for a specifiy type for all groups of the autheticated user
Path parameters
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKGET /stores/groups/{type}/{key}
Return all group store entries by type and key for all groups of the autheticated user
Path parameters
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKStoresUsersApi
DELETE /stores/users/{type}/{key}
Delete a user store entry by type and key of autheticated user
Path parameters
Responses
204
No Content404
type and key combination does not exists for autheticated userGET /stores/users
Return all user entries of the stores of the autheticated user
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKGET /stores/users/{type}
Return all user entries of the stores for a specifiy type of the autheticated user
Path parameters
Return type
Example data
[ {
"type" : "type",
"value" : "value",
"key" : "key"
}, {
"type" : "type",
"value" : "value",
"key" : "key"
} ]
Produces
- application/json
Responses
200
OKGET /stores/users/{type}/{key}
Return user store entry by type and key of the autheticated user
Path parameters
Return type
Example data
{
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
200
OK RestStoresEntryPOST /stores/users
Create or update a user store entry for autheticated user
Consumes
- application/json
Request body
Return type
Example data
{
"type" : "type",
"value" : "value",
"key" : "key"
}
Produces
- application/json
Responses
201
A user store entry has been created RestStoresEntry200
User store entry has been updated RestStoresEntryUserApi
GET /users/{userid}
Returns a specific user and the groups where the user is present
Path parameters
Return type
Example data
{
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}
Produces
- application/json
Responses
200
OK RestUserUsersApi
GET /users
Returns all users
Return type
Example data
{
"navigation" : {
"parentHref" : "parentHref",
"selfHref" : "selfHref",
"data" : {
"parentHref" : "parentHref",
"subHref" : "subHref"
}
},
"dataHref" : "dataHref",
"users" : [ {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
}, {
"domain" : "IBM",
"dataHref" : "dataHref",
"groups" : [ null, null ],
"id" : "id",
"userid" : "12",
"username" : "John"
} ]
}
Produces
- application/json