LinuxPhoneApps XML Namespace

Introduction

The LinuxPhoneApps XML namespace (xmlns:linuxphoneapps="https://linuxphoneapps.org/ns/1.0") extends standard Atom feeds with app-specific metadata. This allows our feeds to contain all the rich metadata associated with app listings while remaining compatible with standard feed readers.

This namespace is primarily used to support the JSON API endpoints and to provide machine-readable access to our app directory data.

Usage in Atom Feeds

To use the LinuxPhoneApps namespace in an Atom feed, add this declaration to the feed's root element:

<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:linuxphoneapps="https://linuxphoneapps.org/ns/1.0"
      xml:lang="en">

Namespace Elements

The following elements are defined in the linuxphoneapps namespace. All elements should be prefixed with linuxphoneapps: when used in an Atom feed.

App Identification

ElementTypeDescription
app_idstringThe application's unique identifier (e.g., org.gnome.GHex)
feed_entry_idstringThe stable ID used in feeds (typically a URL)
ElementTypeDescription
repositorystringURL of the app's source code repository
homepagestringURL of the app's homepage
bugtrackerstringURL of the app's bug tracker
donationsstringURL for donating to the app's development
translationsstringURL for contributing translations
appstream_xml_urlstringURL to the app's AppStream metadata file

Media

ElementTypeDescription
screenshotscontainerContainer for screenshot URLs
screenshotstringURL to a screenshot (child of screenshots)
svg_icon_urlstringURL to the app's SVG icon
non_svg_icon_urlstringURL to a non-SVG icon

Installation

ElementTypeDescription
flathubstringURL to the app's Flathub page
flatpak_linkstringURL to download a Flatpak package
flatpak_recipestringURL to the Flatpak build recipe
snapcraftstringURL to the app's Snapcraft page
snap_linkstringURL to download a Snap package
snap_recipestringURL to the Snap build recipe
appimage_x86_64_urlstringURL to download an x86_64 AppImage
appimage_aarch64_urlstringURL to download an aarch64 AppImage
repologycontainerContainer for Repology package names
repo_namestringPackage name in Repology (child of repology)

Mobile-Specific Metadata

ElementTypeDescription
all_features_touchbooleanWhether all features can be accessed via touch input
intended_for_mobilebooleanWhether the app is specifically designed for mobile devices
scale_to_fitstringValue for Phosh's scale-to-fit setting

Project Information

ElementTypeDescription
latest_repo_commitstringDate of the latest commit to the repository
repo_created_datestringDate the repository was created
reported_bystringNickname of who reported the app
updated_bystringNickname of who last updated the listing
more_informationcontainerContainer for additional information links
info_linkstringLink to additional information (child of more_information)

Taxonomies

Each taxonomy is represented as a container element with child elements for individual values:

Container ElementChild ElementDescription
mobile_compatibilitycompatibilityMobile compatibility rating
categoriescategoryApp category
project_licenseslicenseProject license (SPDX identifier)
metadata_licenseslicenseMetadata license (SPDX identifier)
frameworksframeworkFrameworks used by the app
backendsbackendBackend services used by the app
servicesserviceServices the app interacts with
packaged_inpackageDistributions the app is packaged for
freedesktop_categoriesfreedesktop_categoryFreeDesktop.org menu categories
programming_languagesprogramming_languageProgramming languages used
build_systemsbuild_systemBuild systems used
requires_internetinternet_requirementInternet connection requirements
statusproject_statusProject status (released, pre-release, etc.)
tagstagMiscellaneous tags

Example

Here's a partial example of how these elements are used in an Atom feed entry:

<entry>
  <title>Tuba</title>
  <id>https://linuxphoneapps.org/apps/dev.geopjr.tuba/</id>
  <!-- Standard Atom elements -->

  <!-- LinuxPhoneApps extensions -->
  <linuxphoneapps:app_id>dev.geopjr.Tuba</linuxphoneapps:app_id>
  <linuxphoneapps:repository>https://github.com/GeopJr/Tuba</linuxphoneapps:repository>
  <linuxphoneapps:all_features_touch>true</linuxphoneapps:all_features_touch>
  <linuxphoneapps:intended_for_mobile>true</linuxphoneapps:intended_for_mobile>

  <linuxphoneapps:mobile_compatibility>
    <linuxphoneapps:compatibility>5</linuxphoneapps:compatibility>
  </linuxphoneapps:mobile_compatibility>

  <linuxphoneapps:categories>
    <linuxphoneapps:category>social</linuxphoneapps:category>
  </linuxphoneapps:categories>

  <linuxphoneapps:project_licenses>
    <linuxphoneapps:license>GPL-3.0-only</linuxphoneapps:license>
  </linuxphoneapps:project_licenses>

  <!-- More LinuxPhoneApps extensions -->
</entry>

Using the JSON API

The LinuxPhoneApps namespace elements are converted to JSON and made available via our API endpoints. You can access the API at:

The JSON structure maps directly to the namespace elements, making it easy to use our data in your applications.

Implementing Support

If you're developing tools that work with LinuxPhoneApps data, we recommend using our JSON API rather than parsing the XML directly. The JSON API provides the same data in a more convenient format for most applications.

If you need to parse the XML feed directly, standard XML namespace tools can be used to extract the linuxphoneapps: elements.

Edit this page on Framagit