# Tape Controller Resource

The API allows you list and view Tapes.

### GET /tapes

Returns list of tapes filtered by specified query parameters.

Request Parameters
name | type | description | constraints | multivalued
--- | --- | --- | --- | ---
backup-destination | query |  |  | no
direction | query |  |  | no
filter | query |  |  | no
initialized | query |  | boolean | no
nameLike | query |  |  | no
orderBy | query |  |  | no
page | query |  |  | no
readOnly | query |  | boolean | no
size | query |  |  | no
states | query |  | "EJECTED" or "NOT_PRESENT" or "READY" | yes
tape-library | query |  |  | no
tape-location | query |  |  | no
tape-manager | query |  |  | no
type | query |  | "CLEANING" or "REGULAR" | no

Response Body
media type | data type | description
--- | --- | ---
application/json | array of TapeDetails (JSON) | list of tapes filtered by specified query parameters

#### Example

##### Request

    GET /tapes
    Content-Type: */*
    Accept: application/json

    ...

##### Response

    HTTP/1.1 200 OK
    Content-Type: application/json

    [ { } ]

### POST /tapes/batch-delete

Batch delete tapes.

Request Body
media type | data type | description
--- | --- | ---
application/json | array of NameAndGuid (JSON) | specify tapes to delete

#### Example

##### Request

    POST /tapes/batch-delete
    Content-Type: application/json

    [ {
      "guid" : "f8f73bf9-2445-4bce-a7dd-753be3b40a67",
      "name" : "Entity name"
    } ]

##### Response

    HTTP/1.1 201 Created

### PUT /tapes/location

Change tape locations.

Request Body
media type | data type | description
--- | --- | ---
application/json | LocationRequest (JSON) | specify tape location details

Response Body
media type | data type | description
--- | --- | ---
application/json | array of TapeDetails (JSON) | list of tapes where location has been changed

#### Example

##### Request

    PUT /tapes/location
    Content-Type: application/json
    Accept: application/json

    { }

##### Response

    HTTP/1.1 204 No Content
    Content-Type: application/json

    [ { } ]

### GET /tapes/used-by-backup

Request Parameters
name | type | description
--- | --- | ---
backup | query |

Response Body
media type | data type | description
--- | --- | ---
application/json | array of TapeUsedByBackupListRecord (JSON) |

#### Example

##### Request

    GET /tapes/used-by-backup
    Content-Type: */*
    Accept: application/json

    ...

##### Response

    HTTP/1.1 200 OK
    Content-Type: application/json

    [ { } ]

### DELETE /tapes/{guid}

Request Parameters
name | type | description
--- | --- | ---
guid | path |

#### Example

##### Request

    DELETE /tapes/{guid}
    Content-Type: */*

    ...

##### Response

    HTTP/1.1 204 No Content

### GET /tapes/{guid}

Get a single tape.

Request Parameters
name | type | description
--- | --- | ---
guid | path | specify local unique identifier for tape (use by vProtect)

Response Body
media type | data type | description
--- | --- | ---
application/json | TapeDetails (JSON) | tape details

#### Example

##### Request

    GET /tapes/{guid}
    Content-Type: */*
    Accept: application/json

    ...

##### Response

    HTTP/1.1 200 OK
    Content-Type: application/json

    { }

### PUT /tapes/{guid}

Update a non present tape.

Request Parameters
name | type | description
--- | --- | ---
guid | path | specify local unique identifier for tape (use by vProtect)

Request Body
media type | data type
--- | ---
application/json | TapeUpdateRequest (JSON)

Response Body
media type | data type | description
--- | --- | ---
application/json | TapeDetails (JSON) | tape details

#### Example

##### Request

    PUT /tapes/{guid}
    Content-Type: application/json
    Accept: application/json

    { }

##### Response

    HTTP/1.1 204 No Content
    Content-Type: application/json

    { }

### PUT /tapes/{guid}/initialize

Initialize tape.

Request Parameters
name | type | description
--- | --- | ---
guid | path | specify local unique identifier for tape (use by vProtect)

Request Body
media type | data type | description
--- | --- | ---
application/json | TapeInitializeRequest (JSON) | specify tape initialization details to update

Response Body
media type | data type | description
--- | --- | ---
application/json | TapeDetails (JSON) | updated details for tape

#### Example

##### Request

    PUT /tapes/{guid}/initialize
    Content-Type: application/json
    Accept: application/json

    { }

##### Response

    HTTP/1.1 204 No Content
    Content-Type: application/json

    { }

### GET /tapes/{guid}/used-space

Get used space on a single tape.

Request Parameters
name | type | description
--- | --- | ---
guid | path | specify local unique identifier for tape (use by vProtect)

Response Body
media type | data type | description
--- | --- | ---
application/json | number (JSON) | used space on a single tape

#### Example

##### Request

    GET /tapes/{guid}/used-space
    Content-Type: */*
    Accept: application/json

    ...

##### Response

    HTTP/1.1 200 OK
    Content-Type: application/json

    ...