7. Extended Services
Prev | Chapter 3. ZOOM | Next

## 7. Extended Services

ZOOM offers an interface to a subset of the Z39.50 extended services as well as a few privately defined ones:

- Z39.50 Item Order (ILL). See Section 7.1, “Item Order”.

- Record Update. This allows a client to insert, modify or delete records. See Section 7.2, “Record Update”.

- Database Create. This a non-standard feature. Allows a client to create a database. See Section 7.3, “Database Create”.

- Database Drop. This a non-standard feature. Allows a client to delete/drop a database. See Section 7.4, “Database Drop”.

- Commit operation. This a non-standard feature. Allows a client to commit operations. See Section 7.5, “Commit Operation”.

To create an extended service operation a `ZOOM_package` must be created. The operation is a five step operation. The package is created, package is configured by means of options, the package is send, result is inspected (by means of options), the package is destroyed.

        ZOOM_package ZOOM_connection_package(ZOOM_connection c,
                                             ZOOM_options options);

        const char *ZOOM_package_option_get(ZOOM_package p,
                                            const char *key);
        void ZOOM_package_option_set(ZOOM_package p, const char *key,
                                     const char *val);
        void ZOOM_package_send(ZOOM_package p, const char *type);

        void ZOOM_package_destroy(ZOOM_package p);

The `ZOOM_connection_package` creates a package for the connection given using the options specified.

Functions `ZOOM_package_option_get` and `ZOOM_package_option_set` gets and sets options.

`ZOOM_package_send` sends the package the via connection specified in `ZOOM_connection_package`. The `type` specifies the actual extended service package type to be sent.

Table 3.6. Extended Service Common Options

Option | Description | Default
--- | --- | ---
package-name | Extended Service Request package name. Must be specified as part of a request | none
user-id | User ID of Extended Service Package. Is a request option | none
function | Function of package - one of `create`, `delete`, `modify`. Is a request option. | `create`
waitAction | Wait action for package. Possible values: `wait`, `waitIfPossible`, `dontWait` or `dontReturnPackage`. | `waitIfPossible`
targetReference | Target Reference. This is part of the response as returned by the server. Read it after a successful operation. | `none`

### 7.1. Item Order

For Item Order, type must be set to `itemorder` in `ZOOM_package_send`.

Table 3.7. Item Order Options

Option | Description | Default
--- | --- | ---
contact-name | ILL contact name | none
contact-phone | ILL contact phone | none
contact-email | ILL contact email | none
itemorder-item | Position for item (record) requested. An integer | 1

### 7.2. Record Update

For Record Update, type must be set to `update` in `ZOOM_package_send`.

Table 3.8. Record Update Options

Option | Description | Default
--- | --- | ---
action | The update action. One of `specialUpdate`, `recordInsert`, `recordReplace`, `recordDelete`, `elementUpdate`. | `specialUpdate (recordInsert for updateVersion=1 which does not support specialUpdate)`
recordIdOpaque | Opaque Record ID | none
recordIdNumber | Record ID number | none
record | The record itself | none
recordOpaque | Specifies an opaque record which is encoded as an ASN.1 ANY type with the OID as tiven by option `syntax` (see below). Option `recordOpaque` is an alternative to record - and `record` option (above) is ignored if recordOpaque is set. This option is only available in YAZ 3.0.35 and later and is meant to facilitate Updates with servers from OCLC. | none
syntax | The record syntax (transfer syntax). Is a string that is a known record syntax. | no syntax
databaseName | Database from connection object | Default
correlationInfo.note | Correlation Info Note (string) | none
correlationInfo.id | Correlation Info ID (integer) | none
elementSetName | Element Set for Record | none
updateVersion | Record Update version which holds one of the values 1, 2 or 3. Each version has a distinct OID: 1.2.840.10003.9.5 (first version) , 1.2.840.10003.9.5.1 (second version) and 1.2.840.10003.9.5.1.1 (third and newest version). | 3

### 7.3. Database Create

For Database Create, type must be set to `create` in `ZOOM_package_send`.

Table 3.9. Database Create Options

Option | Description | Default
--- | --- | ---
databaseName | Database from connection object | Default

### 7.4. Database Drop

For Database Drop, type must be set to `drop` in `ZOOM_package_send`.

Table 3.10. Database Drop Options

Option | Description | Default
--- | --- | ---
databaseName | Database from connection object | Default

### 7.5. Commit Operation

For Commit, type must be set to `commit` in `ZOOM_package_send`.

### 7.6. Protocol behavior

All the extended services are Z39.50-only.

### Note

The database create, drop and commit services are privately defined operations. Refer to `esadmin.asn` in YAZ for the ASN.1 definitions.

Prev | Up | Next
6. Scan | Home | 8. Options