<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.4.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-filmroellchen-lunar-well-known-button-00" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Well Known Button.json">The Well Known Button Information Specification</title>

    <author initials="" surname="klfr" fullname="kleines Filmröllchen">
      <organization></organization>
      <address>
        <postal>
          <country>DE</country>
        </postal>
        <email>kleines+ietf@filmroellchen.eu</email>
        <uri>https://filmroellchen.eu</uri>
      </address>
    </author>
    <author initials="" surname="LunarEclipse" fullname="Lunar Eclipse">
      <organization></organization>
      <address>
        <postal>
          <country>PL</country>
        </postal>
        <email>luna@lunareclipse.zone</email>
        <uri>https://lunareclipse.zone</uri>
      </address>
    </author>

    <date year="2026" month="March" day="29"/>

    
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>HTTP</keyword> <keyword>.well-known</keyword> <keyword>Image</keyword>

    <abstract>


<?line 168?>

<t>This document specifies the well-known URI <spanx style="verb">/.well-known/button.json</spanx>,
which describes a web site's "buttons". Buttons are usually 88x31 pixel
images representing the web site with text, logos, artwork, and
animations.</t>

<t><spanx style="verb">/.well-known/button.json</spanx> files facilitate sharing buttons between web
site owners and alleviate issues commonly encountered when doing so. By
utilizing a standardized, machine-readable format, automated tools can
also utilize the provided information.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-filmroellchen-lunar-well-known-button/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/LunarEclipse/well-known-button"/>.</t>
    </note>


  </front>

  <middle>


<?line 180?>

<section anchor="introduction"><name>Introduction</name>

<t>"Buttons", in the context of this specification, refer to a certain type
of common image on the Web. Buttons are graphics, usually 88 pixels wide
and 31 pixels high, featuring text, logos, artwork, as well as
animations. The purpose of a button is to represent the web site or its
owner(s)/author(s), often using minimal information to do so, owing to
the low resolution available. For this representational purpose, buttons
are usually intended to be included on other web sites, most commonly in
a footer or other dedicated section. This way, web site owners may show
their affiliation with, or appreciation of other's web sites.</t>

<t>Buttons originate from the early days of the Web as a form of banners,
originally representing the site or technology used to host a particular
home page. The 88x31 format, also named "Micro Button", originated with
the free hosting provider GeoCities.com and their mandatory advertising
banner. For a detailed historical account, see <xref target="Tekeye"></xref>. Buttons have
seen a renewed surge in popularity in the 2020s with certain
subcultures.</t>

<t>The goal of this specification is to provide a clearly defined standard
for web site authors who wish to share web site buttons with other web
site authors and end users, and lay out a format for a common endpoint
that can be used to fetch and/or embed the buttons. To this end, this
specification introduces a new well-known <xref target="RFC8615"></xref> URI utilizing a
standard JSON format to specify one or more buttons.</t>

<t>The intended use cases are:</t>

<t><list style="symbols">
  <t>to share buttons in a standardized way</t>
  <t>to avoid issues with crediting the original button author(s)</t>
  <t>to avoid issues with button authors' consent to including buttons on
other pages</t>
  <t>to facilitate automation around inclusion of buttons, including but
not limited to:
  <list style="symbols">
      <t>button updates with caching</t>
      <t>helping web site owners discover available buttons</t>
      <t>auto-selecting the most suitable button variant for theming and
accessibility</t>
    </list></t>
</list></t>

<t>The specification aims to be easy to implement for web sites using
shared hosting providers, which are unable to change HTTP response
headers and cannot host extension-less files.</t>

<t>Accessibility is a primary concern of this specification. Images and
fast animations are notoriously inaccessible to users with vision
impairment, light-sensitivity, and other disabilities. This
specification attempts to combat that by requiring image descriptions,
and providing a standard mechanism for selecting between multiple
versions of a button for accessibility purposes.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="definitions"><name>Definitions</name>

<t>A server is any web server providing a <spanx style="verb">/.well-known/button.json</spanx> file.</t>

<t>A client is any program accessing the <spanx style="verb">/.well-known/button.json</spanx> of a
server. Clients include other webservers, automated programs, as well as
programs manually invoked on behalf of a user.</t>

<t>An animated image (as opposed to a static image) is an image which has
multiple frames of nonzero and non-infinite length, where at least one
of the frames is visually distinct from the others. Examples:</t>

<t><list style="symbols">
  <t>A GIF image with three frames, all containing different text in front
of the same background, is animated.</t>
  <t>A WEBP image with two very distinct frames is animated.</t>
  <t>An AVIF image with several hundred frames and over two minutes in
runtime, featuring a "gloss" effect that very slowly moves across the
image, is animated.</t>
  <t>A GIF image abusing a frame time of zero to show more than 256 colors
at once is animated, as almost every modern program restricts the
frame time to a minimum of 10ms.</t>
  <t>An AVIF image with five frames, all of which are identical, is not
animated.</t>
  <t>A GIF image with ten frames, all of which only contain imperceptible
color differences in a few pixels, is not animated.</t>
  <t>An APNG image with two thousand identical frames is not animated.</t>
  <t>A GIF image with a single frame is not animated.</t>
</list></t>

</section>
</section>
<section anchor="buttonjson-files"><name>button.json Files</name>

<t>The main element of this specification is the <spanx style="verb">/.well-known/button.json</spanx>
file. This is a well-known <xref target="RFC8615"></xref> URI registered with IANA; see
<xref target="IANA"/>.</t>

<t>A server supporting this specification <bcp14>MUST</bcp14> serve a conforming file on
the top-level path <spanx style="verb">/.well-known/button.json</spanx>. The file <bcp14>SHOULD</bcp14> be
available via HTTPS <xref target="RFC9110"></xref>, and <bcp14>MAY</bcp14> be served via HTTP. The file
<bcp14>SHOULD</bcp14> be served using the <spanx style="verb">Content-Type</spanx> header set to
<spanx style="verb">application/json; charset=utf-8</spanx>. The file <bcp14>MUST</bcp14> be valid JSON
<xref target="RFC8259"></xref>, and <bcp14>MUST</bcp14> be encoded using UTF-8 <xref target="RFC3629"></xref>. HTTP caching
headers and content encoding <bcp14>MAY</bcp14> be used.</t>

<t>A normative description for requirements of various
<spanx style="verb">/.well-known/button.json</spanx> entries follows. A normative JSON Schema
<xref target="JSON-Schema"/> which defines the basic syntax rules is provided in
<xref target="button-json-schema"/>. and can be used to validate
<spanx style="verb">/.well-known/button.json</spanx> files. Not all files conforming to the schema
are necessarily correct implementations of this specifications.</t>

<t>The top-level <spanx style="verb">$schema</spanx> property <bcp14>MUST</bcp14> be present and link to the
canonical location of the schema version used by the document. The
server <bcp14>MAY</bcp14> provide a <spanx style="verb">/.well-known/button.schema.json</spanx> file containing a
copy of the used schema.</t>

<t>The <spanx style="verb">$schema</spanx> value for this RFC is
<spanx style="verb">https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-00.schema.json</spanx>.</t>

<t>Note to the RFC editor: During draft stage, the <spanx style="verb">$schema</spanx> value is
<spanx style="verb">https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-XX.schema.json</spanx>,
where <spanx style="verb">XX</spanx> is the draft version. After publication, the <spanx style="verb">$schema</spanx>
property should be changed to
<spanx style="verb">https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/rfcXXXX.schema.json</spanx>,
where XXXX is the RFC number of this specification. This change must
also apply to all examples and the JSON Schema below.</t>

<t>The top-level <spanx style="verb">buttons</spanx> property <bcp14>MUST</bcp14> be present and contain a list of
objects, each of which specifies a single button.</t>

<t>The top-level <spanx style="verb">default</spanx> property is <bcp14>OPTIONAL</bcp14> and specifies which button
is considered the default one when multiple are present. It <bcp14>MUST</bcp14> contain
an id matching that of one of the buttons present in the file.</t>

<section anchor="button-objects"><name>Button Objects</name>

<t>The button objects are the objects in the <spanx style="verb">buttons</spanx> list. Each one
specifies an independent single button. The validity of button objects
<bcp14>SHOULD</bcp14> be determined independently by clients; one invalid button object
provided by the server does not affect the validity of another button
object in the same file.</t>

<section anchor="required-properties"><name>Required Properties</name>

<t>Clients <bcp14>MUST</bcp14> reject button objects which do not provide all of the <spanx style="verb">id</spanx>,
<spanx style="verb">uri</spanx>, and <spanx style="verb">alt</spanx> properties.</t>

<section anchor="id"><name><spanx style="verb">id</spanx></name>

<t>The <spanx style="verb">id</spanx> property serves to identify the button uniquely across
revisions. This property is <bcp14>REQUIRED</bcp14>.</t>

<t>Revisions of the same button <bcp14>MUST</bcp14> share the same <spanx style="verb">id</spanx> property, and
consequently <bcp14>MUST NOT</bcp14> appear in the same <spanx style="verb">button.json</spanx> file. Multiple
different buttons <bcp14>MUST NOT</bcp14> have the same <spanx style="verb">id</spanx> value.</t>

<t>The server chooses the <spanx style="verb">id</spanx> property arbitrarily. Clients <bcp14>MUST NOT</bcp14> make
any assumptions about the content of the <spanx style="verb">id</spanx> property, and <bcp14>MUST</bcp14> treat
it as an arbitrary <xref target="Unicode"/> string. Clients <bcp14>SHALL NOT</bcp14> assume IDs are
unique across web sites.</t>

</section>
<section anchor="uri"><name><spanx style="verb">uri</spanx></name>

<t>The <spanx style="verb">uri</spanx> property is the canonical location of the button, from which
any client can access the button's image file. This property is
<bcp14>REQUIRED</bcp14>. The <spanx style="verb">uri</spanx> property <bcp14>MUST</bcp14> contain a valid URI <xref target="RFC3986"></xref> using
the <spanx style="verb">https</spanx> protocol name, and must subsequently be accessible using the
<xref target="RFC9110">HTTPS</xref> Internet protocol.</t>

<t>Referenced image files <bcp14>SHOULD</bcp14> have a height of 31 pixels and width of 88
pixels. Images <bcp14>MAY</bcp14> be larger in size, but <bcp14>MUST</bcp14> maintain the aspect
ratio, and <bcp14>SHOULD</bcp14> be legible when scaled down to a width of 88 pixels
and height of 31 pixels.</t>

<t>Image files may be either static or animated; see
<xref target="definitions"></xref> for a detailed definition including
edge-case examples. The following image file formats are <bcp14>RECOMMENDED</bcp14> in
order of preference:</t>

<t><list style="symbols">
  <t>AVIF <xref target="AVIF"/>: animated and static images</t>
  <t>WEBP <xref target="RFC9649"/>: animated and static images</t>
  <t>PNG <xref target="PNG"/>: static images</t>
  <t>GIF <xref target="GIF"/>: animated and static images</t>
</list></t>

<t>Button images <bcp14>MUST NOT</bcp14> be lossily compressed. Of the recommended image
formats, AVIF and WEBP are capable of lossy compression and care must be
taken to avoid it.</t>

</section>
<section anchor="alt"><name><spanx style="verb">alt</spanx></name>

<t>The <spanx style="verb">alt</spanx> property <bcp14>MUST</bcp14> be provided, describing the content of the
button for vision-impaired users.</t>

</section>
</section>
<section anchor="optional-properties"><name>Optional Properties</name>

<section anchor="link"><name><spanx style="verb">link</spanx></name>

<t>Buttons displayed on a webpage <bcp14>SHOULD</bcp14> be contained in a hyperlink
element such as <spanx style="verb">&lt;a&gt;</spanx>, linking back to the button author's web page. The
<spanx style="verb">link</spanx> property facilitates this. It is an <bcp14>OPTIONAL</bcp14> property containing
a URI <xref target="RFC3986"/>. The button's surrounding hyperlink element <bcp14>MUST</bcp14> point
to the URI specified in the <spanx style="verb">link</spanx> property of the button, if available.
Otherwise, it <bcp14>SHOULD</bcp14> point to the base path from where the
<spanx style="verb">/.well-known/button.json</spanx> was fetched. For example, if a client fetches
<spanx style="verb">https://example.org/.well-known/button.json</spanx>, and one of the contained
buttons does not feature a <spanx style="verb">link</spanx> property, the client should embed this
button in a hyperlink pointing to <spanx style="verb">https://example.org/</spanx>.</t>

</section>
<section anchor="hotlink"><name><spanx style="verb">hotlink</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">hotlink</spanx> boolean flag specifies whether the button image
should be hotlinked, i.e. included directly from the source <spanx style="verb">uri</spanx>
instead of copying to and then hosting from the client's web server.
Many authors prefer their images not to be hotlinked, as it creates
additional load on the server. This is the default (false). However,
some authors prefer their images to be hotlinked for a variety of
reasons, such as serving dynamically generated buttons. These authors
can set <spanx style="verb">hotlink</spanx> to <spanx style="verb">true</spanx> for the relevant buttons, in order to
indicate to clients to hotlink the button.</t>

<t>Clients <bcp14>SHOULD NOT</bcp14> hotlink button images without the <spanx style="verb">hotlink</spanx> property
set to <spanx style="verb">true</spanx>. Servers <bcp14>MAY</bcp14> impose restrictions on clients which they
suspect to be in violation of this requirement.</t>

</section>
<section anchor="sha256"><name><spanx style="verb">sha256</spanx></name>

<t>The <spanx style="verb">sha256</spanx> property is <bcp14>OPTIONAL</bcp14>. It facilitates caching and validation
of the image file. This property <bcp14>MUST</bcp14> contain the <xref target="RFC6234">SHA256</xref>
content hash of the image file as a hexadecimal number (64 characters).
Clients <bcp14>SHOULD</bcp14> assume that a button image has not changed if the
<spanx style="verb">sha256</spanx> property has not changed since the last time the client
downloaded the button image, even if other properties have been changed,
including the <spanx style="verb">uri</spanx> property.</t>

</section>
<section anchor="caption"><name><spanx style="verb">caption</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">caption</spanx> property provides a caption or title for the
button. The contents of this property are distinct from the <spanx style="verb">alt</spanx>
property, as they are intended to be shown to every user. <bcp14>RECOMMENDED</bcp14>
methods of displaying the <spanx style="verb">caption</spanx> text include the <xref target="html-title">HTML <spanx style="verb">title</spanx>
attribute</xref>, as well as conventional figure caption text.</t>

</section>
<section anchor="imagerendering"><name><spanx style="verb">imageRendering</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">imageRendering</spanx> property provides guidance on how to
render scaled images. In several circumstances, such as rendering
buttons at increased size, or when using displays with high DPI, images
need to be scaled to more than 88x31 physical device pixels. However,
while some buttons are designed for nearest-neighbor scaling (preserving
a pixelated look), some are designed for smooth scaling (as is
commonplace for most graphics). Using this property, the author can
specify which of the two scaling methods the button is intended for.</t>

<t>In general, any of the possible <xref target="image-rendering"><spanx style="verb">image-rendering</spanx></xref>
CSS properties <bcp14>MAY</bcp14> be used. In this case, web sites <bcp14>MAY</bcp14> use the
<spanx style="verb">imageRendering</spanx> property verbatim as the CSS <spanx style="verb">image-rendering</spanx> property
for the button in this case. (See <xref target="security-image-rendering"/> for the
security implications of this approach.)</t>

<t>The following values are <bcp14>RECOMMENDED</bcp14> for use in <spanx style="verb">imageRendering</spanx>. Other
values <bcp14>SHOULD</bcp14> be interpreted as per the
<xref target="image-rendering"><spanx style="verb">image-rendering</spanx></xref> CSS specification.</t>

<t><list style="symbols">
  <t><spanx style="verb">auto</spanx>: Client decides which rendering method to use; equivalent to
omitting this property.</t>
  <t><spanx style="verb">pixelated</spanx>: Nearest neighbor scaling to an integer multiple of the
image dimensions.</t>
  <t><spanx style="verb">smooth</spanx>: Smooth scaling, such as bilinear filtering.</t>
</list></t>

<t>At time of publication, the CSS value <spanx style="verb">smooth</spanx> is not yet honored by all
major browsers. However, the default image rendering method is almost
always smooth scaling, therefore <spanx style="verb">auto</spanx> <bcp14>MAY</bcp14> be used in CSS instead.</t>

<t>If this property is not specified, clients <bcp14>MAY</bcp14> choose any rendering
method, such as one in line with a page's style. Even if this property
is specified, clients <bcp14>MAY</bcp14> choose other rendering methods for a variety
of reasons. However, client authors and users <bcp14>MUST</bcp14> be aware of the
subsequent degradation of authorial intent, since the image author might
have designed the button around a very specific rendering method.</t>

</section>
<section anchor="license"><name><spanx style="verb">license</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">license</spanx> property contains an <xref target="SPDX-license-expressions">SPDX license
expression</xref> identifying the license that
applies to the button image file and this button object describing it.
See <xref target="legal-considerations">Legal considerations</xref> for a discussion of
button licensing, including recommended license choices.</t>

</section>
<section anchor="licensetext"><name><spanx style="verb">licenseText</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">licenseText</spanx> property contains arbitrary text augmenting
the license data in the <spanx style="verb">license</spanx> property. This property should be
considered as legally binding as the <spanx style="verb">license</spanx> property. It is <bcp14>NOT
RECOMMENDED</bcp14> to specify <spanx style="verb">licenseText</spanx> without <spanx style="verb">license</spanx>; several SPDX
license expressions are available which reference nonstandard licenses,
such as <spanx style="verb">DocumentRef</spanx> and <spanx style="verb">LicenseRef</spanx>.</t>

<t><bcp14>RECOMMENDED</bcp14> use cases for <spanx style="verb">licenseText</spanx> are:</t>

<t><list style="symbols">
  <t>Adding authorship information, especially when the image author is not
the web site author</t>
  <t>Adding a copyright year</t>
  <t>Adding a completely custom license in combination with a <spanx style="verb">LicenseRef</spanx>
entry in the <spanx style="verb">license</spanx> property</t>
</list></t>

</section>
</section>
<section anchor="accessibility-properties"><name>Accessibility Properties</name>

<t>By using the <spanx style="verb">groupId</spanx> property, a group of interchangeable and
equivalent buttons can be defined. The client's specific choice of
button among these can then be tailored to the user or the application,
improving accessibility.</t>

<section anchor="groupid"><name><spanx style="verb">groupId</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">groupId</spanx> property defines a group of button versions.
Multiple buttons using the same <spanx style="verb">groupId</spanx> entry belong to one group. A
client <bcp14>SHALL</bcp14> assume those buttons are interchangeable, and they <bcp14>MAY</bcp14>
choose one of them depending on the user's requirements.</t>

<t>The server chooses the <spanx style="verb">groupId</spanx> property arbitrarily. Clients <bcp14>MUST NOT</bcp14>
make any assumptions about the content of the <spanx style="verb">id</spanx> property, and <bcp14>MUST</bcp14>
treat it as an arbitrary <xref target="Unicode"/> string. Clients <bcp14>SHALL NOT</bcp14> assume
IDs are unique across web sites.</t>

<t>The following properties, <spanx style="verb">colorScheme</spanx>, <spanx style="verb">animations</spanx>, and <spanx style="verb">contrast</spanx>,
allow providing different versions of a button to fit accessibility
and/or styling needs. They <bcp14>SHOULD</bcp14> be present if the server shares
different versions of a button with the same <spanx style="verb">groupId</spanx>. Within the same
<spanx style="verb">groupId</spanx>, multiple buttons <bcp14>SHOULD NOT</bcp14> have identical values for these
properties.</t>

<t>The following properties <bcp14>MAY</bcp14> also be provided if the <spanx style="verb">groupId</spanx> property
is absent. In this case, the properties provide accessibility guidance
without the possibility of client choice.</t>

</section>
<section anchor="colorscheme"><name><spanx style="verb">colorScheme</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">colorScheme</spanx> property specifies what color scheme the
button version uses. It is to be interpreted as per
<xref target="prefers-color-scheme"></xref> CSS media query.</t>

<t>It can take on the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">other</spanx>: the default, equivalent to not specifying this property,
clients <bcp14>SHOULD NOT</bcp14> make any assumptions about the color scheme</t>
  <t><spanx style="verb">light</spanx>: light theme, typically dark text on a light background</t>
  <t><spanx style="verb">dark</spanx>: dark theme, typically light text on a dark background</t>
</list></t>

</section>
<section anchor="animations"><name><spanx style="verb">animations</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">animations</spanx> property <bcp14>SHOULD</bcp14> be provided if the button is
animated, even if the button is not in a group. It specifies the amount
and severity of the animations present in the button. Clients <bcp14>MAY</bcp14>
consider all animated buttons without this property to have the value
<spanx style="verb">high</spanx>.</t>

<t>It can take on the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">none</spanx>: the image is not animated at all</t>
  <t><spanx style="verb">minimal</spanx>: the image contains only very subtle animations</t>
  <t><spanx style="verb">high</spanx>: the image contains animations that are permanently active,
distracting, or could trigger medical conditions such as
light-sensitive epilepsy</t>
</list></t>

<t>Authors <bcp14>SHOULD</bcp14> use the <spanx style="verb">high</spanx> value for animated buttons if there is any
doubt about the severity of the animations.</t>

</section>
<section anchor="contrast"><name><spanx style="verb">contrast</spanx></name>

<t>The <bcp14>OPTIONAL</bcp14> <spanx style="verb">contrast</spanx> property <bcp14>MUST</bcp14> have one of the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">standard</spanx>: the default, equivalent to not specifying this property.</t>
  <t><spanx style="verb">more</spanx>: a higher-contrast version of the button, whose text is
STRONGLY <bcp14>RECOMMENDED</bcp14> to follow the WCAG 2.2 AA or AAA guidelines for
color contrast in normal text <xref target="WCAG-contrast"/>, i.e. 4.5:1 or 7:1.</t>
  <t><spanx style="verb">less</spanx>: a lower-contrast version of the button, whose text color
contrast is below 3:1. This means that it does not follow the WCAG 2.2
color contrast guidelines at all, not even for large text or graphics.</t>
</list></t>

<t>If two buttons with substantially distinct color contrasts would fall
into the same contrast category according to the above definitions,
distinct contrast values <bcp14>SHOULD</bcp14> be used by applying the following rules:</t>

<t><list style="symbols">
  <t>If both buttons are at <spanx style="verb">less</spanx> contrast, the higher-contrast one <bcp14>SHOULD</bcp14>
be instead marked as <spanx style="verb">standard</spanx>.</t>
  <t>If both buttons are at <spanx style="verb">more</spanx> contrast, the lower-contrast one <bcp14>SHOULD</bcp14>
be instead marked as <spanx style="verb">standard</spanx>.</t>
  <t>If both buttons are at <spanx style="verb">standard</spanx> contrast, the lower-contrast one
<bcp14>SHOULD</bcp14> be instead marked as <spanx style="verb">less</spanx>.</t>
</list></t>

<t>Since none of these rules are strictly required, implementations <bcp14>MAY</bcp14>
deviate in order to utilize all three contrast values.</t>

</section>
</section>
</section>
</section>
<section anchor="examples"><name>Examples</name>

<t>A typical example is as follows:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-00.schema.json",
  "default": "my.web site",
  "buttons": [
    {
      "id": "my.web site",
      "uri": "https://my.web site.example.org/my.web site.png",
      "alt": "Button to my web site!",
      "link": "https://my.web site.example.org",
      "sha256": "66a421c7e726e9de99eeb88c57b93b49278d64b2a4602a6f90f7d64baee154cf",
      "hotlink": true
    }
  ]
}
]]></sourcecode></figure>

<t>A minimal example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-00.schema.json",
  "buttons": [
    {
      "id": "some button id",
      "uri": "https://example.com/res/my-button.gif",
      "alt": "button saying example.com"
    }
  ]
}
]]></sourcecode></figure>

<t>And an exhaustive example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-00.schema.json",
  "default": "8b556a30-c5d9-4117-88a5-b779a3f2f567",
  "buttons": [
    {
      "id": "8b556a30-c5d9-4117-88a5-b779a3f2f567",
      "groupId": "mainbutton",
      "uri": "https://web site.example.com/res/my-button.png",
      "alt": "button saying example.com with black text on a white background",
      "caption": "Example web site",
      "sha256": "e35a78bcb7f9b9cc0c3929d1763b96b6013071b0f9950886a20d2bcc0e943612",
      "link": "https://web site.example.com/",
      "colorScheme": "light",
      "animations": "none",
      "contrast": "more",
      "license": "CC-BY-SA-4.0",
      "licenseText": "Copyright 2024 by the Example Author",
      "imageRendering": "pixelated",
      "hotlink": false
    },
    {
      "id": "64dbf02d-44e0-4aa9-ad45-c4959eadd3db",
      "groupId": "mainbutton",
      "uri": "https://web site.example.com/res/my-button-dark.png",
      "alt": "button saying example.com with white text on a black background",
      "caption": "Example web site",
      "sha256": "4598d79c6c1877aa9121c8b0845fe4e8f031684fabb09caa10357dfe5d295986",
      "link": "https://web site.example.com/",
      "colorScheme": "dark",
      "animations": "none",
      "contrast": "more",
      "license": "CC-BY-SA-4.0",
      "licenseText": "Copyright 2024 by the Example Author",
      "imageRendering": "auto",
      "hotlink": false
    },
    {
      "id": "57ad38e5-94ad-4b64-a6bc-583f41b7c3b5",
      "groupId": "mainbutton",
      "uri": "https://web site.example.com/res/my-button-rainbow.gif",
      "alt": "button saying example.com with black text on an animated rainbow background",
      "caption": "Example web site",
      "sha256": "2fecb1bbd1fdb1f8fa634632f9726f9bce7f653fe94cde59b616f4032b70a758",
      "link": "https://web site.example.com/",
      "colorScheme": "other",
      "animations": "high",
      "contrast": "standard",
      "license": "LicenseRef-Commercial",
      "licenseText": "Copyright 2024 by the Example Author, all rights reserved. You can include this button on your page but nothing else.",
      "imageRendering": "smooth",
      "hotlink": true
    },
    {
      "id": "ee5cc4b3-b88b-4b1c-ae1f-fb9a3de063c9",
      "uri": "https://web site.example.com/res/blog-button.gif",
      "alt": "example.com blog button with some starts gently twinkling in the background",
      "caption": "Example web site",
      "sha256": "b2fe6da951362a7e3909390c5634fe4804cb845eddccad8dcea5819122f94be0",
      "link": "https://web site.example.com/blog/",
      "animations": "minimal",
      "license": "CC-BY-SA-4.0",
      "licenseText": "Copyright 2024 by the Example Author",
      "hotlink": true
    }
  ]
}
]]></sourcecode></figure>

</section>
<section anchor="implementation-considerations"><name>Implementation Considerations</name>

<t><em>This section has not yet been written, and the authors appreciate any
input for it.</em></t>

</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>IANA will register the well-known URI <spanx style="verb">/.well-known/button.json</spanx> in the
<xref target="IANA-well-known">well-known URIs registry</xref> in conformance with the
requirements for this registration in <xref target="RFC8615"></xref>. The following
information is provided to facilitate the registration:</t>

<t><list style="symbols">
  <t>URI suffix: <spanx style="verb">button.json</spanx></t>
  <t>Change controller: IETF</t>
  <t>Specification document(s): This RFC</t>
  <t>Status: permanent</t>
</list></t>

<t>In case a JSON Schema registry is set up with IANA in the future, the
<xref target="button-json-schema"><spanx style="verb">button.json</spanx> Schema</xref>, as defined in this
specification and any of its updates and errata, shall be registered by
IANA with this JSON Schema registry.</t>

</section>
<section anchor="legal-considerations"><name>Legal Considerations</name>

<t>Buttons are usually copyrightable artworks. As such, unauthorized
copying and inclusion of a button is a legal offense in most
jurisdictions. This specification does not supersede the legal
frameworks for copyright, licenses and permissions, but it attempts to
aid all involved parties in avoiding legal issues.</t>

<t>Publication of a <spanx style="verb">/.well-known/button.json</spanx> file, as per this
specification, implies a permission to download (copy) the linked-to
buttons, and include them on other pages, provided that a button's link
(as per this specification) is persisted. These are the minimal
permissions required to make the data in <spanx style="verb">/.well-known/button.json</spanx>
useful to third parties. This does not waive copyright and is not
comparable to stronger copyleft licenses. It is also not as legally
unambiguous as the license properties, so the use of these properties is
strongly <bcp14>RECOMMENDED</bcp14>.</t>

<t>The <spanx style="verb">license</spanx> and <spanx style="verb">licenseText</spanx> properties allow the button author to
provide a copyright license. In case the author is not provided in
either of those properties, it can be assumed to be the same as the
author of the web site's content, or the web site's owner.</t>

<t>It is <bcp14>RECOMMENDED</bcp14> that clients use SPDX tooling and human-in-the-loop
verification of both <spanx style="verb">license</spanx> and <spanx style="verb">licenseText</spanx> to verify that the
client's use of the button is allowed by the license.</t>

<t>The following licenses are <bcp14>RECOMMENDED</bcp14> for use in
<spanx style="verb">/.well-known/button.json</spanx>:</t>

<t><list style="symbols">
  <t>Any of the current <xref target="CC">Creative Commons licenses</xref>, including CC BY,
CC BY-SA, and CC BY-ND. The no-derivative licenses including the
latter are closest to the default permissions implied with publication
of a <spanx style="verb">/.well-known/button.json</spanx> file.</t>
  <t>A public domain license, such as <xref target="CC0"/> or <xref target="Unlicense"/>.</t>
</list></t>

<t>A full list of standard licenses tracked by SPDX is available at
<eref target="https://spdx.org/licenses/">https://spdx.org/licenses/</eref>.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>Specifying the location of a button image in <spanx style="verb">/.well-known/button.json</spanx>
exposes it to automated scrapers, including malicious ones. If a web
server operator wishes to decrease the visibility of the buttons,
<spanx style="verb">robots.txt</spanx> <xref target="RFC9309"></xref> can be used to discourage scrapers from accessing
<spanx style="verb">/.well-known/button.json</spanx>, but since some scrapers do not respect
robots.txt properly, the web server may additionally need to block
certain user agents and IP addresses from accessing
<spanx style="verb">/.well-known/button.json</spanx>.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<section anchor="security-image-rendering"><name><spanx style="verb">imageRendering</spanx> CSS Injection</name>

<t>The <spanx style="verb">imageRendering</spanx> property may be set to an arbitrary string by a
malicious web site operator. Clients which use the property without
additional checks as part of the button's CSS properties (whether in
stylesheets or inline <spanx style="verb">style</spanx> in HTML), are subsequently vulnerable to
CSS or HTML injection attacks. Therefore, clients <bcp14>MUST NOT</bcp14> use this
property without validating it, and reject any unknown values.</t>

</section>
<section anchor="denial-of-service-concerns-due-to-hotlinking"><name>Denial-of-Service Concerns Due To Hotlinking</name>

<t>Hotlinking buttons imposes an additional load on the server, as it has
to serve the button to every visitor of a client's web page, not just
its own page(s). Therefore, usage of the <spanx style="verb">"hotlink": true</spanx> setting
should be carefully evaluated, as even well-intentioned clients may
cause increased load on the server if their pages receive many views.</t>

<t>Malicious or careless clients may ignore the <spanx style="verb">hotlink</spanx> attribute and
always hotlink the button image. This scenario is no different from
ordinary HTTP Denial-of-Service attacks and should be addressed
similarly.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>
<reference anchor="RFC6234">
  <front>
    <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
    <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="May" year="2011"/>
    <abstract>
      <t>Federal Information Processing Standard, FIPS</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6234"/>
  <seriesInfo name="DOI" value="10.17487/RFC6234"/>
</reference>
<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>
<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>
<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>
<reference anchor="RFC3629">
  <front>
    <title>UTF-8, a transformation format of ISO 10646</title>
    <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
    <date month="November" year="2003"/>
    <abstract>
      <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="63"/>
  <seriesInfo name="RFC" value="3629"/>
  <seriesInfo name="DOI" value="10.17487/RFC3629"/>
</reference>

<reference anchor="JSON-Schema" target="https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-01">
  <front>
    <title>JSON Schema, Internet-Draft 01</title>
    <author initials="A." surname="Wright" fullname="Austin Wright">
      <organization></organization>
    </author>
    <author initials="H." surname="Andrews" fullname="Henry Andrews">
      <organization></organization>
    </author>
    <author initials="B." surname="Hutton" fullname="Ben Hutton">
      <organization></organization>
    </author>
    <author initials="G." surname="Dennis" fullname="Greg Dennis">
      <organization></organization>
    </author>
    <author >
      <organization>JSON Schema</organization>
    </author>
    <date year="2022" month="June" day="10"/>
  </front>
</reference>
<reference anchor="image-rendering" target="https://drafts.csswg.org/css-images/#the-image-rendering">
  <front>
    <title>CSS Images Module Level 3 Editor's Draft: 5.2: The 'image-rendering' property</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="SPDX-license-expressions" target="https://spdx.github.io/spdx-spec/v3.0.1/annexes/spdx-license-expressions/">
  <front>
    <title>SPDX Specification 3.0.1 Annex B: SPDX license expressions</title>
    <author >
      <organization>The Linux Foundation</organization>
    </author>
    <date year="2024" month="February"/>
  </front>
</reference>
<reference anchor="Unicode" target="https://www.unicode.org/versions/Unicode17.0.0/">
  <front>
    <title>The Unicode Standard, Version 17.0.0</title>
    <author >
      <organization>Unicode, Inc.</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="prefers-color-scheme" target="https://www.w3.org/TR/mediaqueries-5/#descdef-media-prefers-color-scheme">
  <front>
    <title>CSS Media Queries Level 5 Working Draft: 12.5: The 'prefers-color-scheme' feature</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="WCAG-contrast" target="https://www.w3.org/TR/WCAG22/#contrast-minimum">
  <front>
    <title>Web Content Accessibility Guidelines 2.2: 1.4.3 Contrast (Minimum)</title>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2024" month="December"/>
  </front>
</reference>
<reference anchor="IANA-well-known" target="https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml">
  <front>
    <title>Well-Known URIs Registry</title>
    <author >
      <organization>Internet Assigned Numbers Authority</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC9309">
  <front>
    <title>Robots Exclusion Protocol</title>
    <author fullname="M. Koster" initials="M." surname="Koster"/>
    <author fullname="G. Illyes" initials="G." surname="Illyes"/>
    <author fullname="H. Zeller" initials="H." surname="Zeller"/>
    <author fullname="L. Sassman" initials="L." surname="Sassman"/>
    <date month="September" year="2022"/>
    <abstract>
      <t>This document specifies and extends the "Robots Exclusion Protocol" method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers. Specifically, it adds definition language for the protocol, instructions for handling errors, and instructions for caching.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9309"/>
  <seriesInfo name="DOI" value="10.17487/RFC9309"/>
</reference>

<reference anchor="Tekeye" target="https://www.tekeye.uk/computer_history/powered-by">
  <front>
    <title>Remembering Powered By and 88×31</title>
    <author initials="D." surname="Fowler" fullname="Daniel Fowler">
      <organization></organization>
    </author>
    <date year="2012" month="March" day="27"/>
  </front>
</reference>
<reference anchor="AVIF" target="https://aomediacodec.github.io/av1-avif/v1.2.0.html">
  <front>
    <title>AV1 Image File Format (AVIF)</title>
    <author initials="Y." surname="Guyon" fullname="Yannis Guyon">
      <organization></organization>
    </author>
    <author initials="L." surname="Barnes" fullname="Leo Barnes">
      <organization></organization>
    </author>
    <author initials="W.-T." surname="Chang" fullname="Wan-Teh Chang">
      <organization></organization>
    </author>
    <author initials="C." surname="Concolato" fullname="Cyril Concolato">
      <organization></organization>
    </author>
    <author initials="P." surname="Kerr" fullname="Paul Kerr">
      <organization></organization>
    </author>
    <author initials="A." surname="Klements" fullname="Anders Klements">
      <organization></organization>
    </author>
    <author >
      <organization>Alliance for Open Media</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>


<reference anchor="RFC9649">
  <front>
    <title>WebP Image Format</title>
    <author fullname="J. Zern" initials="J." surname="Zern"/>
    <author fullname="P. Massimino" initials="P." surname="Massimino"/>
    <author fullname="J. Alakuijala" initials="J." surname="Alakuijala"/>
    <date month="November" year="2024"/>
    <abstract>
      <t>This document defines the WebP image format and registers a media type supporting its use.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9649"/>
  <seriesInfo name="DOI" value="10.17487/RFC9649"/>
</reference>

<reference anchor="PNG" target="https://www.w3.org/TR/png-3/">
  <front>
    <title>Portable Network Graphics Specification (Third Edition)</title>
    <author initials="C." surname="Blume" fullname="Chris Blume">
      <organization></organization>
    </author>
    <author initials="P.-A." surname="Lemieux" fullname="Pierre-Anthony Lemieux">
      <organization></organization>
    </author>
    <author initials="C." surname="Lilley" fullname="Chris Lilley">
      <organization></organization>
    </author>
    <author initials="C." surname="Needham" fullname="Chris Needham">
      <organization></organization>
    </author>
    <author initials="L." surname="Rosenthol" fullname="Leonard Rosenthol">
      <organization></organization>
    </author>
    <author initials="C. A." surname="Seeger" fullname="Chris Arley Seeger">
      <organization></organization>
    </author>
    <author initials="S." surname="Thompson" fullname="Simon Thompson">
      <organization></organization>
    </author>
    <author initials="C." surname="Truta" fullname="Cosmin Truta">
      <organization></organization>
    </author>
    <author >
      <organization>World Wide Web Consortium</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="GIF" target="https://www.w3.org/Graphics/GIF/spec-gif87.txt">
  <front>
    <title>Graphics Interchange Format</title>
    <author >
      <organization>CompuServe Incorporated</organization>
    </author>
    <date year="1987"/>
  </front>
</reference>
<reference anchor="html-title" target="https://html.spec.whatwg.org/multipage/dom.html#the-title-attribute">
  <front>
    <title>HTML: 3.2.6.1: The 'title' attribute</title>
    <author >
      <organization>WHATWG</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CC" target="https://creativecommons.org/share-your-work/cclicenses/">
  <front>
    <title>Creative Commons Licenses</title>
    <author >
      <organization>Creative Commons</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CC0" target="https://creativecommons.org/publicdomain/zero/1.0/">
  <front>
    <title>CC0 1.0 Universal</title>
    <author >
      <organization>Creative Commons</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="Unlicense" target="https://unlicense.org/">
  <front>
    <title>The Unlicense</title>
    <author initials="A." surname="Bendiken" fullname="Arto Bendiken">
      <organization></organization>
    </author>
    <date year="2010"/>
  </front>
</reference>


    </references>

</references>


<?line 789?>

<section anchor="button-json-schema"><name>JSON Schema for <spanx style="verb">button.json</spanx></name>

<t>The following is the JSON Schema <xref target="JSON-Schema"/> file for
<spanx style="verb">/.well-known/button.json</spanx>. This JSON Schema is <strong>normative</strong>; all
<spanx style="verb">/.well-known/button.json</spanx> implementations <bcp14>MUST</bcp14> conform to this schema.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-00.schema.json",
  "title": ".well-known 88x31 Button JSON Schema",
  "type": "object",
  "properties": {
    "$schema": {
      "title": "The URI of the schema used by this document.",
      "type": "string",
      "format": "uri"
    },
    "default": {
      "title": "The id of the button to use as the default.",
      "type": "string"
    },
    "buttons": {
      "type": "array",
      "items": {
        "title": "An 88x31 button available from the web site",
        "type": "object",
        "properties": {
          "id": {
            "title": "The ID of the button",
            "type": "string"
          },
          "uri": {
            "title": "The canonical uri of the image file",
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          "alt": {
            "title": "Alt text for the image",
            "type": "string"
          },
          "caption": {
            "title": "Image caption or title",
            "type": "string"
          },
          "link": {
            "title": "Where the image should link to if used on another web site",
            "type": "string",
            "format": "uri"
          },
          "hotlink": {
            "title": "Whether image should be hotlinked",
            "type": "boolean",
            "default": false
          },
          "sha256": {
            "title": "SHA256 hash of the current version of the image file",
            "type": "string",
            "format": "regex",
            "pattern": "^[A-Fa-f0-9]{64}$"
          },
          "license": {
            "title": "SPDX license expression specifying the license for the image file",
            "type": "string"
          },
          "licenseText": {
            "title": "Additional license information to augment the license property",
            "type": "string"
          },
          "groupId": {
            "title": "A group of interchangeable versions of a button with different accessibility properties",
            "type": "string"
          },
          "colorScheme": {
            "title": "What color scheme does this button version match",
            "type": "string",
            "enum": ["light", "dark", "other"],
            "default": "other"
          },
          "animations": {
            "title": "Whether this button version is animated, and to what degree",
            "type": "string",
            "enum": ["none", "minimal", "high"]
          },
          "contrast": {
            "title": "The contrast level of this button version",
            "type": "string",
            "enum": ["standard", "more", "less"],
            "default": "standard"
          },
          "imageRendering": {
            "title": "Image rendering algorithm",
            "description": "Which scaling algorithm to use for the image if it is not displayed at native resolution, recommended: 'smooth', 'auto' or 'pixelated'",
            "type": "string",
            "default": "auto"
          }
        },
        "required": ["id", "uri", "alt"]
      }
    }
  },
  "required": ["$schema", "buttons"]
}
]]></sourcecode></figure>

</section>
<section anchor="migrating-from-earlier-versions-of-this-specification"><name>Migrating from earlier versions of this specification</name>

<section anchor="migrating-from-draft-2024-05"><name>Migrating from draft 2024-05</name>

<t>At a basic level, this can be done easily with
<eref target="https://github.com/jqlang/jq">jq</eref>:</t>

<figure><sourcecode type="sh"><![CDATA[
jq '{ "$schema": "https://codeberg.org/LunarEclipse/well-known-button/raw/branch/main/drafts/draft-filmroellchen-lunar-well-known-button-00.schema.json", "buttons": . }' $old_filename > $new_filename
]]></sourcecode></figure>

<t>You will no longer need special logic for your web server, instead the
new path for the file is <spanx style="verb">/.well-known/button.json</spanx>.</t>

<t>You may add a copy of the schema version matching your file in
<spanx style="verb">/.well-known/button.schema.json</spanx>.</t>

<t>You might want to add a <spanx style="verb">default</spanx> property, especially if you provide
multiple buttons.</t>

<t>You should consider adding the extra accessibility properties where the
default values aren't sufficient (especially <spanx style="verb">animations</spanx>).</t>

</section>
<section anchor="migrating-from-draft-2024-06"><name>Migrating from draft 2024-06</name>

<t>The current schema is backwards-compatible with the 2024-06 one, adding
only optional properties.</t>

<t>You should consider adding the new properties where applicable,
especially <spanx style="verb">license</spanx>.</t>

</section>
</section>
<section numbered="false" anchor="Acknowledgements"><name>Acknowledgements</name>

<t>This specification would not have been possible without the many
excellent ideas from various beings, most of which are listed under
<xref target="contributors"/>. The authors thank <contact fullname="Arch Retriever"/> in particular
for the original <spanx style="verb">./well-known/button.json</spanx> idea.</t>

<!-- vim: set textwidth=72 shiftwidth=2 expandtab filetype=markdown: -->

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="A." surname="Retriever" fullname="Arch Retriever">
      <organization></organization>
      <address>
        <uri>https://arch.dog</uri>
      </address>
    </contact>
<t>Arch came up with the idea and created the original version of this specification.</t>

    <contact initials="" surname="Reina" fullname="Reina">
      <organization></organization>
      <address>
      </address>
    </contact>
<t>Reina contributed the idea of an alt text property.</t>

    <contact initials="" surname="Sugar" fullname="Sugar">
      <organization></organization>
      <address>
      </address>
    </contact>
<t>Sugar contributed ideas on how to make this specification more accessible to people using shared hosting services.</t>

    <contact initials="" surname="Seirdy" fullname="Seirdy">
      <organization></organization>
      <address>
      </address>
    </contact>
<t>Seirdy contributed the idea of multiple versions of a button with different accessibility properties.</t>

    <contact initials="S. O." surname="Xaselgio" fullname="Soblow Opale Xaselgio">
      <organization></organization>
      <address>
        <postal>
          <country>FR</country>
        </postal>
        <email>soblowdragon@gmail.com</email>
        <uri>https://xaselgio.net</uri>
      </address>
    </contact>
<t>Soblow contributed examples and correction to the 2024 second draft, as well as the hotlink attribute.</t>

    <contact initials="" surname="Natty" fullname="Natty">
      <organization></organization>
      <address>
        <uri>https://natty.sh</uri>
      </address>
    </contact>
<t>Natty contributed the idea of a caption property distinct from the alt property.</t>

    </section>

  </back>

<!-- ##markdown-source:
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
iv4vrh095lGOAAA=

-->

</rfc>

