Project API

A Project contains groups of scenes, as well as Asset Collections. It is primarily used for organization, and helps manage a full-scale animation production.

When authentication is active, projects are associated to the user that creates them and can be public or private. Users can only interact with projects that are either public, or that they own.

Project Creation

POST /v1/project

Create a new Project.

Request Headers:
 
Status Codes:

http

POST /v1/project HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
    "name": "Test",
    "description": "This is a test",
    "category": "test",
    "tags": ["testTag"],
  "isPublic": true,
    "sceneGroups": [
            {
                    "name": "testGroup",
                    "description": "This is a test group",
                    "category": "test",
                    "scenes": ["1234"]
            }
    ],
    "assetCollectionIds": ["4321"]
}

curl

curl -i -X POST http://localhost:8080/v1/project -H 'Content-Type: application/json' --data-raw '{"assetCollectionIds": ["4321"], "category": "test", "description": "This is a test", "isPublic": true, "name": "Test", "sceneGroups": [{"category": "test", "scenes": ["1234"], "name": "testGroup", "description": "This is a test group"}], "tags": ["testTag"]}'

response

HTTP/1.1 200 OK
Location: http://localhost:8080/v1/project

{
    "id": "5be8eeb4f5eee94951e553a9",
    "name": "Test",
    "description": "This is a test",
    "category": "test",
    "tags": [
        "testTag"
    ],
    "sceneGroups": [
        {
            "name": "testGroup",
            "description": "This is a test group",
            "category": "test",
            "scenes": [
                "1234"
            ]
        }
    ],
    "assetCollectionIds": [
        "4321"
    ]
}

Project Retrieval

GET /v1/project/(key)

Get a project by ID.

Status Codes:

http

GET /v1/project/{key} HTTP/1.1
Host: localhost:8080

curl

curl -i 'http://localhost:8080/v1/project/{key}'

Project Update

POST /v1/project/(key)

Update the basic (String and numeric) attributes of an existing Project.

Request Headers:
 
Status Codes:

http

POST /v1/project/{key} HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
    "name": "AnotherName",
    "description": "This is a second test",
    "category": "testing"
}

curl

curl -i -X POST 'http://localhost:8080/v1/project/{key}' -H 'Content-Type: application/json' --data-raw '{"category": "testing", "description": "This is a second test", "name": "AnotherName"}'

response

HTTP/1.1 200 OK
Location: http://localhost:8080/v1/project

{
    "id": "5be8eeb4f5eee94951e553a9",
    "name": "Test",
    "description": "This is a test",
    "category": "test",
    "tags": [
        "testTag"
    ],
    "sceneGroups": [
        {
            "name": "testGroup",
            "description": "This is a test group",
            "category": "test",
            "scenes": [
                "1234"
            ]
        }
    ],
    "assetCollectionIds": [
        "4321"
    ]
}

Add Scene Group

POST /v1/project/(key)/groups

Create a new Scene Group associated to the specified Project.

Request Headers:
 
Status Codes:

http

POST /v1/project/{key}/groups HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
    "name": "AnotherName",
    "description": "This is a second test",
    "category": "testing"
}

curl

curl -i -X POST 'http://localhost:8080/v1/project/{key}/groups' -H 'Content-Type: application/json' --data-raw '{"category": "testing", "description": "This is a second test", "name": "AnotherName"}'

Update Scene Group

POST /v1/project/(key)/groups/{groupName}

Update the basic attributes (String and numeric) of an existing Scene Group associated to the specified Project.

Request Headers:
 
Status Codes:

http

POST /v1/project/{key}/groups/{groupName} HTTP/1.1
Host: localhost:8080
Content-Type: application/json

{
    "name": "AnotherName",
    "description": "This is a second test",
    "category": "testing"
}

curl

curl -i -X POST 'http://localhost:8080/v1/project/{key}/groups/{groupName}' -H 'Content-Type: application/json' --data-raw '{"category": "testing", "description": "This is a second test", "name": "AnotherName"}'

Add Scene to Scene Group

PUT /v1/project/(key)/groups/{groupName}/scenes/{sceneKey}

Add a Scene by ID to an existing Scene Group, which is associated to the specified Project.

Status Codes:

http

PUT /v1/project/{key}/groups/{groupName}/scenes/{sceneKey} HTTP/1.1
Host: localhost:8080

curl

curl -i -X PUT 'http://localhost:8080/v1/project/{key}/groups/{groupName}/scenes/{sceneKey}'

Remove Scene from Scene Group

DELETE /v1/project/(key)/groups/{groupName}/scenes/{sceneKey}

Remove a Scene by ID from an existing Scene Group, which is associated to the specified Project.

Status Codes:

http

DELETE /v1/project/{key}/groups/{groupName}/scenes/{sceneKey} HTTP/1.1
Host: localhost:8080

curl

curl -i -X DELETE 'http://localhost:8080/v1/project/{key}/groups/{groupName}/scenes/{sceneKey}'

Remove Scene Group

DELETE /v1/project/(key)/groups/{groupName}

Remove an existing Scene Group from the specified Project.

Status Codes:

http

DELETE /v1/project/{key}/groups/{groupName} HTTP/1.1
Host: localhost:8080

curl

curl -i -X DELETE 'http://localhost:8080/v1/project/{key}/groups/{groupName}'

Project Query

GET /v1/project

Query for projects by attribute.

Status Codes:

http

GET /v1/project?name=test&num_records=10&page=0 HTTP/1.1
Host: localhost:8080

curl

curl -i 'http://localhost:8080/v1/project?name=test&num_records=10&page=0'

response

HTTP/1.1 200 OK
Location: http://localhost:8080/v1/project?name=AnotherName&num_records=10&page=0

[
    {
        "id": "5be8eeb4f5eee94951e553a9",
        "name": "AnotherName",
        "description": "This is a second test",
        "category": "testing",
        "tags": [
            "testTag2"
        ],
        "sceneGroups": [
            {
                "name": "testGroup2",
                "description": "This is another test group",
                "category": "testing",
                "scenes": [
                    "12345"
                ]
            }
        ],
        "assetCollectionIds": [
            "43212"
        ]
    }
]

Project Delete

DELETE /v1/project/(key)

Delete a project by ID.

Status Codes:

http

DELETE /v1/project/{key} HTTP/1.1
Host: localhost:8080

curl

curl -i -X DELETE 'http://localhost:8080/v1/project/{key}'