Proposed Decapod Export Server Architecture

Resources

Request Type

Response / Action

Status Code

GET

Redirects to the start page for the Decapod user interface.

Success: 301

The set of all "Books" in Decapod.

Request Type

Response / Action

Status Code

GET

Returns the "library" model, in JSON format.

{
    library: [
        {
            name: “book name”,
            url: “http://localhost:8080/library/'bookName'/”
        }
    ]
}

Success: 200

POST

Creates a new book and returns the URL

Success: 201

PUT, DELETE

N/A

Error: 405

The information about a specific "Book".

Request Type

Response / Action

Status Code

GET

Returns the "book" model, in JSON format.

{
    title: "bookName",
    description: "book description",
    pages: “http://localhost:8080/library/'bookName'/pages/”
}

Success: 200

PUT

Update the "book" model

Success: 200

DELETE

Removes a book and all its attached pages

Success: 204

POST

N/A

Error: 405

The set of "pages" contained within a "book".

Request Type

Response / Action

Status Code

GET

Returns the "book" model, in JSON format.

{
    pages: [
        {
            id: “page id”,
            index: “1”,
            url: “http://localhost:8080/library/'bookName'/pages/'pageID'/”
        }
    ]
}

Success: 200

POST

Creates a new page and returns the URL

Success: 201

PUT

Update the "pages" model

Success: 200

DELETE

N/A

Error: 405

The information about a specific page, including the information about it's adjustments.

Request Type

Response / Action

Status Code

GET

Returns the "page" model, in JSON format.

{
    title: "bookName",
    description: "book description",
    pages: [
        {
            id: “page id”,
            origName: "originalFileName.png",
            image: “http://localhost:8080/library/'bookName'/pages/'image.png'”
            thumbnail: "http://localhost:8080/library/'bookName'/pages/'image-thumbnail.png'"
            adjustments: {
                rotation: "90", // in degrees
                crop: "crop boundary" // some representation of the crop boundary
            }
        }
    ]
}

Success: 200

PUT

Update the "page" model

Success: 200

DELETE

Removes the page

Success: 204

POST

N/A

Error: 405

The information about a specific page, including the information about it's adjustments.

Request Type

Response / Action

Status Code

GET

Returns the "page" model, in JSON format.

{
    title: "bookName",
    description: "book description",
    pages: [
        {
            id: “page id”,
            origName: "originalFileName.png",
            image: “http://localhost:8080/library/'bookName'/pages/'image.png'”
            thumbnail: "http://localhost:8080/library/'bookName'/pages/'image-thumbnail.png'"
            adjustments: {
                rotation: "90", // in degrees
                crop: "crop boundary" // some representation of the crop boundary
            }
        }
    ]
}

Success: 200

PUT

Update the "page" model

Success: 200

DELETE

Removes the page

Success: 204

POST

N/A

Error: 405

This will be a base url that has the parameters for the type of export appended as segments afterwards.

pdf

e.g.


e.g.

Types

Description

Type 1

Image PDF

Type 2

Image PDF with OCR

Type 3

Computer Traced PDF with OCR

Type 4

Font Matched PDF with OCR

Query Parameters

Description

w, width

float [0.1 - 30] cm

h, height

float [0.1 - 30] cm

dpi

integer [1 - 600]

c, color, colour

string [color, colour, grey, gray]

bit

integer [24, 16, 8, 1]

Query parameters are optional and follow the genpdf spec.

Request Type

Response / Action

Status Code

GET

Returns the status of the export and a link to the artifact if complete, in JSON format.

{
    status: "complete",
    url: "http://localhost:8080/library/'bookName'/export/pdf/'bookName'.pdf"
}

Success: 200

PUT

Trigger the creation of the export artifact.

Success: 202

DELETE

Removes the export artifact

Success: 204

POST

N/A

Error: 405

image

e.g.


possible formats include tiff, jpeg, png

Request Type

Response / Action

Status Code

GET

Returns the status of the export and a link to the artifact if complete, in JSON format.

{
    status: "complete",
    url: "http://localhost:8080/library/'bookName'/export/image/'bookName'.zip"
}

Success: 200

PUT

Trigger the creation of the export artifact.

Success: 202

DELETE

Removes the export artifact

Success: 204

POST

N/A

Error: 405