# Radio4000 API This is the [radio4000-api](https://github.com/radio4000/api). ## Endpoints A list of all endpoints exposed by the API. The base URL is https://api.radio4000.com/. As of April 2024 we introduced v2: https://api.radio4000.com/v2. ### /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](https://github.com/internet4000/radio4000-player) Example usage of the embed player: ```html <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](http://oembed.com/) 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: ```html <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](https://nextjs.org/). 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](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).