Skip to content

Repository files navigation

This application is a demonstration for the API Platform Framework. Try it online at https://demo.api-platform.com.

GitHub Actions GitHub Actions

Install

Read the official "Getting Started" guide.

$ git clone https://github.com/api-platform/demo.git
$ cd demo
$ docker compose up --wait

You can now go to https://localhost

Authentication and usage:

  • Admin: the credentials are shown on https://localhost/admin You can create a Book with https://openlibrary.org/books/OL2055137M.json as value for Book Reference
  • API:
    • endpoints without the /admin prefix are public and can be called without further step
    • endpoints with the /admin prefix require an authentication: open https://localhost/docs then check the “openid” option under “Scopes” and click on “Authorize”. If you are not yet logged in on the API then log in with the credentials, and finally click on “Close”. You can now perform authenticated requests through the API, like listing books on GET /admin/books

Using the demo from an AI client (MCP)

The API exposes a Model Context Protocol server on https://localhost/mcp: search_books and get_book are public, add_review publishes a review on behalf of the authenticated user.

With Claude Code:

$ claude mcp add --transport http --client-id api-platform-mcp demo https://localhost/mcp

Then ask Claude to list the books written by Dan Simmons, and to post a 5/5 review on Hyperion. As this tool requires an authentication, Claude Code asks you to sign in: run /mcp, select the demo server, then "Authenticate". Log in with john.doe@example.com (password Pa55w0rd) and grant the access: the review is published, and shows up live on the book page of the PWA.

With MCP Inspector: run npx @modelcontextprotocol/inspector, connect to https://localhost/mcp with the "Streamable HTTP" transport and api-platform-mcp as OAuth client ID.

Note

The Keycloak realm is only imported on its first start. If you started the project before the MCP client was added, recreate the Keycloak database: docker compose rm -sf keycloak keycloak-database && docker volume rm demo_keycloak_db_data && docker compose up --wait.

What Can I Find In This Demo?

This demo application contains several things you may be interested:

Feature Usage
Bringing your Own Model Search usage
Model Scaffolding Search usage
Plugging the Persistence System Search usage
Exposing Enums with API Platform Search usage
Validating Data Search usage
Configuring Operations Search usage
Defining Which Operation to Use to Generate the IRI Search usage
Subresources Search usage
Doctrine ORM Filters Search usage
Creating Custom Filters Search usage
Overriding Default Order Search usage
Changing the Number of Items per Page Client-side For a Specific Resource Search usage
Advanced serialization Search usage
User Support Search usage
Custom Doctrine ORM Extension Search usage
Custom State Processor Search usage
Creating Async APIs using the Mercure Protocol Search usage
Exposing an MCP Server Search usage
Advanced Authentication and Authorization Rules Search usage
API Testing Search usage
The Admin Search usage
A Next.js Web App Search usage
Deploying to a Kubernetes Cluster Search usage

Note: this demo application implements OpenID Connect Specification Support (using Keycloak). See usage in API and usage in PWA.

Contributing

Read the contributing guide

Credits

Created by Kévin Dunglas. Commercial support available at Les-Tilleuls.coop.

About

Demo app for the API Platform framework

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

317 stars

Watchers

28 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages