> ## Documentation Index
> Fetch the complete documentation index at: https://memberpulseptyltd.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Sponsorship Management

> Create and manage sponsorship tiers and opportunities

Create sponsorship tiers, manage sponsor relationships, and track sponsorship revenue.

## Capabilities

| Action          | ROLE\_CLIENT\_ADMIN | ROLE\_CLIENT\_USER |
| --------------- | ------------------- | ------------------ |
| View sponsors   | ✅                   | ✅                  |
| Create tiers    | ✅                   | ❌                  |
| Manage sponsors | ✅                   | ❌                  |
| View revenue    | ✅                   | ✅                  |

## Features

### Sponsorship Tiers

Create **fully configurable** tiers with varying benefits (Bronze/Silver/Gold/Platinum are common examples).

Tiers typically configure:

* Tier name and pricing
* Included benefits (widgets, ads, job posts, directory placement, offers)
* Max sponsors per tier (optional)
* Start/end duration (or renewal cadence)

Example tier set:

| Tier     | Example Benefits                              |
| -------- | --------------------------------------------- |
| Platinum | All events, premium placement, full analytics |
| Gold     | Select events, standard placement             |
| Silver   | Limited events, basic placement               |
| Bronze   | Single event sponsorship                      |

#### Acceptance Criteria

##### Frontend

* [ ] UI supports the workflows described in this feature.

##### Backend / API

* [ ] Backend behavior supports this feature as documented.

##### Permissions

* [ ] Access is restricted per the Capabilities matrix on this page (or equivalent role rules).

##### Business Rules

* [ ] All business rules for this feature are enforced.

##### Error Handling

* [ ] Error states return clear messages and appropriate HTTP status codes.

### Tier Configuration

* Tier name and price
* Benefits list
* Maximum sponsors per tier
* Display order
* Auto-event assignment rules

If sponsorship credits are enabled, tiers can also define:

* Included credits on purchase/renewal
* Credit cost multipliers (e.g. discounted ad rates for higher tiers)

#### Acceptance Criteria

##### Frontend

* [ ] UI supports the workflows described in this feature.

##### Backend / API

* [ ] Backend behavior supports this feature as documented.

##### Permissions

* [ ] Access is restricted per the Capabilities matrix on this page (or equivalent role rules).

##### Business Rules

* [ ] All business rules for this feature are enforced.

##### Error Handling

* [ ] Error states return clear messages and appropriate HTTP status codes.

### Expression of Interest (EOI)

Sponsors can submit an **Expression of Interest (EOI)** in two common contexts:

1. **General sponsorship** ("I want to become a sponsor")
2. **Event-specific sponsorship** ("I want to sponsor Event X")

Expected behavior:

* Public or sponsor-portal EOI form
* Admin notification on submission
* EOI tracking and follow-up (approve/deny/pending)
* When approved, the sponsor is linked to a tier and a sponsorship start/end date is generated

#### Acceptance Criteria

##### Frontend

* [ ] Sponsors can submit an EOI (general and event-specific).
* [ ] Admin UI lists EOIs with requested tier and (if applicable) the requested event.

##### Backend / API

* [ ] EOI submissions are persisted and can be approved/denied.

##### Permissions

* [ ] EOIs can be approved/denied by `ROLE_CLIENT_ADMIN` only.

##### Business Rules

* [ ] Approved EOIs create (or update) the sponsor relationship and tier assignment.

##### Error Handling

* [ ] Invalid submissions return field-level errors.

### Sponsorship Credits

Sponsorship credits can be used as a prepaid balance for sponsor activities (most commonly **ads/widgets**).

Typical flow:

* Sponsors have a credit balance
* Creating an ad calculates a **credit cost** based on placement + date range
* When an ad is approved and goes live, credits are deducted
* Sponsors can purchase credit top-ups (invoice + payment)

#### Acceptance Criteria

##### Frontend

* [ ] Admin UI shows sponsor credit balances and credit purchase history.

##### Backend / API

* [ ] Credit balance changes are auditable (ledger entries).

##### Permissions

* [ ] Only `ROLE_CLIENT_ADMIN` can adjust credits manually.

##### Business Rules

* [ ] Sponsors cannot run ads that exceed their available credit balance.

##### Error Handling

* [ ] Insufficient credit errors are clear and actionable.

### Member Offers (Benefits Directory)

Depending on tier configuration, sponsors can create **member offers** (discounts/deals) that appear in a member-facing benefits/offers directory.

Offers typically include:

* Offer name + description
* Link/CTA URL
* Optional image
* Eligibility rules (tier gating, active date range)

#### Acceptance Criteria

##### Frontend

* [ ] Sponsor UI can create/edit offers when their tier allows it.
* [ ] Member UI shows active offers with sponsor attribution.

##### Backend / API

* [ ] Offers are stored and filtered to active/eligible members.

##### Permissions

* [ ] Only sponsors (and client admins) can manage offers for their sponsor account.

##### Business Rules

* [ ] Offers are visible only while the sponsor is active and within any configured dates.

##### Error Handling

* [ ] Invalid offer payloads return field-level errors.

## Implementation Contracts

### Backend (API)

```
GET    /api/sponsorship/tiers                # List tiers
POST   /api/sponsorship/tiers                # Create tier
PUT    /api/sponsorship/tiers/{id}           # Update tier
DELETE /api/sponsorship/tiers/{id}           # Delete tier

GET    /api/sponsorship/eoi                  # List EOIs
PUT    /api/sponsorship/eoi/{id}/status      # Update EOI status

GET    /api/sponsorship/sponsors             # List sponsors
POST   /api/sponsorship/sponsors             # Add sponsor
GET    /api/sponsorship/sponsors/{id}/credits         # Credit balance + ledger
POST   /api/sponsorship/sponsors/{id}/credits/purchase # Initiate credit top-up

GET    /api/sponsorship/offers               # List offers
POST   /api/sponsorship/offers               # Create offer
PUT    /api/sponsorship/offers/{id}          # Update offer
DELETE /api/sponsorship/offers/{id}          # Archive offer
```
