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
Element | Type | Description |
---|---|---|
app_id | string | The application's unique identifier (e.g., org.gnome.GHex ) |
feed_entry_id | string | The stable ID used in feeds (typically a URL) |
Source Links
Element | Type | Description |
---|---|---|
repository | string | URL of the app's source code repository |
homepage | string | URL of the app's homepage |
bugtracker | string | URL of the app's bug tracker |
donations | string | URL for donating to the app's development |
translations | string | URL for contributing translations |
appstream_xml_url | string | URL to the app's AppStream metadata file |
Media
Element | Type | Description |
---|---|---|
screenshots | container | Container for screenshot URLs |
screenshot | string | URL to a screenshot (child of screenshots ) |
svg_icon_url | string | URL to the app's SVG icon |
non_svg_icon_url | string | URL to a non-SVG icon |
Installation
Element | Type | Description |
---|---|---|
flathub | string | URL to the app's Flathub page |
flatpak_link | string | URL to download a Flatpak package |
flatpak_recipe | string | URL to the Flatpak build recipe |
snapcraft | string | URL to the app's Snapcraft page |
snap_link | string | URL to download a Snap package |
snap_recipe | string | URL to the Snap build recipe |
appimage_x86_64_url | string | URL to download an x86_64 AppImage |
appimage_aarch64_url | string | URL to download an aarch64 AppImage |
repology | container | Container for Repology package names |
repo_name | string | Package name in Repology (child of repology ) |
Mobile-Specific Metadata
Element | Type | Description |
---|---|---|
all_features_touch | boolean | Whether all features can be accessed via touch input |
intended_for_mobile | boolean | Whether the app is specifically designed for mobile devices |
scale_to_fit | string | Value for Phosh's scale-to-fit setting |
Project Information
Element | Type | Description |
---|---|---|
latest_repo_commit | string | Date of the latest commit to the repository |
repo_created_date | string | Date the repository was created |
reported_by | string | Nickname of who reported the app |
updated_by | string | Nickname of who last updated the listing |
more_information | container | Container for additional information links |
info_link | string | Link to additional information (child of more_information ) |
Taxonomies
Each taxonomy is represented as a container element with child elements for individual values:
Container Element | Child Element | Description |
---|---|---|
mobile_compatibility | compatibility | Mobile compatibility rating |
categories | category | App category |
project_licenses | license | Project license (SPDX identifier) |
metadata_licenses | license | Metadata license (SPDX identifier) |
frameworks | framework | Frameworks used by the app |
backends | backend | Backend services used by the app |
services | service | Services the app interacts with |
packaged_in | package | Distributions the app is packaged for |
freedesktop_categories | freedesktop_category | FreeDesktop.org menu categories |
programming_languages | programming_language | Programming languages used |
build_systems | build_system | Build systems used |
requires_internet | internet_requirement | Internet connection requirements |
status | project_status | Project status (released, pre-release, etc.) |
tags | tag | Miscellaneous 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.