The Javascript sdk for the Malawi Curriculum document API
# Malawi Curriculum API - JavaScript SDK
The official SDK for accessing the Malawi Curriculum API.
## Installation
```bash
npm install malawi-curriculum-api
```
### Authentication
Initialize the client with your API Key and optional Firebase ID Token for user-specific access (subscriptions/purchases).
```javascript
import { MalawiCurriculumClient } from 'malawi-curriculum-api';
const client = new MalawiCurriculumClient({
apiKey: 'YOUR_API_KEY',
firebaseToken: 'USER_FIREBASE_ID_TOKEN' // Optional: for accessing paid resources
});
// Update token later (e.g., on user login/refresh)
client.setFirebaseToken('NEW_TOKEN');
```
### Search Resources
Search with powerful filtering options. Access to filters depends on your API Key plan tier.
```javascript
const results = await client.search({
q: 'mathematics',
level: 'MSCE', // Basic+ Plan
year: 2023, // Pro+ Plan
type: 'past_paper', // Pro+ Plan
limit: 10
});
```
### Secure Downloads
Request a secure, short-lived download URL. This flow enforces entitlements (subscriptions/purchases).
```javascript
try {
// 1. Get signed URL (handles payment checks automatically)
const url = await client.download(123, 'download');
// 2. Open or download
window.location.href = url;
} catch (error) {
if (error.message.includes('402')) {
console.error('Payment Required');
}
}
```
### Payments
Initiate mobile money payments for subscriptions or resource purchases.
#### Developer Subscription (Pay Platform)
```javascript
const response = await client.initiatePayment({
type: 'subscription',
tier: 'pro',
mobile: '26599123456',
operator: 'AIRTEL', // or 'TNM'
email: 'dev@example.com'
});
console.log('Charge ID:', response.charge_id);
```
#### Purchase Resource (User pays Developer)
```javascript
const response = await client.initiatePayment({
type: 'purchase',
developerId: 'DEV_UUID',
resourceId: 123,
amount: 500,
mobile: '26588123456',
operator: 'TNM',
email: 'user@example.com'
});
```
#### Verify Payment …