Resources

Resources are simple objects supporting CRUD operations. Read operations can be done anonymously. Creating and updating require account permissions, and deleting requires admin account permissions.

Browsers

A browser is a brand of web client that has one or more versions. This follows most users’ understanding of browsers, i.e., firefox_desktop represents desktop Firefox, safari_desktop represents desktop Safari, and firefox_android represents Firefox on Android.

The browsers representation includes:

  • attributes
    • id (server selected) - Database ID
    • slug (write-once) - Unique, human-friendly slug
    • name (localized) - Browser name
    • note (localized) - Notes, intended for related data like OS, applicable device, engines, etc.
  • relationships
    • versions (many) - Associated versions, ordered roughly from earliest to latest. User can change the order.
    • history_current (one) - Current historical_browsers. Can be set to a value from history to revert changes.
    • history (many) - Associated historical_browsers in time order (most recent first). Changes are ignored.

Note: bug 1078699 is proposing that select users will be able to modify slugs

An example browser resource:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/browsers/7"
    },
    "data": {
        "type": "browsers",
        "id": "7",
        "attributes": {
            "slug": "firefox_desktop",
            "name": {
                "en": "Firefox for Desktop"
            },
            "note": null
        },
        "relationships": {
            "versions": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/browsers/7/relationships/versions",
                    "related": "https://browsercompat.org/api/v2/browsers/7/versions"
                },
                "data": [
                    {
                        "type": "versions",
                        "id": "17"
                    },
                    {
                        "type": "versions",
                        "id": "18"
                    },
                    {
                        "type": "versions",
                        "id": "19"
                    },
                    {
                        "type": "versions",
                        "id": "20"
                    },
                    {
                        "type": "versions",
                        "id": "21"
                    }
                ]
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/browsers/7/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/browsers/7/history_current"
                },
                "data": {
                    "type": "historical_browsers",
                    "id": "7"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/browsers/7/relationships/history",
                    "related": "https://browsercompat.org/api/v2/browsers/7/history"
                },
                "data": [
                    {
                        "type": "historical_browsers",
                        "id": "7"
                    }
                ]
            }
        }
    }
}

Versions

A version is a specific release of a Browser.

The versions representation includes:

  • attributes
    • id (server selected) - Database ID
    • version (write-once) - Version of browser. Numeric or text string, depending on the status (see table below).
    • release_day - Day that browser was released in ISO 8601 format, or null if unknown.
    • retirement_day - Approximate day the browser was “retired” (stopped being a current browser), in ISO 8601 format, or null if unknown.
    • status - One of beta, current, future, retired-beta, retired, or unknown (see table below).
    • release_notes_uri (localized) - URI of release notes for this version, or null if none.
    • note (localized) - Engine, OS, etc. information, or null
    • order (read-only) - The relative order among versions for this browser. The order can be changed on the browser resource.
  • relationships
    • browser - The related browser
    • supports (many) - Associated supports, in ID order. Changes are ignored; work on the supports to add, change, or remove.
    • history_current (one) - Current historical_versions. Set to a value from history to revert to that version.
    • history (many) - Associated historical_versions, in time order (most recent first). Changes are ignored.

The version is either a numeric value, such as "11.0", or text, such as "Nightly". The version format depends on the chosen status:

Status Version Meaning
beta numeric A release candidate suggested for early adopters or testers
current numeric or the text "current" A current and preferred release for most users
future text such as "Nightly" A named but unnumbered future release
retired-beta numeric An old beta version, replaced by a new beta or release
retired numeric An old released version no longer recommended for users
unknown numeric A release with an unknown status

An example version resource:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/versions/21"
    },
    "data": {
        "type": "versions",
        "id": "21",
        "attributes": {
            "version": "16.0",
            "release_day": "2012-10-09",
            "retirement_day": "2012-11-20",
            "status": "retired",
            "release_notes_uri": {
                "en": "https://developer.mozilla.org/en/Firefox/Releases/16",
                "de": "https://developer.mozilla.org/de/Firefox/Releases/16",
                "es": "https://developer.mozilla.org/es/Firefox/Releases/16",
                "fr": "https://developer.mozilla.org/fr/Firefox/Versions/16",
                "ja": "https://developer.mozilla.org/ja/Firefox/Releases/16",
                "ko": "https://developer.mozilla.org/ko/Firefox/Releases/16",
                "pl": "https://developer.mozilla.org/pl/Firefox/Releases/16",
                "pt-PT": "https://developer.mozilla.org/pt-PT/Firefox/Releases/16",
                "ru": "https://developer.mozilla.org/ru/Firefox/Releases/16",
                "zh-CN": "https://developer.mozilla.org/zh-CN/Firefox/Releases/16",
                "zh-TW": "https://developer.mozilla.org/zh-TW/Firefox/Releases/16"
            },
            "note": null,
            "order": 4
        },
        "relationships": {
            "browser": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/versions/21/relationships/browser",
                    "related": "https://browsercompat.org/api/v2/versions/21/browser"
                },
                "data": {
                    "type": "browsers",
                    "id": "7"
                }
            },
            "supports": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/versions/21/relationships/supports",
                    "related": "https://browsercompat.org/api/v2/versions/21/supports"
                },
                "data": [
                    {
                        "type": "supports",
                        "id": "12"
                    },
                    {
                        "type": "supports",
                        "id": "22"
                    }
                ]
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/versions/21/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/versions/21/history_current"
                },
                "data": {
                    "type": "historical_versions",
                    "id": "21"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/versions/21/relationships/history",
                    "related": "https://browsercompat.org/api/v2/versions/21/history"
                },
                "data": [
                    {
                        "type": "historical_versions",
                        "id": "21"
                    }
                ]
            }
        }
    }
}

Features

A feature is a web technology. This could be a precise technology, such as the value cover for the CSS background-size property. It could be a hierarchical group of related technologies, such as the CSS background-size property or the set of all CSS properties. Some features correspond to a page on MDN, which will display the list of specifications and a browser compatibility table of the sub-features.

The features representation includes:

  • attributes
    • id (server selected) - Database ID
    • slug (write-once) - Unique, human-friendly slug
    • mdn_uri (optional, localized) - The URI of the language-specific MDN page that this feature was first scraped from. If the path contains unicode, it should be percent-encoded as in RFC 3987. May be used in UX or for debugging import scripts.
    • experimental - True if a feature is considered experimental, such as being non-standard or part of an non-ratified spec.
    • standardized - True if a feature is described in a standards-track spec, regardless of the spec’s maturity.
    • stable - True if a feature is considered suitable for production websites.
    • obsolete - True if a feature should not be used in new development.
    • name (canonical or localized) - Feature name. If the name is the code used by a developer, then the value is a string, and should be wrapped in a <code> block when displayed. If the name is a description of the feature, then the value is the available translations, including at least an en translation, and may include HTML markup. For example, "display" and "display: none" are canonical names for the CSS display property and one of the values for that property, while "Basic support", "<code>none, inline</code> and <code>block</code>", and "CSS Properties" are non-canonical names that should be translated.
  • relationships
    • sections (many) - Associated sections. Order can be changed by the user.
    • supports (many) - Associated supports, Order is in ID order, changes are ignored.
    • parent (one or null) - The feature one level up, or null if top-level. Can be changed by user.
    • children (many) - The features that have this feature as parent, in display order. Can be an empty list, for “leaf” features. Can be re-ordered by the user.
    • history_current (one) - Current historical_features. User can set to a valid history to revert to that version.
    • history (many) - Associated historical_features, in time order (most recent first). Changes are ignored.

Note: bug 1240785 is proposing that the slug is replaced with a list of optional aliases

Here is an example of a leaf feature with a translated name:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/features/12"
    },
    "data": {
        "type": "features",
        "id": "12",
        "attributes": {
            "slug": "web-css-transform-three-value-syntax",
            "mdn_uri": null,
            "experimental": false,
            "standardized": true,
            "stable": true,
            "obsolete": false,
            "name": {
                "en": "Three-value syntax",
                "es": "Sintaxis con tres valores",
                "ja": "3-値構文"
            }
        },
        "relationships": {
            "parent": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/12/relationships/parent",
                    "related": "https://browsercompat.org/api/v2/features/12/parent"
                },
                "data": {
                    "type": "features",
                    "id": "10"
                }
            },
            "children": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/12/relationships/children",
                    "related": "https://browsercompat.org/api/v2/features/12/children"
                },
                "data": []
            },
            "references": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/12/relationships/references",
                    "related": "https://browsercompat.org/api/v2/features/12/references"
                },
                "data": []
            },
            "supports": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/12/relationships/supports",
                    "related": "https://browsercompat.org/api/v2/features/12/supports"
                },
                "data": [
                    {
                        "type": "supports",
                        "id": "20"
                    },
                    {
                        "type": "supports",
                        "id": "21"
                    },
                    {
                        "type": "supports",
                        "id": "22"
                    },
                    {
                        "type": "supports",
                        "id": "23"
                    },
                    {
                        "type": "supports",
                        "id": "24"
                    },
                    {
                        "type": "supports",
                        "id": "25"
                    },
                    {
                        "type": "supports",
                        "id": "26"
                    }
                ]
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/12/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/features/12/history_current"
                },
                "data": {
                    "type": "historical_features",
                    "id": "12"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/12/relationships/history",
                    "related": "https://browsercompat.org/api/v2/features/12/history"
                },
                "data": [
                    {
                        "type": "historical_features",
                        "id": "12"
                    }
                ]
            }
        }
    }
}

Here is an example of a branch feature with a canonical name (the parent of the previous example):

{
    "links": {
        "self": "https://browsercompat.org/api/v2/features/10"
    },
    "data": {
        "type": "features",
        "id": "10",
        "attributes": {
            "slug": "web-css-transform-origin",
            "mdn_uri": {
                "en": "https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin",
                "es": "https://developer.mozilla.org/es/docs/Web/CSS/transform-origin",
                "fr": "https://developer.mozilla.org/fr/docs/Web/CSS/transform-origin",
                "ja": "https://developer.mozilla.org/ja/docs/Web/CSS/transform-origin"
            },
            "experimental": false,
            "standardized": true,
            "stable": true,
            "obsolete": false,
            "name": "transform-origin"
        },
        "relationships": {
            "parent": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/10/relationships/parent",
                    "related": "https://browsercompat.org/api/v2/features/10/parent"
                },
                "data": {
                    "type": "features",
                    "id": "2"
                }
            },
            "children": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/10/relationships/children",
                    "related": "https://browsercompat.org/api/v2/features/10/children"
                },
                "data": [
                    {
                        "type": "features",
                        "id": "11"
                    },
                    {
                        "type": "features",
                        "id": "12"
                    }
                ]
            },
            "references": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/10/relationships/references",
                    "related": "https://browsercompat.org/api/v2/features/10/references"
                },
                "data": [
                    {
                        "type": "references",
                        "id": "4"
                    }
                ]
            },
            "supports": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/10/relationships/supports",
                    "related": "https://browsercompat.org/api/v2/features/10/supports"
                },
                "data": []
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/10/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/features/10/history_current"
                },
                "data": {
                    "type": "historical_features",
                    "id": "10"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/10/relationships/history",
                    "related": "https://browsercompat.org/api/v2/features/10/history"
                },
                "data": [
                    {
                        "type": "historical_features",
                        "id": "10"
                    }
                ]
            }
        }
    }
}

Supports

A support is an assertion that a particular Version of a Browser supports (or does not support) a feature.

The support representation includes:

  • attributes
    • id (server selected) - Database ID
    • support - Assertion of support of the version for the feature, one of "yes", "no", "partial", or "unknown"
    • prefix - Prefix used to enable support, such as “moz”
    • prefix_mandatory - True if the prefix is required
    • alternate_name - An alternate name associated with this feature, such as "RTCPeerConnectionIdentityEvent"
    • alternate_name_mandatory - True if the alternate name is required
    • requires_config - A configuration string required to enable the feature, such as "media.peerconnection.enabled=on"
    • default_config - The configuration string in the shipping browser, such as "media.peerconnection.enabled=off"
    • protected - True if the feature requires additional steps to enable in order to protect the user’s security or privacy, such as geolocation and the Bluetooth API.
    • note (localized) - Note on support, designed for display after a compatibility table, can contain HTML
  • relationships
    • version (one) - The associated version. Cannot be changed by the user after creation.
    • feature (one) - The associated feature. Cannot be changed by the user after creation. The version and feature combo must be unique.
    • history_current (one) - Current historical_supports. Can be changed to a valid history to revert to that version.
    • history (many) - Associated historical_supports in time order (most recent first). Changes are ignored.

Here is a sample support:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/supports/22"
    },
    "data": {
        "type": "supports",
        "id": "22",
        "attributes": {
            "support": "yes",
            "prefix": null,
            "prefix_mandatory": false,
            "alternate_name": null,
            "alternate_mandatory": false,
            "requires_config": null,
            "default_config": null,
            "protected": false,
            "note": null
        },
        "relationships": {
            "version": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/supports/22/relationships/version",
                    "related": "https://browsercompat.org/api/v2/supports/22/version"
                },
                "data": {
                    "type": "versions",
                    "id": "21"
                }
            },
            "feature": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/supports/22/relationships/feature",
                    "related": "https://browsercompat.org/api/v2/supports/22/feature"
                },
                "data": {
                    "type": "features",
                    "id": "12"
                }
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/supports/22/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/supports/22/history_current"
                },
                "data": {
                    "type": "historical_supports",
                    "id": "22"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/supports/22/relationships/history",
                    "related": "https://browsercompat.org/api/v2/supports/22/history"
                },
                "data": [
                    {
                        "type": "historical_supports",
                        "id": "22"
                    }
                ]
            }
        }
    }
}

Specifications

A specification is a standards document that specifies a web technology.

The specification representation includes:

  • attributes
    • id (server selected) - Database ID
    • slug - Unique, human-friendly key
    • mdn_key - Key used in the KumaScript macros SpecName and Spec2.
    • name (localized) - Specification name
    • uri (localized) - Specification URI, without subpath and anchor
  • relationships
    • maturity (one) - Associated maturity. Can be changed by the user.
    • sections (many) - Associated sections. The order can be changed by the user.
    • history_current (one) - Current historical_specifications. Can be changed to a valid history to revert to that version.
    • history (many) - Associated historical_specifications in time order (most recent first). Changes are ignored.

Here is a sample specification:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/specifications/2"
    },
    "data": {
        "type": "specifications",
        "id": "2",
        "attributes": {
            "slug": "css2_1",
            "mdn_key": "CSS2.1",
            "name": {
                "en": "CSS Level&nbsp;2 (Revision&nbsp;1)"
            },
            "uri": {
                "en": "http://www.w3.org/TR/CSS2/"
            }
        },
        "relationships": {
            "maturity": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/specifications/2/relationships/maturity",
                    "related": "https://browsercompat.org/api/v2/specifications/2/maturity"
                },
                "data": {
                    "type": "maturities",
                    "id": "1"
                }
            },
            "sections": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/specifications/2/relationships/sections",
                    "related": "https://browsercompat.org/api/v2/specifications/2/sections"
                },
                "data": [
                    {
                        "type": "sections",
                        "id": "2"
                    }
                ]
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/specifications/2/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/specifications/2/history_current"
                },
                "data": {
                    "type": "historical_specifications",
                    "id": "2"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/specifications/2/relationships/history",
                    "related": "https://browsercompat.org/api/v2/specifications/2/history"
                },
                "data": [
                    {
                        "type": "historical_specifications",
                        "id": "2"
                    }
                ]
            }
        }
    }
}

Sections

A section refers to a specific area of a specification document.

The section representation includes:

  • attributes
    • id (server selected) - Database ID
    • number (optional, localized) - The section number
    • name (localized) - Section name
    • subpath (localized, optional) - A subpage (possibly with an #anchor) to get to the subsection in the doc. Can be empty string.
  • relationships
    • specification (one) - The specification. Can be changed by the user.
    • references (many) - The associated references. In ID order, changes are ignored.
    • history_current (one) - Current historical_sections. Can be changed to a valid history to revert to that version.
    • history (many) - Associated historical_sections in time order (most recent first). Changes are ignored.

Here is a sample section:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/sections/3"
    },
    "data": {
        "type": "sections",
        "id": "3",
        "attributes": {
            "number": {
                "en": "16"
            },
            "name": {
                "en": "The float property"
            },
            "subpath": {
                "en": "#the-float-property"
            }
        },
        "relationships": {
            "references": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/sections/3/relationships/references",
                    "related": "https://browsercompat.org/api/v2/sections/3/references"
                },
                "data": [
                    {
                        "type": "references",
                        "id": "3"
                    }
                ]
            },
            "specification": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/sections/3/relationships/specification",
                    "related": "https://browsercompat.org/api/v2/sections/3/specification"
                },
                "data": {
                    "type": "specifications",
                    "id": "3"
                }
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/sections/3/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/sections/3/history_current"
                },
                "data": {
                    "type": "historical_sections",
                    "id": "3"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/sections/3/relationships/history",
                    "related": "https://browsercompat.org/api/v2/sections/3/history"
                },
                "data": [
                    {
                        "type": "historical_sections",
                        "id": "3"
                    }
                ]
            }
        }
    }
}

References

A reference ties a specification section to a feature.

The reference representation includes:

  • attributes
    • id (server selected) - Database ID
    • note (localized, optional) - Notes for this reference
  • links
    • feature (one) - The feature. Can be changed by the user.
    • section (one) - The section. Can be changed by the user.
    • history_current (one) - Current historical_references. Can be changed to a valid history to revert to that version.
    • history (many) - Associated historical_references in time order (most recent first). Changes are ignored.

Here is a sample reference:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/references/3"
    },
    "data": {
        "type": "references",
        "id": "3",
        "attributes": {
            "note": {
                "en": "Lots of new values, not all clearly defined yet. Any differences in behavior unrelated to new features are expected to be unintentional; please report."
            }
        },
        "relationships": {
            "feature": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/references/3/relationships/feature",
                    "related": "https://browsercompat.org/api/v2/references/3/feature"
                },
                "data": {
                    "type": "features",
                    "id": "5"
                }
            },
            "section": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/references/3/relationships/section",
                    "related": "https://browsercompat.org/api/v2/references/3/section"
                },
                "data": {
                    "type": "sections",
                    "id": "3"
                }
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/references/3/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/references/3/history_current"
                },
                "data": {
                    "type": "historical_references",
                    "id": "3"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/references/3/relationships/history",
                    "related": "https://browsercompat.org/api/v2/references/3/history"
                },
                "data": [
                    {
                        "type": "historical_references",
                        "id": "3"
                    }
                ]
            }
        }
    }
}

Maturities

A maturity refers to the maturity of a specification document.

The maturity representation includes:

  • attributes
    • id (server selected) - Database ID
    • slug - A human-friendly identifier for this maturity. When applicable, it matches the key in the KumaScript macro Spec2
    • name (localized) - Status name
  • relationships
    • specifications (many) - Associated specifications. In ID order, changes are ignored.
    • history_current (one) - Current historical_maturities. Can be changed to a valid history to revert to that version.
    • history (many) - Associated historical_maturities in time order (most recent first). Changes are ignored.

Here is a sample maturity:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/maturities/1"
    },
    "data": {
        "type": "maturities",
        "id": "1",
        "attributes": {
            "slug": "REC",
            "name": {
                "en": "Recommendation",
                "de": "Empfehlung",
                "ja": "勧告",
                "ru": "Рекомендация"
            }
        },
        "relationships": {
            "specifications": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/maturities/1/relationships/specifications",
                    "related": "https://browsercompat.org/api/v2/maturities/1/specifications"
                },
                "data": [
                    {
                        "type": "specifications",
                        "id": "1"
                    },
                    {
                        "type": "specifications",
                        "id": "2"
                    },
                    {
                        "type": "specifications",
                        "id": "6"
                    }
                ]
            },
            "history_current": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/maturities/1/relationships/history_current",
                    "related": "https://browsercompat.org/api/v2/maturities/1/history_current"
                },
                "data": {
                    "type": "historical_maturities",
                    "id": "1"
                }
            },
            "history": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/maturities/1/relationships/history",
                    "related": "https://browsercompat.org/api/v2/maturities/1/history"
                },
                "data": [
                    {
                        "type": "historical_maturities",
                        "id": "1"
                    }
                ]
            }
        }
    }
}

Users

A user represents a person or process that creates, changes, or deletes a resource.

The representation includes:

  • attributes
    • id (server selected) - Database ID
    • username - The user’s email or ID
    • created (server selected) - Time that the account was created, in ISO 8601 format.
    • agreement - The version of the contribution agreement the user has accepted. “0” for not agreed, “1” for first version, etc.
    • permissions - A list of permissions. Permissions include "change-resource" (add or change any resource except users or history resources), "delete-resource" (delete any resource) "import-mdn" (setup import of an MDN page)
  • relationships
    • changesets (many) - Associated changesets, in ID order, changes are ignored.

Here’s an example user:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/users/1"
    },
    "data": {
        "type": "users",
        "id": "1",
        "attributes": {
            "username": "user",
            "created": "2016-01-08T22:21:50.254130Z",
            "agreement": 0,
            "permissions": [
                "change-resource",
                "delete-resource"
            ]
        },
        "relationships": {
            "changesets": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/users/1/relationships/changesets",
                    "related": "https://browsercompat.org/api/v2/users/1/changesets"
                },
                "data": [
                    {
                        "type": "changesets",
                        "id": "1"
                    }
                ]
            }
        }
    }
}

You can also request the authenticated user’s resource:

GET /api/v2/users/me HTTP/1.1
Host: browsercompat.org
Accept: application/vnd.api+json
Authorization: Bearer xxQLNiTUFjRL5En8nBWzSDc5tLWkV2

The response is a redirect to the user’s resource:

HTTP/1.1 302 FOUND
Content-Type: text/html; charset=utf-8
Location: https://browsercompat.org/api/v2/users/1

If the request is made anonymously, then the response is an error:

HTTP/1.1 401 UNAUTHORIZED
Content-Type: application/vnd.api+json
WWW-Authenticate: Bearer realm="api"
{
    "errors": [
        {
            "detail": "Authentication credentials were not provided.",
            "status": "401"
        }
    ]
}

Changesets

A changeset collects history resources into a logical unit, allowing for faster reversions and better history display. The changeset can be auto-created through a POST, PUT, or DELETE to a resource, or it can be created independently and specified by adding changeset=<ID> URI parameter (i.e., PUT /browsers/15?changeset=73).

The representation includes:

  • attributes
    • id (server selected) - Database ID
    • created (server selected) - When the changeset was created, in ISO 8601 format.
    • modified (server selected) - When the changeset was last modified, in ISO 8601 format.
    • target_resource_type (write-once, optional) - The name of the primary resource for this changeset, for example “browsers”, “versions”, etc.
    • target_resource_id (write-once, optional) - The ID of the primary resource for this changeset.
    • closed - True if the changeset is closed to new changes. Auto-created changesets are auto-closed, and cache invalidation is delayed until manually created changesets are closed.
  • relationships
    • user (one) - The user who initiated this changeset, can not be changed.
    • historical_browsers (many) - Associated historical_browsers, in ID order, changes are ignored.
    • historical_features (many) - Associated historical_features, in ID order, changes are ignored.
    • historical_maturities (many) - Associated historical_maturities, in ID order, changes are ignored.
    • historical_sections (many) - Associated historical_sections, in ID order, changes are ignored.
    • historical_specifications (many) - Associated historical_specifications, in ID order, changes are ignored.
    • historical_supports (many) - Associated historical_supports, in ID order, changes are ignored.
    • historical_versions (many) - Associated historical_versions, in ID order, changes are ignored.

Here’s an example changeset resource:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/changesets/2"
    },
    "data": {
        "type": "changesets",
        "id": "2",
        "attributes": {
            "created": "2016-01-14T17:24:04.159902Z",
            "modified": "2016-01-14T17:24:30.537134Z",
            "closed": true,
            "target_resource_type": null,
            "target_resource_id": null
        },
        "relationships": {
            "user": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/user",
                    "related": "https://browsercompat.org/api/v2/changesets/2/user"
                },
                "data": {
                    "type": "users",
                    "id": "1"
                }
            },
            "historical_browsers": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_browsers",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_browsers"
                },
                "data": [
                    {
                        "type": "historical_browsers",
                        "id": "16"
                    }
                ]
            },
            "historical_features": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_features",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_features"
                },
                "data": []
            },
            "historical_maturities": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_maturities",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_maturities"
                },
                "data": []
            },
            "historical_references": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_references",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_references"
                },
                "data": []
            },
            "historical_sections": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_sections",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_sections"
                },
                "data": []
            },
            "historical_specifications": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_specifications",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_specifications"
                },
                "data": []
            },
            "historical_supports": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_supports",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_supports"
                },
                "data": []
            },
            "historical_versions": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/changesets/2/relationships/historical_versions",
                    "related": "https://browsercompat.org/api/v2/changesets/2/historical_versions"
                },
                "data": []
            }
        }
    }
}

Historical Browsers

A historical_browser resource represents the state of a browser at a point in time, and who is responsible for that state. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The browsers representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • browser (one) - Associated browser, can not be changed

Here is a sample historical_browser:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_browsers/17"
    },
    "data": {
        "type": "historical_browsers",
        "id": "17",
        "attributes": {
            "date": "2016-01-14T06:30:59.618000Z",
            "event": "created",
            "archive_data": {
                "type": "browsers",
                "id": "17",
                "attributes": {
                    "slug": "konqueror",
                    "name": {
                        "en": "Konqueror"
                    },
                    "note": {
                        "en": "First comes the Navigator, then Explorer, and then the Konqueror."
                    }
                },
                "relationships": {
                    "versions": {
                        "data": []
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_browsers",
                            "id": "17"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/browsers/17"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_browsers/17/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_browsers/17/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "3"
                }
            },
            "browser": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_browsers/17/relationships/browser",
                    "related": "https://browsercompat.org/api/v2/historical_browsers/17/browser"
                },
                "data": {
                    "type": "browsers",
                    "id": "17"
                }
            }
        }
    }
}

Historical Versions

A historical_versions resource represents the state of a version at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The versions representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • version (one) - Associated version, can not be changed

Here is a sample historical_version:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_versions/49"
    },
    "data": {
        "type": "historical_versions",
        "id": "49",
        "attributes": {
            "date": "2016-01-14T07:52:04.749000Z",
            "event": "created",
            "archive_data": {
                "type": "versions",
                "id": "49",
                "attributes": {
                    "version": "19.0",
                    "release_day": "2013-02-19",
                    "retirement_day": "2013-04-02",
                    "status": "retired",
                    "release_notes_uri": {
                        "en": "https://developer.mozilla.org/en/Firefox/Releases/19",
                        "de": "https://developer.mozilla.org/de/Firefox/Releases/19",
                        "es": "https://developer.mozilla.org/es/docs/Firefox_19_para_desarrolladores",
                        "fr": "https://developer.mozilla.org/fr/Firefox/Versions/19",
                        "ja": "https://developer.mozilla.org/ja/Firefox/Releases/19",
                        "ko": "https://developer.mozilla.org/ko/Firefox/Releases/19",
                        "pl": "https://developer.mozilla.org/pl/Firefox/Releases/19",
                        "pt-PT": "https://developer.mozilla.org/pt-PT/Firefox/Releases/19",
                        "ru": "https://developer.mozilla.org/ru/Firefox/Releases/19",
                        "zh-CN": "https://developer.mozilla.org/zh-CN/Firefox/Releases/19",
                        "zh-TW": "https://developer.mozilla.org/zh-TW/Firefox/Releases/19"
                    },
                    "note": {
                        "en": "Released to beta channel on January 10, 2013"
                    },
                    "order": 6
                },
                "relationships": {
                    "browser": {
                        "data": {
                            "type": "browsers",
                            "id": "7"
                        }
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_versions",
                            "id": "49"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/versions/49"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_versions/49/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_versions/49/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "13"
                }
            },
            "version": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_versions/49/relationships/version",
                    "related": "https://browsercompat.org/api/v2/historical_versions/49/version"
                },
                "data": {
                    "type": "versions",
                    "id": "49"
                }
            }
        }
    }
}

Historical Features

A historical_features resource represents the state of a feature at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The features representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • feature (one) - Associated feature, can not be changed

Here is a sample historical_feature:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_features/19"
    },
    "data": {
        "type": "historical_features",
        "id": "19",
        "attributes": {
            "date": "2016-01-14T08:02:33.132000Z",
            "event": "created",
            "archive_data": {
                "type": "features",
                "id": "17",
                "attributes": {
                    "slug": "web-html-element",
                    "mdn_uri": null,
                    "experimental": false,
                    "standardized": true,
                    "stable": true,
                    "obsolete": false,
                    "name": {
                        "en": "Element"
                    }
                },
                "relationships": {
                    "parent": {
                        "data": {
                            "type": "features",
                            "id": "16"
                        }
                    },
                    "children": {
                        "data": []
                    },
                    "references": {
                        "data": []
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_features",
                            "id": "19"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/features/17"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_features/19/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_features/19/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "27"
                }
            },
            "feature": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_features/19/relationships/feature",
                    "related": "https://browsercompat.org/api/v2/historical_features/19/feature"
                },
                "data": {
                    "type": "features",
                    "id": "17"
                }
            }
        }
    }
}

Historical Supports

A historical_supports resource represents the state of a support at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The supports representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • support (one) - Associated support, can not be changed

Here is a sample historical_support:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_supports/28"
    },
    "data": {
        "type": "historical_supports",
        "id": "28",
        "attributes": {
            "date": "2016-01-14T08:08:03.582000Z",
            "event": "created",
            "archive_data": {
                "type": "supports",
                "id": "28",
                "attributes": {
                    "support": "partial",
                    "prefix": "-o",
                    "prefix_mandatory": true,
                    "alternate_name": "float",
                    "alternate_mandatory": true,
                    "requires_config": "future=true",
                    "default_config": "future=false",
                    "protected": true,
                    "note": {
                        "en": "This is fake."
                    }
                },
                "relationships": {
                    "version": {
                        "data": {
                            "type": "versions",
                            "id": "37"
                        }
                    },
                    "feature": {
                        "data": {
                            "type": "features",
                            "id": "6"
                        }
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_supports",
                            "id": "28"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/supports/28"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_supports/28/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_supports/28/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "36"
                }
            },
            "support": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_supports/28/relationships/support",
                    "related": "https://browsercompat.org/api/v2/historical_supports/28/support"
                },
                "data": {
                    "type": "supports",
                    "id": "28"
                }
            }
        }
    }
}

Historical Specifications

A historical_specifications resource represents the state of a specification at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The specifications representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • specification (one) - Associated specification, can not be changed

Here is a sample historical_specification:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_specifications/7"
    },
    "data": {
        "type": "historical_specifications",
        "id": "7",
        "attributes": {
            "date": "2016-01-14T08:07:26.056000Z",
            "event": "created",
            "archive_data": {
                "type": "specifications",
                "id": "7",
                "attributes": {
                    "slug": "css3-ruby",
                    "mdn_key": "CSS3 Ruby",
                    "name": {
                        "en": "CSS Ruby Layout Module Level 1"
                    },
                    "uri": {
                        "en": "http://dev.w3.org/csswg/css-ruby/"
                    }
                },
                "relationships": {
                    "maturity": {
                        "data": {
                            "type": "maturities",
                            "id": "2"
                        }
                    },
                    "sections": {
                        "data": []
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_specifications",
                            "id": "7"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/specifications/7"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_specifications/7/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_specifications/7/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "40"
                }
            },
            "specification": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_specifications/7/relationships/specification",
                    "related": "https://browsercompat.org/api/v2/historical_specifications/7/specification"
                },
                "data": {
                    "type": "specifications",
                    "id": "7"
                }
            }
        }
    }
}

Historical Sections

A historical_sections resource represents the state of a section at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The sections representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • section (one) - Associated section, can not be changed

Here is a sample historical_section:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_sections/8"
    },
    "data": {
        "type": "historical_sections",
        "id": "8",
        "attributes": {
            "date": "2016-01-14T08:05:47.948000Z",
            "event": "created",
            "archive_data": {
                "type": "sections",
                "id": "8",
                "attributes": {
                    "number": {
                        "en": "2.1"
                    },
                    "name": {
                        "en": "Ruby-specific 'display' Values"
                    },
                    "subpath": {
                        "en": "#ruby-display"
                    }
                },
                "relationships": {
                    "specification": {
                        "data": {
                            "type": "specifications",
                            "id": "5"
                        }
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_sections",
                            "id": "8"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/sections/8"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_sections/8/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_sections/8/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "46"
                }
            },
            "section": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_sections/8/relationships/section",
                    "related": "https://browsercompat.org/api/v2/historical_sections/8/section"
                },
                "data": {
                    "type": "sections",
                    "id": "8"
                }
            }
        }
    }
}

Historical References

A historical_references resource represents the state of a reference at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The references representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • reference (one) - Associated reference, can not be changed

Here is a sample historical_reference:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_references/5"
    },
    "data": {
        "type": "historical_references",
        "id": "5",
        "attributes": {
            "date": "2016-02-23T10:41:02.217000Z",
            "event": "created",
            "archive_data": {
                "type": "references",
                "id": "5",
                "attributes": {
                    "note": null
                },
                "relationships": {
                    "feature": {
                        "data": {
                            "type": "features",
                            "id": "18"
                        }
                    },
                    "section": {
                        "data": {
                            "type": "sections",
                            "id": "6"
                        }
                    },
                    "history_current": {
                        "data": {
                            "type": "historical_references",
                            "id": "5"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/references/5"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_references/5/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_references/5/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "29"
                }
            },
            "reference": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_references/5/relationships/reference",
                    "related": "https://browsercompat.org/api/v2/historical_references/5/reference"
                },
                "data": {
                    "type": "references",
                    "id": "5"
                }
            }
        }
    }
}

Historical Maturities

A historical_maturities resource represents the state of a maturity at a point in time, and who is responsible for that representation. The representation includes:

  • attributes
    • id (server selected) - Database ID
    • date (server selected) - The time of this change in ISO 8601
    • event (server selected) - The type of event, one of "created", "changed", or "deleted"
    • archive_data - The maturities representation at this point in time
  • relationships
    • changeset (one) - Associated changeset, can not be changed.
    • maturity (one) - Associated maturity, can not be changed

Here is a sample historical_maturity:

{
    "links": {
        "self": "https://browsercompat.org/api/v2/historical_maturities/10"
    },
    "data": {
        "type": "historical_maturities",
        "id": "10",
        "attributes": {
            "date": "2016-01-14T08:04:58.382000Z",
            "event": "created",
            "archive_data": {
                "type": "maturities",
                "id": "10",
                "attributes": {
                    "slug": "Idea",
                    "name": {
                        "en": "Idea"
                    }
                },
                "relationships": {
                    "history_current": {
                        "data": {
                            "type": "historical_maturities",
                            "id": "10"
                        }
                    }
                },
                "links": {
                    "self": "https://browsercompat.org/api/v2/maturities/10"
                }
            }
        },
        "relationships": {
            "changeset": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_maturities/10/relationships/changeset",
                    "related": "https://browsercompat.org/api/v2/historical_maturities/10/changeset"
                },
                "data": {
                    "type": "changesets",
                    "id": "51"
                }
            },
            "maturity": {
                "links": {
                    "self": "https://browsercompat.org/api/v2/historical_maturities/10/relationships/maturity",
                    "related": "https://browsercompat.org/api/v2/historical_maturities/10/maturity"
                },
                "data": {
                    "type": "maturities",
                    "id": "10"
                }
            }
        }
    }
}