Drupal is a registered trademark of Dries Buytaert
Views Bootstrap 5.5.2 Minor update available for module views_bootstrap (5.5.2). oEmbed Providers 3.0.0 Major update available for module oembed_providers (3.0.0). Emulsify Tools 2.2.0 Minor update available for module emulsify_tools (2.2.0). amazee.ai Private AI Provider 1.3.4 Minor update available for module ai_provider_amazeeio (1.3.4). highlight.js Input Filter 2.0.0 Major update available for module highlightjs_input_filter (2.0.0). Webform QR Code Element 1.4.0 Minor update available for module webform_qr_code_element (1.4.0). Comments Order 4.0.0 Major update available for module comments_order (4.0.0). oEmbed Providers 2.2.4 Module oembed_providers updated after 7 months of inactivity (2.2.4). CRM - Contact Relationship Management 1.0.0-beta11 New beta version released for module crm (1.0.0-beta11). Project Browser API Browser Module api_browser now has official Drupal security advisory coverage.

The Project Browser API Browser module lets you build Project Browser sources from external APIs, so that content administrators can browse a curated list of projects without leaving the site.

Describe an API once — where it lists projects, where it describes a single project, and how its response maps onto the fields Project Browser expects — and it becomes a tab in Project Browser alongside the sources that ship with core.

Requirements

  • Drupal 11.2 or later, including Drupal 12
  • Project Browser 2.1 or later
  • PHP 8.3 or later

The Key module is optional, but recommended for any service that authenticates, so that secrets stay out of exported configuration.

Drupal 10 is not supported by the 2.x branch. Project Browser 2.1 dropped Drupal 10, and the source plugin API this module implements only exists in Project Browser 2.x. Sites on Drupal 10 should stay on the 1.0.x branch.

Features

  • Any JSON API. A listing endpoint supplies the projects, and an optional per-project endpoint fills in the detail.
  • Twig field mapping. Each Project Browser field is a small Twig template rendered against the API response, so the data can be reshaped without writing PHP.
  • Authentication. API key, bearer token, basic auth, or OAuth 2.0 client credentials. With the Key module installed, only the key's name is stored in configuration.
  • Pagination. Endpoints that page by number, and endpoints that page by cursor.
  • Filtering. Drop projects you do not want to expose, either before the project endpoint is requested or afterwards using the full data.
  • Built for large listings. Requests are sent concurrently, rate limited responses are retried with a backoff, and results are cached.
  • Diagnosis. Test either endpoint from the service form and see exactly what came back, or log every request a live service makes.

How it works

The module provides a configuration entity called a Service. Each Service becomes a Project Browser source plugin, and each source you enable in Project Browser appears as its own tab.

For example, listing Drupal recipes published on packagist.org:

id: packagist_recipes
name: 'Packagist Drupal Recipes'
listing:
  endpoint: 'https://packagist.org/packages/list.json'
  method: GET
  auth: no_auth
  path: packages
  pagination:
    style: page
    page: ''
    per_page: ''
search:
  -
    parameter: type
    value: drupal-recipe
project:
  endpoint: 'https://packagist.org/packages/{{item_key}}.json'
  method: GET
  auth: no_auth
  path: package
field_mapping:
  type: recipe
  package_name: '{{ name }}'
  machine_name: '{{ name }}'
  title: '{{ name | split("/")[1] }}'
  short_description: '{{ description }}'
  compatible: '1'
  maintained: '{{ abandoned ? 0 : 1 }}'
  project_usage_total: '{{ downloads.total }}'

Six example services are installed with the module, all pointing at packagist.org, so there is something working to look at and to copy from.

Getting started

  1. Install the module. Six example services are created for you.
  2. Visit Configuration › Development › Project Browser › API Browser Services to review them. Use Duplicate on one that is close to what you need, rather than starting from an empty form.
  3. Use Test Listing Endpoint and Test Project Endpoint on the service form to check the requests and the field mapping.
  4. Enable the services you want on Project Browser's own settings page. Each enabled service becomes a tab under Extend.

Services are not enabled automatically: installing the module adds no tabs until you choose which sources to turn on.

Notes

Project Browser recognises two project types, module and recipe. Projects of any other type are left out of the listing and reported in the log, so map type to one of those two or filter those projects out.

Cached results are rebuilt when a service is saved, and can be discarded at any time with the Refresh operation on the services listing.

Recommended modules/libraries

  • Key
    • Stores API credentials outside configuration, so that secrets are not written to configuration exports.

Similar projects

  • Project Browser Source Example
    • A submodule of Project Browser that provides an example browser.
  • Project Browser Drupal Packagist
    • Uses packages.drupal.org as the source of information to bring Drupal modules into Project Browser. Helped us understand the power of extending Project Browser!
  • Project Browser Gitlab
    • Integrates Project Browser with Gitlab in order to browse (and install in the future) projects from a Gitlab instance.

Activity

Total releases
1
First release
Aug 2026
Latest release
2 hours ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Active

Releases

Version Type Release date
2.0.0-beta1 Pre-release Aug 2, 2026