# RBNB WebDAV Name Extension Options

RBNB request and flushing options can be accessed using the following syntax:

`[channel][options-start-marker][option1][value1] <&<option2><value2>...`

where `channel` is the RBNBTM channel, `options-start-marker` is one of `?` or `@`, and the option value pairs are specified below.

## Folder (Source) Options

The following options are for use with the MKCOL WebDAV command when used to create RBNB sources.

Option | Alias | Values | Description | Example
--- | --- | --- | --- | ---
mode | m | One of "none", "create", "append", "load", or "delete". For flushes, any valid mime type. | Valid only for source creation. The default is "none" (or "append" if option `archive` is used). | `MKCOL source@mode=create&archive=1000` starts a source with a new archive of 1000 frames.
archive | a | Any non-negative integer. | This option specifies the number of frames of data to use for the server's archive for this source. The default mode is changed to "append". | `MKCOL foo@a=1000` creates an archive with 1000 frames.
cache | c | Any non-negative integer. | This option specifies the number of frames of data in the ring buffer. The default is currently 10000. | `MKCOL foo@c=1000` creates a cache with 1000 frames.
protect | p | One of "on" or "off". | When on, when the DELETE command is used on files located under this folder, the files are not truly removed, but rather hidden until another frame is added to the file. | `MKCOL foo@protect=on`

## File (Channel) Options

These options specify the format of file creation and access.

Option | Alias | Values | Description | Example
--- | --- | --- | --- | ---
time | t | Any double | Start time of the request or flushed data. Note that specifing this option changes the default reference from "newest" to "absolute" for requests. If unspecified for flushes, the default is seconds since the epoch. | `GET foo@t=0` returns the point of data available at time 0.
duration | d | Any double | Duration of the request or flushed data. A duration of zero means "one point". | `GET foo@d=1` returns one unit (probably seconds) of data.
reference | r | One of "newest", "oldest", or "absolute". | Valid only for requests. Determines how the start time is interpretted. | `GET foo@r=oldest&d=1` returns the oldest unit (probably seconds) of data availble on the server.
fetch | f | One of "data", "d", "time", "times", "t", "size", "s", "datatype", "dt", "mime", "m", "info", or "i". | For requests, determines what information is retrieved from the server. | `GET foo@fetch=times` retrieves the time for the last point in the server.
byteorder | bo | One of "msb", "lsb", or "local". | For requests, specifies the byte order desired for the returned data. For flushes, specifies the byte order of the data to be flushed. MSB is the default. | `PUT foo@t=0&d=1&bo=msb` specifies that a chunk of one unit's worth of data is to be sent to the RBNB with MSB byte order.

datatype

dt

One of "int8", "i8", "int16", "i16", "int32", "i32", "int64", "i64", "float32", "f32", "float64", "f64", "string", "s", "bytearray", "b", "ba", or "unknown".

For flushes, specifies the low level type of the data to be flushed. The default is "bytearray" except in the case of MUX channels, where it is "int8".

`PUT foo@dt=float32` specifies that a chunk of single precision data is to be sent to the RBNB.

mux

x

Any positive integer.

Specifies the number of channels of multiplexed data. The default is 1 (no multiplexing). For PUTs, indicates that the specified URL is the prefix for a channel set, where the number of channels in the set is the MUX parameter. The data block is assumed to consist of `n` sets of 'blocksize' words, where n = data_block_size / blocksize / wordsize, and wordsize is a function of the 'datatype' parameter. Note that incomplete blocks (at the end of the data stream) are discarded.

`PUT foo@x=10` puts the data into ten channels marked `foo0`, `foo1`, etc, one 8 bit integer per channel per pass until all the data has been used.

blocksize | bs | Any positive integer. | Specified the number of words of data that are contiguous for each channel for multiplexed data. The default is one. | `PUT foo@x=10&bs=5&dt=f32` will divide the data into 10 channels, each with five 32 bit floats per pass, and enough passes to use all the data.
mime | m | For flushes, any valid mime type. | Valid only for flushes. The default is "application/octet-stream". | `PUT foo@mime=text/xml` specifies that the mime type of 'foo' is to be 'text/xml'.

Note that the query string will be forwarded as a data string in the RBNB request in the case of GET and POST. This may be retrieved by RBNB PlugIns and used to configure the response.