Zeplin · Schema
Zeplin API Schemas
JSON Schema definitions extracted from the Zeplin API OpenAPI specification
DesignDesign HandoffDeveloper ToolsFigmaSketchAdobe XDStyle GuidesComponentsAssetsWebhooks
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Zeplin API Schemas",
"description": "JSON Schema definitions extracted from the Zeplin API OpenAPI specification",
"definitions": {
"TokenResponse": {
"title": "Token Response",
"type": "object",
"required": [
"access_token",
"expires_in",
"refresh_token",
"refresh_expires_in",
"token_type"
],
"properties": {
"access_token": {
"type": "string",
"description": "Access token that allows you to make requests to the API on behalf of a user"
},
"expires_in": {
"type": "number",
"description": "Access token's lifetime in seconds"
},
"refresh_token": {
"type": "string",
"description": "Refresh token that allows you to obtain access tokens"
},
"refresh_expires_in": {
"type": "number",
"description": "Refresh token's lifetime in seconds"
},
"token_type": {
"type": "string",
"description": "Type of the token returned"
}
},
"example": {
"$ref": "#/components/examples/tokenResponse"
}
},
"BoundingRectangle": {
"title": "Bounding Rectangle",
"type": "object",
"required": [
"width",
"height",
"x",
"y",
"absolute"
],
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"absolute": {
"$ref": "#/components/schemas/LayerPosition",
"description": "Absolute position of the bounding rectangle"
}
},
"example": {
"$ref": "#/components/examples/boundingRectangle"
}
},
"HotspotBoundingRectangle": {
"title": "Hotspot Bounding Rectangle",
"type": "object",
"required": [
"width",
"height",
"x",
"y"
],
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"example": {
"$ref": "#/components/examples/hotspotBoundingRectangle"
}
},
"Color": {
"title": "Color",
"type": "object",
"required": [
"id",
"created",
"name",
"r",
"g",
"b",
"a"
],
"properties": {
"id": {
"type": "string",
"description": "Identifier of the color"
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the color was created"
},
"source_id": {
"type": "string",
"description": "Color's identifier in the design tool"
},
"name": {
"type": "string",
"description": "Name of the color"
},
"r": {
"type": "integer",
"description": "Red component of the color"
},
"g": {
"type": "integer",
"description": "Green component of the color"
},
"b": {
"type": "integer",
"description": "Blue component of the color"
},
"a": {
"type": "number",
"description": "Alpha component of the color"
},
"source": {
"$ref": "#/components/schemas/ResourceSource",
"description": "Source of the color\u2013either `project` or `styleguide`."
},
"variable_info": {
"$ref": "#/components/schemas/VariableInfo",
"description": "Variable info of the color"
}
},
"example": {
"$ref": "#/components/examples/color"
}
},
"ColorData": {
"title": "Color Data",
"type": "object",
"required": [
"r",
"g",
"b",
"a"
],
"properties": {
"source_id": {
"type": "string",
"description": "Color's identifier in the design tool"
},
"r": {
"type": "integer",
"description": "Red component of the color"
},
"g": {
"type": "integer",
"description": "Green component of the color"
},
"b": {
"type": "integer",
"description": "Blue component of the color"
},
"a": {
"type": "number",
"description": "Alpha component of the color"
}
},
"example": {
"$ref": "#/components/examples/colorData"
}
},
"User": {
"title": "User",
"description": "Basic info about Zeplin users.\n\nZeplin API does not expose any personal information to third-party clients. For this reason, the `email` field is a Zeplin-only alias by default.\n\nYou can get the original email addresses of members of your workspace by using a personal access token created with admin rights. Third-party (OAuth) applications are not allowed to access this information.\n\n\u261d\ufe0f*Only organization admins (or higher) can retrieve the original email addresses using an admin token.*\n",
"type": "object",
"required": [
"id",
"email",
"username"
],
"properties": {
"id": {
"type": "string",
"description": "User's unique id"
},
"email": {
"type": "string",
"description": "Zeplin-only alias for the user's email (original)"
},
"username": {
"type": "string",
"description": "Username of the user"
},
"emotar": {
"type": "string",
"format": "emoji",
"description": "Emotar of the user"
},
"avatar": {
"type": "string",
"description": "Avatar of the user"
},
"last_seen": {
"type": "number",
"description": "The unix timestamp when the user was last seen"
}
},
"example": {
"$ref": "#/components/examples/user"
},
"x-examples": {
"User": {
"$ref": "#/components/examples/user"
},
"My User": {
"$ref": "#/components/examples/me"
}
}
},
"RemPreferences": {
"title": "rem Preferences",
"description": "rem preferences of project or styleguide. The content of this property varies depending on the value of its status field.",
"discriminator": {
"propertyName": "status",
"mapping": {
"enabled": "#/components/schemas/EnabledRemPreferences",
"disabled": "#/components/schemas/DisabledOrLinkedRemPreferences",
"linked": "#/components/schemas/DisabledOrLinkedRemPreferences"
}
},
"oneOf": [
{
"$ref": "#/components/schemas/EnabledRemPreferences"
},
{
"$ref": "#/components/schemas/DisabledOrLinkedRemPreferences"
}
]
},
"EnabledRemPreferences": {
"title": "Enabled rem Preferences",
"type": "object",
"required": [
"status",
"root_font_size",
"use_for_font_sizes",
"use_for_measurements"
],
"properties": {
"status": {
"type": "string",
"description": "The status of the preferences",
"enum": [
"enabled"
]
},
"root_font_size": {
"description": "Font size of the root element",
"type": "number"
},
"use_for_font_sizes": {
"description": "Whether rem unit is used for font sizes",
"type": "boolean"
},
"use_for_measurements": {
"description": "Whether rem unit is used for measurements",
"type": "boolean"
}
},
"example": {
"$ref": "#/components/examples/remPreferences"
}
},
"DisabledOrLinkedRemPreferences": {
"title": "Disabled or Linked rem Preferences",
"type": "object",
"description": "If `status` is `\"linked\"`, project or styleguide uses its parent styleguide as the source of preferences.",
"required": [
"status"
],
"properties": {
"status": {
"type": "string",
"description": "The status of the preferences.",
"enum": [
"disabled",
"linked"
]
}
}
},
"Project": {
"title": "Project",
"type": "object",
"required": [
"id",
"name",
"platform",
"status",
"created",
"number_of_members",
"number_of_screens",
"number_of_components",
"number_of_connected_components",
"number_of_colors",
"number_of_text_styles",
"number_of_spacing_tokens"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the project"
},
"name": {
"type": "string",
"description": "The name of the project"
},
"description": {
"type": "string",
"description": "The description of the project"
},
"platform": {
"type": "string",
"enum": [
"web",
"ios",
"android",
"macos"
],
"description": "The target platform of the project"
},
"thumbnail": {
"type": "string",
"description": "URL of the project's thumbnail image"
},
"status": {
"$ref": "#/components/schemas/ProjectStatusEnum"
},
"organization": {
"$ref": "#/components/schemas/OrganizationSummary"
},
"rem_preferences": {
"$ref": "#/components/schemas/RemPreferences"
},
"workflow_status": {
"$ref": "#/components/schemas/WorkflowStatus"
},
"scene_url": {
"type": "string",
"description": "URL of the project's scene (public projects only)",
"format": "url"
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the project was created"
},
"updated": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the project was updated"
},
"number_of_members": {
"type": "integer",
"description": "The number of members of the project"
},
"number_of_screens": {
"type": "integer",
"description": "The number of screens in the project"
},
"number_of_components": {
"type": "integer",
"description": "The number of components exported to the project"
},
"number_of_connected_components": {
"type": "integer",
"description": "The number of connected components in the project"
},
"number_of_text_styles": {
"type": "integer",
"description": "The number of text styles added to the project"
},
"number_of_colors": {
"type": "integer",
"description": "The number of colors added to the project"
},
"number_of_spacing_tokens": {
"type": "integer",
"description": "The number of spacing tokens added to the project"
},
"linked_styleguide": {
"$ref": "#/components/schemas/EntityReference",
"description": "Reference the styleguide which the project is linked to"
}
},
"example": {
"$ref": "#/components/examples/project"
},
"x-examples": {
"Personal Project": {
"$ref": "#/components/examples/project"
},
"Organization Project": {
"$ref": "#/components/examples/organizationProject"
}
}
},
"ProjectMember": {
"title": "Project Member",
"type": "object",
"required": [
"user",
"role"
],
"properties": {
"user": {
"$ref": "#/components/schemas/User"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"user",
"editor",
"member",
"alien"
],
"description": "The role of the user in the project"
}
},
"example": {
"$ref": "#/components/examples/projectMember"
}
},
"Organization": {
"title": "Organization",
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"description": "Organization's unique id"
},
"name": {
"type": "string",
"description": "Name of the user"
},
"logo": {
"type": "string",
"description": "URL of the organization's logo",
"format": "url"
},
"members": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrganizationMember"
},
"description": "Members of the organization (Does not exist on the response when user is restricted in organization)"
}
},
"example": {
"$ref": "#/components/examples/organization"
}
},
"OrganizationBilling": {
"title": "Organization Billing Details",
"type": "object",
"required": [
"total_seat_count",
"used_seat_count"
],
"properties": {
"total_seat_count": {
"type": "number",
"description": "Total number of seats reserved for the organization"
},
"used_seat_count": {
"type": "number",
"description": "Number of used seats for the organization"
}
},
"example": {
"$ref": "#/components/examples/organizationBilling"
}
},
"OrganizationMember": {
"title": "Organization Member",
"type": "object",
"required": [
"user",
"tags",
"role",
"restricted"
],
"properties": {
"user": {
"$ref": "#/components/schemas/User"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags of the user in the organization"
},
"role": {
"type": "string",
"enum": [
"owner",
"admin",
"editor",
"member",
"alien"
],
"description": "The role of the user in the organization\n\n\u261d\ufe0fNote that the Developer role maps to `member` and the Reviewer role maps to `alien` in the API.\n"
},
"restricted": {
"type": "boolean",
"description": "Whether the user's membership is restricted to only the projects that they are member of"
},
"invited": {
"type": "number",
"description": "Invitation timestamp of the user to the organization"
}
},
"example": {
"$ref": "#/components/examples/organizationMember"
}
},
"OrganizationSummary": {
"title": "Organization Summary",
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"description": "Organization's unique id"
},
"name": {
"type": "string",
"description": "Name of the user"
},
"logo": {
"type": "string",
"description": "URL of the organization's logo",
"format": "url"
}
},
"example": {
"$ref": "#/components/examples/organizationSummary"
}
},
"Screen": {
"title": "Screen",
"type": "object",
"required": [
"id",
"tags",
"name",
"image",
"created",
"number_of_versions",
"number_of_notes",
"number_of_annotations"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the screen"
},
"name": {
"type": "string",
"description": "The name of the screen"
},
"description": {
"type": "string",
"description": "The description of the screen"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tags platform of the screen"
},
"image": {
"$ref": "#/components/schemas/SnapshotImage"
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the screen was created"
},
"updated": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the screen was updated"
},
"number_of_versions": {
"type": "integer",
"description": "The number of versions exported to the screen"
},
"number_of_notes": {
"type": "integer",
"description": "The number of notes in the screen"
},
"number_of_annotations": {
"type": "integer",
"description": "The number of annotations in the screen"
},
"section": {
"$ref": "#/components/schemas/EntityReference",
"description": "Reference of the section that contains the screen"
},
"variant": {
"$ref": "#/components/schemas/ScreenVariant"
}
},
"example": {
"$ref": "#/components/examples/screen"
}
},
"ScreenNote": {
"title": "Screen Note",
"type": "object",
"description": "Screen notes are comments added to a screen and can be either point notes, which have a single point in the position field, or area notes, which have a position field containing both a start and end point to define a rectangular region.\n",
"required": [
"id",
"order",
"creator",
"status",
"comments",
"position",
"color",
"created"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the note"
},
"creator": {
"$ref": "#/components/schemas/User"
},
"order": {
"type": "integer",
"description": "Order of the note in the screen (e.g., 1, 2, 3, so on)"
},
"status": {
"$ref": "#/components/schemas/ScreenNoteStatusEnum"
},
"position": {
"$ref": "#/components/schemas/ScreenNotePosition"
},
"color": {
"$ref": "#/components/schemas/ScreenNoteColor"
},
"comments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ScreenNoteComment"
}
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the note was created"
}
},
"example": {
"$ref": "#/components/examples/screenNote"
}
},
"ScreenNoteColor": {
"title": "Screen Note Color",
"type": "object",
"required": [
"r",
"g",
"b",
"a"
],
"properties": {
"name": {
"$ref": "#/components/schemas/ScreenNoteColorNameEnum",
"description": "Name of the color"
},
"r": {
"type": "integer",
"description": "Red component of the color"
},
"g": {
"type": "integer",
"description": "Green component of the color"
},
"b": {
"type": "integer",
"description": "Blue component of the color"
},
"a": {
"type": "number",
"description": "Alpha component of the color"
}
},
"example": {
"$ref": "#/components/examples/screenNoteColor"
}
},
"ScreenNotePosition": {
"title": "Screen Note Position",
"description": "Position of the note with respect to top left corner. Values are normalized in [0, 1]",
"type": "object",
"required": [
"x",
"y"
],
"properties": {
"x": {
"type": "number",
"description": "The X-coordinate of the note's position. For area notes, this represents the X-coordinate of the end point."
},
"y": {
"type": "number",
"description": "The Y-coordinate of the note's position. For area notes, this represents the Y-coordinate of the end point."
},
"x_start": {
"type": "number",
"description": "The X-coordinate of the start point for area notes. Ignored for point notes."
},
"y_start": {
"type": "number",
"description": "The Y-coordinate of the start point for area notes. Ignored for point notes."
}
},
"example": {
"$ref": "#/components/examples/screenNotePosition"
}
},
"ScreenAnnotation": {
"title": "Screen Annotation",
"type": "object",
"required": [
"id",
"content",
"type",
"position",
"creator",
"updated",
"created"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the annotation"
},
"content": {
"type": "string",
"description": "The text of the annotation"
},
"type": {
"$ref": "#/components/schemas/ScreenAnnotationNoteType"
},
"position": {
"$ref": "#/components/schemas/ScreenAnnotationPosition"
},
"creator": {
"$ref": "#/components/schemas/User"
},
"updated_by": {
"$ref": "#/components/schemas/User",
"description": "The user who last updated the content of the annotation"
},
"updated": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the annotation was last updated"
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the annotation was created"
}
},
"example": {
"$ref": "#/components/examples/screenAnnotation"
}
},
"ScreenAnnotationPosition": {
"title": "Screen Annotation Position",
"description": "Position of the annotation with respect to top left corner. Values are normalized in [0, 1]",
"type": "object",
"required": [
"x",
"y"
],
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"example": {
"$ref": "#/components/examples/screenAnnotationPosition"
}
},
"ScreenAnnotationNoteType": {
"title": "Screen Annotation Note Type",
"type": "object",
"required": [
"id",
"name",
"color"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the annotation"
},
"name": {
"$ref": "#/components/schemas/ScreenAnnotationNoteTypeEnum",
"description": "Name of the note type"
},
"color": {
"$ref": "#/components/schemas/ScreenAnnotationColor",
"description": "Color of the note type"
}
}
},
"ScreenAnnotationColor": {
"title": "Screen Annotation Color",
"type": "object",
"required": [
"r",
"g",
"b",
"a"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the color"
},
"r": {
"type": "integer",
"description": "Red component of the color"
},
"g": {
"type": "integer",
"description": "Green component of the color"
},
"b": {
"type": "integer",
"description": "Blue component of the color"
},
"a": {
"type": "number",
"description": "Alpha component of the color"
}
},
"example": {
"$ref": "#/components/examples/screenAnnotationColor"
}
},
"ScreenSection": {
"title": "Screen Section",
"type": "object",
"required": [
"id",
"created",
"name"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the screen section"
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the screen section was created"
},
"name": {
"type": "string",
"description": "The name of the screen section"
},
"description": {
"type": "string",
"description": "The description of the screen section"
},
"parent": {
"$ref": "#/components/schemas/EntityReference"
}
},
"example": {
"$ref": "#/components/examples/screenSection"
}
},
"ScreenVariant": {
"title": "Screen Variant",
"type": "object",
"required": [
"value",
"group"
],
"properties": {
"value": {
"type": "string",
"description": "Value for this variant of the screen"
},
"group": {
"$ref": "#/components/schemas/ScreenVariantGroupReference"
}
}
},
"ScreenVariantGroup": {
"title": "Screen Variant Group",
"type": "object",
"required": [
"id",
"name",
"variants"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the screen variant"
},
"name": {
"type": "string",
"description": "The name of the screen variant"
},
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ScreenVariantGroupValue"
}
}
},
"example": {
"$ref": "#/components/examples/screenVariantGroup"
}
},
"ScreenVariantGroupReference": {
"title": "Screen Variant Group Reference",
"type": "object",
"description": "Variant group that contains the screen",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string",
"description": "Unique id of the screen variant"
},
"name": {
"type": "string",
"description": "Name of the screen variant"
}
}
},
"ScreenVariantGroupValue": {
"title": "Screen Variant Group Value",
"type": "object",
"required": [
"screen_id",
"value"
],
"properties": {
"screen_id": {
"type": "string",
"description": "Unique id of the variant screen"
},
"value": {
"type": "string",
"description": "Value for the variant"
}
}
},
"ScreenVersion": {
"title": "Screen Version",
"type": "object",
"required": [
"id",
"created",
"source",
"width",
"height",
"density_scale",
"links",
"layers",
"assets"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the version"
},
"creator": {
"$ref": "#/components/schemas/User"
},
"commit": {
"$ref": "#/components/schemas/VersionCommit"
},
"image_url": {
"type": "string",
"format": "url",
"description": "URL of the image for the version"
},
"thumbnails": {
"$ref": "#/components/schemas/Thumbnails"
},
"source": {
"allOf": [
{
"$ref": "#/components/schemas/SourceEnum"
},
{
"description": "Source application of the version"
}
]
},
"source_file_url": {
"type": "string",
"format": "url",
"description": "Source file url of the version"
},
"width": {
"type": "integer",
"description": "Width of the version"
},
"height": {
"type": "integer",
"description": "Height of the version"
},
"background_color": {
"$ref": "#/components/schemas/ColorData"
},
"density_scale": {
"type": "number",
"description": "Pixel density"
},
"links": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Link"
}
},
"grid": {
"$ref": "#/components/schemas/Grid"
},
"layers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Layer"
},
"description": "Layers of the screen version"
},
"assets": {
"type": "array",
"description": "Assets of the screen version",
"items": {
"$ref": "#/components/schemas/Asset"
}
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the screen version was created"
}
},
"example": {
"$ref": "#/components/examples/screenVersion"
}
},
"ScreenVersionSummary": {
"title": "Screen Version Summary",
"type": "object",
"required": [
"id",
"created",
"source",
"width",
"height",
"density_scale",
"links",
"image_url",
"thumbnails"
],
"properties": {
"id": {
"type": "string",
"description": "The unique id of the version"
},
"creator": {
"$ref": "#/components/schemas/User"
},
"commit": {
"$ref": "#/components/schemas/VersionCommit"
},
"image_url": {
"type": "string",
"format": "url",
"description": "URL of the image for the version"
},
"thumbnails": {
"$ref": "#/components/schemas/Thumbnails"
},
"source": {
"allOf": [
{
"$ref": "#/components/schemas/SourceEnum"
},
{
"description": "Source application of the version"
}
]
},
"source_file_url": {
"type": "string",
"format": "url",
"description": "Source file url of the version"
},
"width": {
"type": "integer",
"description": "Width of the version"
},
"height": {
"type": "integer",
"description": "Height of the version"
},
"background_color": {
"$ref": "#/components/schemas/ColorData"
},
"density_scale": {
"type": "number",
"description": "Pixel density"
},
"links": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Link"
}
},
"created": {
"type": "integer",
"format": "timestamp",
"description": "The unix timestamp when the screen version was created"
}
},
"example": {
"$ref": "#/components/examples/screenVersionSummary"
}
},
"Styleguide": {
"title": "Styleguide",
"type": "object",
"required": [
"id",
"name",
"platform",
"status",
"created",
"number_of_mem
# --- truncated at 32 KB (272 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zeplin/refs/heads/main/json-schema/zeplin-schemas.json