Vector JSON

The explanation will be based on the following example:

The fields in bold in the description sections are mandatory.

Class

{
"id": 54399,
"project_id": 7683,
"name": "Human pose",
"color": "#4b35f4",
"count": 1,
"createdAt": "2020-10-08T10:07:41.000Z",
"updatedAt": "2020-10-08T11:27:26.000Z",
"attribute_groups": [
{
"id": 17165,
"class_id": 54399,
"name": "Pose",
"is_multiselect": 0,
"createdAt": "2020-10-08T11:17:10.000Z",
"updatedAt": "2020-10-08T11:17:10.000Z",
"attributes": [
{
"id": 62446,
"group_id": 17165,
"project_id": 7683,
"name": "Standing",
"count": 1,
"createdAt": "2020-10-08T11:19:09.000Z",
"updatedAt": "2020-10-08T11:27:26.000Z"
}
]
}
]
}

Description:

  • “id” : int - Class ID

  • “project_id” : id - Project ID

  • “name” : str - Class Name

  • “color” : str - Class color (example: “#000000”, black)

  • “count” : - The number of instances.

  • “createdAt” : - The time the class was created.

  • “updatedAt” : - The last time a user updated the class.

  • “attribute_groups” : list_of_dicts - List of all the attributes

    • “id” : int, - Group ID

    • “class_id” : int, - Class ID (must be the same as “id” : int)

    • “name” : str - Attribute Name

    • “is_multiselect” : int - It’s either 0 or 1. It’s 1 if you can select multiple attributes, and it’s 0 if you can choose only one attribute.

    • “createdAt” : - The time the attribute group was created.

    • “updatedAt” : - The last time a user updated the attribute group.

    • attribute: list_of_dicts - List of attribute values

      • “id” : int - Attribute value ID

      • “group_id” : int - Group ID (must be the same as “id” : int)

      • “project_id” : - Project ID

      • “name” : str - Attribute value

      • “count” : - The number of attributes.

      • “createdAt” : - The time the attribute was created.

      • “updatedAt” : - The last time a user updated the attribute.

Comment

{
"type": "comment",
"x": 167.37,
"y": 138.15,
"comments": [
{
"text": "Fix this",
"id": "name@email.com"
}
],
"resolved": false
}

Description:

  • “type” : “comment” - This dictionary is a comment.

  • “x” : int - X position of the comment on the image.

  • “y” : int - Y position of the comment on the image.

  • “comments” : list_of_dicts - List of comments.

    • “text” : str - The text of the comment.

    • “id” : str - Email of the user who wrote the comment.

  • “resolved”: - If it’s “false” then the comment isn’t resolved. If it’s “true” then the comment is resolved.

Shapes

Polyline and polygon

{
"type": "polygon",
"classId": 59244,
"probability": 100,
"points": [],
"groupId": 0,
"pointLabels": {},
"locked": false,
"visible": true,
"attributes": [
{
"id": 94853,
"groupId": 23650,
"name": "Small",
"groupName": "Size"
}
],
"trackingId": null,
"error": null,
"className": "Polygon"
}

Description:

  • “type” : “polygon” - The dictionary is a polygon.

  • “classId” : int - Class ID (one of the class IDs in“classes.json”)

  • “probability” : float - Polygon prediction. If the annotator created the polygon, then the probability value is 100.

  • “points” : list - Points of the polygon. The list of floats is: [x0, y0, x1, y1, ….. xN, yN].

  • “groupId” : int - Group ID of instances

  • “pointLabels” : dict - The keys are from “0” to “N” where a polygon has N+1 vertices.

  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.

  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.

  • “attributes” : list_of_dicts - List of attributes for this polygon.

    • “id” : int - Attribute ID (must be in “classes.json”)

    • “groupId” : int - Group ID (must be in “classes.json”)

    • “name”: str - Attribute name

    • “groupName”: str - Group name

  • “trackingId” : - The ID of a duplicated instance.

  • “error” : - If the instance is approved, then it’s “false.” If it’s disapproved, then it’s “true”. If you approve or disapprove an instance then undo the action, then it’s “null.” If the instance is neither approved nor disapproved, then “error” won’t appear in JSON.

  • “className” : str - Class name (one of the class names in “classes.json”)

Bounding box

{
"type": "bbox",
"classId": 65151,
"probability": 100,
"points": {
"x1": 61.96,
"x2": 378.63,
"y1": 81.81,
"y2": 278.78
},
"groupId": 0,
"pointLabels": {},
"locked": false,
"visible": true,
"attributes": [
{
"id": 94858,
"groupId": 23654,
"name": "Large",
"groupName": "Size"
}
],
"trackingId": null,
"error": null,
"className": "Bounding Box"
}

Description:

  • “type” : “bbox” - The dictionary is a bounding box.

  • “classId” : int - Class ID (one of the class IDs in“classes.json”)

  • “probability” : float - Bounding box prediction. If the annotator created the bounding box, then the probability value is 100.

  • “points” : list - Points of the bounding box. The list of floats is: "x1, y1" for the left upper corner, and "x2, y2" for the right lower corner.

  • “groupId” : int - Group ID of instances

  • “pointLabels” : dict - The keys are from “0” to “3” for the 4 vertices of the bounding box.

  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.

  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.

  • “attributes” : list_of_dicts - List of attributes for this bounding box.

    • “id” : int - Attribute ID (must be in “classes.json”)

    • “groupId” : int - Group ID (must be in “classes.json”)

    • “name”: str - Attribute name

    • “groupName”: str - Group name

  • “trackingId” : - The ID of a duplicated instance.

  • “error” : - If the instance is approved, then it’s “false.” If it’s disapproved, then it’s “true”. If you approve or disapprove an instance then undo the action, then it’s “null.” If the instance is neither approved nor disapproved, then “error” won’t appear in JSON.

  • “className” : str - Class name (one of the class names in “classes.json”)

Template

{
"type": "template",
"classId": 65152,
"probability": 100,
"points": [
{
"id": 1,
"x": 531.6616821289062,
"y": 95.45478820800781
},
{
"id": 2,
"x": 818.0260620117187,
"y": 95.45478820800781
},
{
"id": 3,
"x": 818.0260620117187,
"y": 302.0034615544989
},
{
"id": 4,
"x": 531.6616821289062,
"y": 303.03106689453125
},
{
"id": 5,
"x": 778.1345066051579,
"y": 142.72463384949333
},
{
"id": 6,
"x": 778.1345066051579,
"y": 239.319535812529
}
],
"connections": [
{
"id": 1,
"from": 1,
"to": 2
},
{
"id": 2,
"from": 2,
"to": 3
},
{
"id": 3,
"from": 3,
"to": 4
},
{
"id": 4,
"from": 4,
"to": 1
},
{
"id": 5,
"from": 2,
"to": 5
},
{
"id": 6,
"from": 5,
"to": 6
},
{
"id": 7,
"from": 6,
"to": 3
}
],
"groupId": 0,
"pointLabels": {
"4": "top_right",
"5": "bottom right"
},
"locked": false,
"visible": true,
"attributes": [
{
"id": 94854,
"groupId": 23651,
"name": "Medium",
"groupName": "Size"
}
],
"templateId": 6859,
"trackingId": null,
"error": null,
"className": "2D Cuboid Right",
"templateName": "2D Cuboid Right"
}

Description:

  • “type” : “template” - The dictionary is a template.

  • “classId” : int - Class ID (one of the class IDs in “classes.json”)

  • “probability” : float - Template prediction. If the annotator created the template, then the probability value is 100.

  • “points”: - List of 6 dictionaries {“id”: int, “x”: float, “y”: float}.

  • “connections” - List of 7 connections {“id”: int, “from”: int, “to”: int}.

  • “groupId” : int - Group ID of instances

  • “pointLabels” : dict - The keys are numbers that range from 0 to 21, and the values are human body points. The default point is the nose: {“0”: “Nose”}.

  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.

  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.

  • “attributes” : list_of_dicts - List of attributes for this template.

    • id” : int - Attribute ID (must be in the “classes.json”)

    • “groupId” : int - Group ID (must be in the “classes.json”)

    • “name”: str - Attribute name

    • “groupName”: str - Group name

  • “templateId”: int - The ID of the human pose template is 402.

  • “trackingId”: int - The ID of a duplicated instance.

  • “error”: - If the instance is approved, then it’s “false.” If it’s disapproved, then it’s “true”. If you approve or disapprove an instance then undo the action, then it’s “null.” If the instance is neither approved nor disapproved, then “error” won’t appear in JSON.

  • “className” : str - Class name (one of the class names in “classes.json”)

  • “templateName”: str - The name of the template is “2D Cuboid Right.”

Point

{
"type": "point",
"classId": 56908,
"probability": 100,
"x": 1184.69,
"y": 290.91,
"groupId": 0,
"pointLabels": {},
"locked": false,
"visible": true,
"attributes": [
{
"id": 94856,
"groupId": 23652,
"name": "Right",
"groupName": "Position"
}
],
"trackingId": null,
"error": null,
"className": "Points"
}

Description:

  • “type” : “point” - The dictionary is a point.

  • “classId” : int - Class ID (one of the class ID in “classes.json”)

  • “probability” : float - Point prediction. If the annotator created the point, then the probability value is 100.

  • “x” - x-coordinate

  • “y” - y-coordinate

  • “groupId” : int - Group ID of instances

  • “pointLabels” : dict - The key is 0.

  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.

  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.

  • “attributes” : list_of_dicts - List of attributes for this polygon.

    • “id” : int - Attribute ID (must be in “classes.json”)

    • “groupId” : int - Group ID (must be in “classes.json”)

    • “name”: str - Attribute name

    • “groupName”: str - Group name

  • “trackingId” : - The ID of a duplicated instance.

  • “error” - If the instance is approved, then it’s “false.” If it’s disapproved, then it’s “true”. If you approve or disapprove an instance then undo the action, then it’s “null.” If the instance is neither approved nor disapproved, then “error” won’t appear in JSON.

  • “className” : str - Class name (one of the class names in “classes.json”)

Ellipse

{
"type": "ellipse",
"classId": 65150,
"probability": 100,
"cx": 239.99,
"cy": 549.24,
"rx": 200.76,
"ry": 102.27,
"angle": 0,
"groupId": 0,
"pointLabels": {},
"locked": false,
"visible": true,
"attributes": [
{
"id": 94857,
"groupId": 23653,
"name": "Medium",
"groupName": "Size"
}
],
"trackingId": null,
"error": null,
"className": "Ellipse"
}

Description:

  • “type” : “ellipse” - The dictionary is ellipse type.

  • “classId” : int - Class ID (one of the class IDs in the “classes.json”)

  • “probability” : float - Ellipse prediction. If the annotator created the ellipse, then the probability value is 100.

  • “cx” - x-coordinate of the center

  • “cy” - y-coordinate of the center

  • “rx” - x radius

  • “ry” - y radius

  • “angle” - rotation angle

  • “groupId” : int - Group ID of instances

  • “pointLabels” : dict - The keys are numbers that range from 0 to 8, and the values are texts.

  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.

  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.

  • “attributes” : list_of_dicts - List of attributes for this polygon.

    • “id” : int - Attribute ID (must be in “classes.json”)

    • “groupId” : int - Group ID (must be in “classes.json”)

    • “name”: str - Attribute name

    • “groupName”: str - Group name

  • “trackingId” : - The ID of a duplicated instance.

  • “error” : - If the instance is approved, then it’s “false.” If it’s disapproved, then it’s “true”. If you approve or disapprove an instance then undo the action, then it’s “null.” If the instance is neither approved nor disapproved, then “error” won’t appear in JSON.

  • “className” : str - Class name (one of the class names in “classes.json”)

Cuboid

{
"type": "cuboid",
"classId": 65153,
"probability": 100,
"points": {
"f1": {
"x": 571.06,
"y": 412.12
},
"f2": {
"x": 763.49,
"y": 583.34
},
"r1": {
"x": 725.6,
"y": 507.57
},
"r2": {
"x": 918.03,
"y": 678.79
}
}

Description:

  • “type” : “cuboid” - The dictionary is a cuboid.

  • “classId” : int - Class ID (one of the class IDs in “classes.json”)

  • “probability” : float - Cuboid prediction. If the annotator created the cuboid, then the probability value is 100.

  • “points”: - “f1” and “f2” are front box points with “x” and “y” coordinates, and “r1” and “r2” are rear box points with “x” and “y” coordinates.

  • “groupId” : int - Group ID of instances

  • “pointLabels” : dict - The keys are numbers that range from 0 to 8, and the values are texts.

  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.

  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.

  • “attributes” : list_of_dicts - List of attributes for this polygon.

    • “id” : int - Attribute ID (must be in “classes.json”)

    • “groupId” : int - Group ID (must be in “classes.json”)

    • “name”: str - Attribute name

    • “groupName”: str - Group name

  • “trackingId” : - The ID of a duplicated instance.

  • “error” : - If the instance is approved, then it’s “false.” If it’s disapproved, then it’s “true”. If you approve or disapprove an instance then undo the action, then it’s “null.” If the instance is neither approved nor disapproved, then “error” won’t appear in JSON.

  • “className” : str - Class name (one of the class names in “classes.json”)

Meta data

{
"type": "meta",
"name": "imageAttributes",
"width": 1920,
"height": 1080,
"status": "Completed",
"pinned": false
}

Description:

  • "type": "meta" - The dictionary is meta data.

  • "name": - Meta data name.

  • "width": - The image’s width.

  • "height": - The image’s height.

  • "status": - The image status. It can be: Not Started, In Progress, Quality Check, Returned, Skipped, or Completed.

  • "pinned": - If it’s true, then the image is pinned. If it’s false, then the image isn’t pinned.