# Projects Controller Resource

The API allows you to list, view, edit and create projects.

### GET /projects

Returns list of projects filtered by specified query parameters.

Request Parameters
name | type | description
--- | --- | ---
authentication-domain | query |
backup | query |
direction | query |
filter | query |
hypervisor-manager | query |
nameLike | query |
orderBy | query |
page | query |
project-uuid | query |
quota | query |
size | query |
uuid | query |

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

#### Example

##### Request

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

    ...

##### Response

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

    [ { } ]

### POST /projects

Create project.

Request Body
media type | data type | description
--- | --- | ---
application/json | ProjectRequest (JSON) | specify details for new project

Response Body
media type | data type | description
--- | --- | ---
application/json | ProjectListRecord (JSON) | details of newly created project

#### Example

##### Request

    POST /projects
    Content-Type: application/json
    Accept: application/json

    { }

##### Response

    HTTP/1.1 201 Created
    Content-Type: application/json

    { }

### POST /projects/delete

Remove projects.

Request Body
media type | data type | description
--- | --- | ---
application/json | DeleteProjectsRequest (JSON) | specify list of local unique identifier for projects (use by vProtect)

#### Example

##### Request

    POST /projects/delete
    Content-Type: application/json

    { }

##### Response

    HTTP/1.1 201 Created

### GET /projects/for-restore

Returns list of projects filtered by specified query parameters.

Request Parameters
name | type | description
--- | --- | ---
authentication-domain | query |
backup | query |
direction | query |
filter | query |
hypervisor-manager | query |
nameLike | query |
orderBy | query |
page | query |
project-uuid | query |
quota | query |
size | query |
uuid | query |

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

#### Example

##### Request

    GET /projects/for-restore
    Content-Type: */*
    Accept: application/json

    ...

##### Response

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

    [ { } ]

### PUT /projects/quota

Change quota for specified list of projects.

Request Body
media type | data type | description
--- | --- | ---
application/json | SingleAttributeNullableBatchUpdate (JSON) | specify quota and guids of projects

Response Body
media type | data type | description
--- | --- | ---
application/json | BatchResponse (JSON) | list of successful and unsuccessful updates of quota

#### Example

##### Request

    PUT /projects/quota
    Content-Type: application/json
    Accept: application/json

    { }

##### Response

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

    { }

### GET /projects/rbac-contexts

Returns list of projects filtered by specified query parameters.

Request Parameters
name | type | description | constraints
--- | --- | --- | ---
app-cmd-exec-config | query |  |
cloud-service-provider | query |  |
cluster | query |  |
data-center | query |  |
direction | query |  |
filter | query |  |
hypervisor | query |  |
hypervisor-manager | query |  |
nameLike | query |  |
orderBy | query |  |
page | query |  |
project | query |  |
size | query |  |
storage-pool | query |  |
storage-provider | query |  |
teams-group | query |  | boolean

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

#### Example

##### Request

    GET /projects/rbac-contexts
    Content-Type: */*
    Accept: application/json

    ...

##### Response

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

    [ { } ]

### DELETE /projects/{guid}

Remove project.

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

#### Example

##### Request

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

    ...

##### Response

    HTTP/1.1 204 No Content

### GET /projects/{guid}

Get a single project.

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

Response Body
media type | data type | description
--- | --- | ---
application/json | ProjectListRecord (JSON) | project details

#### Example

##### Request

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

    ...

##### Response

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

    { }

### PUT /projects/{guid}

Change project details.

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

Request Body
media type | data type | description
--- | --- | ---
application/json | ProjectUpdate (JSON) | specify project details to update

Response Body
media type | data type | description
--- | --- | ---
application/json | ProjectListRecord (JSON) | updated details of project

#### Example

##### Request

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

    { }

##### Response

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

    { }

### PUT /projects/v2/{guid}

Change project details.

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

Request Body
media type | data type | description
--- | --- | ---
application/json | ProjectUpdateRequest (JSON) | specify project details to update

#### Example

##### Request

    PUT /projects/v2/{guid}
    Content-Type: application/json

    {
      "quotaGuid" : "...",
      "backupDestinationGuids" : [ "...", "..." ]
    }

##### Response

    HTTP/1.1 204 No Content