Skip to content

radio4000/api

Repository files navigation

Radio4000 API

This is the radio4000-api.

Endpoints

A list of all endpoints exposed by the API. Ex: https://api.radio4000.com/api to access the root API URL.

/api [GET]

Query parameters [optional] :

  • channelSlug={channel-slug}
  • channelId={channel-id}
  • trackId={track-id}

The root API endpoint, to learn about the API. It can be prefilled with channel/track data.

/api/embed [GET]

Query parameter:

  • slug={channel-slug}

An HTML embed with the radio4000-player

Example usage of the embed player:

<iframe src="https://api.radio4000.com/embed?slug=oskar" width="320" height="500" frameborder="0"></iframe>

/api/oembed [GET]

Query parameter:

  • slug={channel-slug}

A JSON object following the oEmbed spec for a Radio4000 channel. With this, we can add a meta tag to each channel to get rich previews when the link is shared.

Example usage the oembed data:

<link rel="alternate" type="application/json+oembed" href="https://api.radio4000.com/oembed?slug=oskar" title="oskar">

/api/backup [GET]

Query parameter:

  • slug={channel-slug}

Provides a full JSON export of a channel data.

/api/import/firebase-realtime [POST] [authenticated]

Query parameter:

  • tokenFirebase={firebase-user-access-token}
  • tokenSupabase={supabase-user-access-token}

Imports a Firebase user data to a Supabase instance.

/api/youtube [GET]

Query parameter:

  • id={youtube video id}

Returns various info from the YouTube API about a video

/api/v2/backup [GET]

Query parameter:

  • slug={channel-slug}

Returns all the data for a single channel and all its tracks.

/api/v2/embed [GET]

Query parameter:

  • slug={channel-slug}

An HTML embed with the radio4000/components.

Test the API endpoints

To test querying data from the endpoints, you can use:

curl http://api.radio4000.com/api
curl http://api.radio4000.com/api -i
curl -X GET http://api.radio4000.com/api/embed?slug=oskar
curl -X POST http://api.radio4000.com/api/import/firebase-realtime -d '{"tokenFirebase":"value1", "tokenSupabase":"value2"}' -H "Content-Type: application/json" -i

Development & contributions

This project uses the framework Next.js.

  1. Clone the git(hub) repository for this project
  2. Run a local dev server with the api npm run dev
  3. Open http://localhost:3000 with your browser to see the result of your changes

Environment variables configuratoin

The project requires access to a Supabase project (and Firebase realtime database for legacy or migration, as well as Youtube for automatic info fetching).

To get the needed keys for local development, you can either:

  • [all] copy and fill the .env.local.example file into a .env.local file
  • [team] run vercel env pull .env.local.

Docs: https://vercel.com/docs/concepts/projects/environment-variables

Deployment to production

The main branch auto-deploys to https://api.radio4000.com via the internet4000 team on Vercel.

Notes

[Legacy] Firebase & Cloudinary

See https://github.com/internet4000/radio4000-firebase-rules for more details on the models, rules and data accessible with Google Firebase (realtime database) and Cloudinary (images CDN).