dev-to · Schema

Dev.to Article

A blog post, discussion, or help thread published on the Dev.to developer community platform. Articles are the primary content type and can include Markdown body text, cover images, tags, and series associations.

Properties

Name Type Description
type_of string The type of resource, always 'article' for article objects.
id integer The unique numeric identifier of the article.
title string The title of the article.
description string A short description or subtitle for the article, typically used for SEO and social sharing.
readable_publish_date string The publication date in a human-readable format (e.g., 'Mar 20').
slug string The URL-friendly slug derived from the article title.
path string The relative path to the article on DEV (e.g., '/username/article-slug-1a2b').
url string The full URL of the article on DEV.
comments_count integer The total number of comments on the article.
public_reactions_count integer The total number of public reactions (likes, unicorns, etc.) on the article.
collection_id integernull The ID of the collection (series) the article belongs to, or null if not part of a series.
published_timestamp string The ISO 8601 timestamp when the article was published.
positive_reactions_count integer The count of positive reactions on the article.
cover_image stringnull The URL of the article's cover image, or null if no cover image is set.
social_image string The URL of the social sharing image generated for the article.
canonical_url string The canonical URL if the article was originally published elsewhere, or the DEV URL.
created_at string The ISO 8601 timestamp when the article was created.
edited_at stringnull The ISO 8601 timestamp when the article was last edited, or null if never edited.
crossposted_at stringnull The ISO 8601 timestamp when the article was crossposted, or null.
published_at string The ISO 8601 timestamp when the article was published.
last_comment_at stringnull The ISO 8601 timestamp of the most recent comment, or null if no comments exist.
reading_time_minutes integer The estimated reading time of the article in minutes.
tag_list array A list of up to four tags associated with the article.
tags string A comma-separated string of tags associated with the article.
body_html string The article body rendered as HTML.
body_markdown string The article body in the original Markdown format.
published boolean Whether the article is currently published.
user object
organization object
View JSON Schema on GitHub

JSON Schema

dev-to-article-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://dev.to/schemas/dev-to/article.json",
  "title": "Dev.to Article",
  "description": "A blog post, discussion, or help thread published on the Dev.to developer community platform. Articles are the primary content type and can include Markdown body text, cover images, tags, and series associations.",
  "type": "object",
  "required": ["id", "title", "type_of"],
  "properties": {
    "type_of": {
      "type": "string",
      "const": "article",
      "description": "The type of resource, always 'article' for article objects."
    },
    "id": {
      "type": "integer",
      "description": "The unique numeric identifier of the article."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "description": "The title of the article."
    },
    "description": {
      "type": "string",
      "description": "A short description or subtitle for the article, typically used for SEO and social sharing."
    },
    "readable_publish_date": {
      "type": "string",
      "description": "The publication date in a human-readable format (e.g., 'Mar 20')."
    },
    "slug": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
      "description": "The URL-friendly slug derived from the article title."
    },
    "path": {
      "type": "string",
      "description": "The relative path to the article on DEV (e.g., '/username/article-slug-1a2b')."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The full URL of the article on DEV."
    },
    "comments_count": {
      "type": "integer",
      "minimum": 0,
      "description": "The total number of comments on the article."
    },
    "public_reactions_count": {
      "type": "integer",
      "minimum": 0,
      "description": "The total number of public reactions (likes, unicorns, etc.) on the article."
    },
    "collection_id": {
      "type": ["integer", "null"],
      "description": "The ID of the collection (series) the article belongs to, or null if not part of a series."
    },
    "published_timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the article was published."
    },
    "positive_reactions_count": {
      "type": "integer",
      "minimum": 0,
      "description": "The count of positive reactions on the article."
    },
    "cover_image": {
      "type": ["string", "null"],
      "format": "uri",
      "description": "The URL of the article's cover image, or null if no cover image is set."
    },
    "social_image": {
      "type": "string",
      "format": "uri",
      "description": "The URL of the social sharing image generated for the article."
    },
    "canonical_url": {
      "type": "string",
      "format": "uri",
      "description": "The canonical URL if the article was originally published elsewhere, or the DEV URL."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the article was created."
    },
    "edited_at": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the article was last edited, or null if never edited."
    },
    "crossposted_at": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the article was crossposted, or null."
    },
    "published_at": {
      "type": "string",
      "format": "date-time",
      "description": "The ISO 8601 timestamp when the article was published."
    },
    "last_comment_at": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "The ISO 8601 timestamp of the most recent comment, or null if no comments exist."
    },
    "reading_time_minutes": {
      "type": "integer",
      "minimum": 0,
      "description": "The estimated reading time of the article in minutes."
    },
    "tag_list": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 4,
      "description": "A list of up to four tags associated with the article."
    },
    "tags": {
      "type": "string",
      "description": "A comma-separated string of tags associated with the article."
    },
    "body_html": {
      "type": "string",
      "description": "The article body rendered as HTML."
    },
    "body_markdown": {
      "type": "string",
      "description": "The article body in the original Markdown format."
    },
    "published": {
      "type": "boolean",
      "description": "Whether the article is currently published."
    },
    "user": {
      "$ref": "#/$defs/User"
    },
    "organization": {
      "$ref": "#/$defs/Organization"
    }
  },
  "$defs": {
    "User": {
      "type": "object",
      "description": "The author of the article.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of the user."
        },
        "username": {
          "type": "string",
          "description": "The unique username of the user."
        },
        "twitter_username": {
          "type": ["string", "null"],
          "description": "The user's Twitter username, or null if not set."
        },
        "github_username": {
          "type": ["string", "null"],
          "description": "The user's GitHub username, or null if not set."
        },
        "user_id": {
          "type": "integer",
          "description": "The unique numeric ID of the user."
        },
        "website_url": {
          "type": ["string", "null"],
          "format": "uri",
          "description": "The user's website URL, or null if not set."
        },
        "location": {
          "type": ["string", "null"],
          "description": "The user's location, or null if not set."
        },
        "summary": {
          "type": ["string", "null"],
          "description": "A brief bio or summary of the user."
        },
        "profile_image": {
          "type": "string",
          "format": "uri",
          "description": "The URL of the user's profile image."
        },
        "profile_image_90": {
          "type": "string",
          "format": "uri",
          "description": "The URL of the 90px profile image."
        },
        "joined_at": {
          "type": "string",
          "format": "date-time",
          "description": "The ISO 8601 timestamp when the user joined the platform."
        }
      }
    },
    "Organization": {
      "type": ["object", "null"],
      "description": "The organization the article was published under, or null if published as an individual.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of the organization."
        },
        "username": {
          "type": "string",
          "description": "The unique username (slug) of the organization."
        },
        "slug": {
          "type": "string",
          "description": "The URL slug of the organization."
        },
        "profile_image": {
          "type": "string",
          "format": "uri",
          "description": "The URL of the organization's profile image."
        },
        "profile_image_90": {
          "type": "string",
          "format": "uri",
          "description": "The URL of the 90px profile image."
        }
      }
    }
  }
}