API Documentation
Ads API Documentation
The Ads API provides endpoints to manage advertising blocks, including both public and admin-level functionalities.
2. Ads API Documentation
2.1 Overview
The Ads API provides endpoints to manage advertising blocks. The API is split into:
- Public API (no authorization required): To fetch a random active ad based on location (and format).
- Admin API (requires authorization): To create, update, and delete ads.
2.2 Public API Endpoint
Fetch a Random Active Ad
- Endpoint:
GET /api/ads
- Query Parameters:
location
(required): The ad location (e.g., sidebar, homepage).format
(optional): The banner format (e.g., square or horizontal).
Example Request:
How It Works
- The API queries the database for all active ads with the specified location (and format, if provided).
- It then randomly selects one ad from the result:
- If no ads are found, it returns a
404
error.
Example Successful Response (JSON):
Error Cases:
- If the
location
parameter is missing, returns status400
. - If no active ads are found for the specified parameters, returns status
404
.
2.3 Admin API Endpoints
All admin endpoints require authorization (e.g., via JWT).
2.3.1 Create Ad
- Endpoint:
POST /admin/ads
- Request Body (FormData):
title
: string.type
: “image” or “code”.format
: “square” or “horizontal”.location
: one of (sidebar
,homepage
,profile
,category
,blogs
).weight
: number.- If
type === "image"
:link
: URL (optional).adImage
: image file.
- If
type === "code"
:adCode
: HTML code (e.g., Google AdSense snippet).
- Response: JSON with a success message and the created ad object.
2.3.2 Get All Ads
- Endpoint:
GET /admin/ads
- Response: JSON array of ads.
2.3.3 Get Ad by ID
- Endpoint:
GET /admin/ads/:id
- Response: JSON object of the ad or a
404
error if not found.
2.3.4 Update Ad
- Endpoint:
PATCH /admin/ads/:id
- Request Body (FormData): Same fields as for creating an ad.
Special Notes:
- If a new image file is uploaded, the old image file is deleted.
- If
imageUrl
is sent as an empty string, the existing image file is deleted. - Response: JSON with a success message and the updated ad.
2.3.5 Delete Ad
- Endpoint:
DELETE /admin/ads/:id
- Response: JSON with a success message indicating deletion.
2.4 Recommendations for Using the API
Dynamic Ad Rotation
- On the client side, call the public API with the appropriate
location
(andformat
if needed). - Each request will randomly select one ad from the database.
- For more variation, ensure that there are multiple active ads for the given criteria.
Integrating “Code” Type Ads (Google AdSense)
If an ad has type: "code"
, render its HTML using dangerouslySetInnerHTML
and call:
This call should be done after the ad block is inserted into the DOM (for example, using a useEffect
hook in your React component).
Conclusion
This documentation covers:
Admin Panel:
- How to create, edit, and delete ads using the admin panel.
- Fields available for ads and how to integrate Google AdSense by entering the ad code in the
adCode
field. - How the admin panel conditionally shows the
Link
field (for Image ads) and displays the current image in edit mode.
API:
- Public API for dynamically fetching ads based on location and format.
- Admin API endpoints for creating, updating, and deleting ads.
Google AdSense Integration:
- How to add the
googleAdsenseId
to settings. - Dynamically load the AdSense script in your SEO component.
- Initialize ad blocks in your React components.
Using these guidelines and code samples, you can set up a comprehensive ad management system in your project, including the integration of Google AdSense with dynamic configuration from your settings stored in MongoDB.