Fusio

Use-Cases

Fusio is a tool which can be used for many different use cases. The following page should give you an overview and help to dive into a specific use case.

SPA-Backend

You can use Fusio as backend to build SPAs using popular Javascript-Frameworks like i.e. Angular, React or Vue. Fusio helps to simply create an authentication process and to create the fitting endpoints to obtain and send data for your app. It can be seen as an self-hosted alternative solution to services like Firebase.

Authentication

The following endpoints are needed if your want to build an authentication process.

  • /consumer/login

    Basic endpoint to obtain an access token, which then can be used to invoke protected API endpoints. Alternatively you can also use the /authorization/token endpoint for an OAuth2 compatible endpoint.

  • /consumer/register

    Through this endpoint it is possible to register a new user. If you want to use a recaptcha to protect the signup you need to enter the credentials RECAPTCHA_KEY and RECAPTCHA_SECRET at the .env file. The process sends a registration email to the user. This email can be customized at resources/config.yaml file. The user then needs to activate his account by visiting the activation link and the app needs to invoke the activate endpoint.

  • /consumer/password_reset

    Can be called via POST to initiate a password reset process. This sends an email to the provided email containing a link to reset the password. The app then need to send a PUT request to this endpoint containing the token from the link and the new password. This email can be customized at resources/config.yaml file.

  • /consumer/activate

    This endpoint needs to be called by your app to activate a new registered account. The registration mail contains a link to your app which then needs to call this endpoint containing the token which was provided at the url.

  • /consumer/authorize

    If you want to build an OAuth2 an "Authorization Code" flow into your app you can use this endpoint. Basically you need to provide the client_id and scope as query parameter to the endpoint and you get information about the app which wants to access data on behalf of the user. If the user wants to grant access you need to send a POST request containing basically all OAuth2 relevant information from the url i.e. response_type, client_id, scope, etc. Fusio then checks all values with the registered app and returns an redirectUri which your frontend can use to redirect the user back to the app.

Provider

Fusio helps you to automatically create a REST API based on a relational table. This simplify building simple CRUD apps. Therefore you can use a provider s.

In the background a provider creates the fitting routes and assigns the actions.

SDK

If you want to use the internal API of Fusio, i.e. to automatically create apps or routes from your application you can use our official Javascript SDK.

API-Gateway

You can use Fusio as API-Gateway. In this case Fusio acts as the single entrypoint for all your internal APIs / microservices. Through this you can create all fitting routes which proxy to your internal endpoints.

Fusio then covers topics like authorization, rate limiting, validation etc. Besides this Fusio provides also a documentation app which provides a great documentation for all your users.

API-Product

The initial use case of Fusio was to create a great API beside an existing web app. We have many users which run a traditional web app and they use Fusio to create a state of the art API beside there existing product. Fusio can create an API directly on your tables and there are also multiple ways to integrate your existing business logic into the API. Fusio provides also a developer app which helps to on board new users to use your API i.e.

API-Framework

You can use Fusio also simply as framework to build an API from scratch. In this case you can develop custom actions and use the deploy mechanism. Please take a look at our sample headless CMS which shows how to build and structure a complex app using Fusio.