Assets

Definition

An Asset is a file that can be Reviewed. While typically a .pdf, Red Marker also supports .doc, .docx and many other common file types.

Create an Asset

Creating an Asset involves a two-part process.

Step 1 - Create the Asset resource

Create an Asset with the intended file's details; file name, file size, and mimetype. The API will respond with validation errors if anything is invalid, or create the Asset resource if successful. Upon successful creation, upload the actual file itself in Step 2.

Request

POST /v2/assets HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "data": {
    "type": "assets",
    "attributes": {
      "title": "Marketing Brochure",
      "filename": "marketing_brochure.pdf",
      "filesize": 1363148,
      "mimetype": "application/pdf"
    }
  }
}

Response

HTTP/1.1 201 Created
Content-Type: application/vnd.api+json

{
  "data": {
    "type": "assets",
    "id": "37",
    "attributes": {
      "title": "Marketing Brochure",
      "filename": "marketing_brochure.pdf",
      "filesize": 1363148,
      "mimetype": "application/pdf",
      "status": "pending-upload",
      "createdAt": "2019-07-17T00:00:00+00:00",
      "updatedAt": "2019-07-17T00:00:00+00:00"
    },
    "relationships": {
      "owner": {
        "data": {
          "type": "companies",
          "id": "1"
        }
      },
      "creator": {
        "data": {
          "type": "users",
          "id": "1"
        }
      }
    },
    "links": {
      "self": "http://api.redmarker.ai/v2/assets/37",
      "upload": "http://api.redmarker.ai/v2/assets/37/upload"
    }
  }
}

Step 2 - Upload the file to the Asset

In the response for Step 1, an upload link is returned. Upload the file to this link as a multipart form request.

JSON:API Non-compliant

The following does not conform specifically to JSON:API due to it not supporting multipart/form-data uploads, however the response will be in JSON:API format.

Request

File field

The file data should be set under the asset key in the request.

(multipart form upload to URL defined in data.links.upload from above response)

Example JavaScript

const asset = getAsset() // method to retrieve an Asset record
const data = new FormData()
data.append('asset', file) // where file is of the File class, selected by the user
const config = {
  headers: {
    'Content-Type': 'application/vnd.api+json',
    Accept: 'application/vnd.api+json',
  },
}

axios.post(asset.links.upload, data, config) //asset.links.upload is the Asset's Upload Link from a Create response

Response

HTTP/1.1 201 Created
Content-Type: application/vnd.api+json

{
  "data": {
    "type": "assets",
    "id": "37",
    "attributes": {
      "title": "Marketing Brochure",
      "filename": "marketing_brochure.pdf",
      "filesize": 1363148,
      "mimetype": "application/pdf",
      "status": "processing",
      "createdAt": "2019-07-17T00:00:00+00:00",
      "updatedAt": "2019-07-17T00:00:00+00:00"
    },
    "relationships": {
      "owner": {
        "data": {
          "type": "companies",
          "id": "1"
        }
      },
      "creator": {
        "data": {
          "type": "users",
          "id": "1"
        }
      }
    },
    "links": {
      "self": "http://api.redmarker.ai/v2/assets/37"
    }
  }
}

Note how the status changes to processing after upload, and the upload link is no longer returned.

Step 3 - Asset Processing

Assets, once uploaded, go through a processing stage where we extract text, images, etc from the uploaded document.

This is an asynchronous process that can take some time depending on the size of the Asset, so if the processing of an Asset is important to your requirements, you will need to query the Asset and check it's status attribute.

Request

GET /v2/assets/37 HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

Response

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
  "data": {
    "type": "assets",
    "id": "37",
    "attributes": {
      "title": "Marketing Brochure",
      "filename": "marketing_brochure.pdf",
      "filesize": 1363148,
      "mimetype": "application/pdf",
      "status": "ready",
      "createdAt": "2019-07-17T00:00:00+00:00",
      "updatedAt": "2019-07-17T00:00:00+00:00"
    },
    "relationships": {
      "owner": {
        "data": {
          "type": "companies",
          "id": "1"
        }
      },
      "creator": {
        "data": {
          "type": "users",
          "id": "1"
        }
      }
    },
    "links": {
      "self": "http://api.redmarker.ai/v2/assets/37"
    }
  }
}

Note how the status attribute has changed to ready. This indicates that the Asset has been processed and is ready to be used, such as in a Review.