69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
import dotenv from 'dotenv';
|
|
import axios from 'axios';
|
|
|
|
// Load environment variables
|
|
dotenv.config();
|
|
|
|
const WREN_API_TOKEN = process.env.WREN_API_TOKEN;
|
|
|
|
if (!WREN_API_TOKEN) {
|
|
console.error('Please set your WREN_API_TOKEN in .env file');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Create API client
|
|
const api = axios.create({
|
|
baseURL: 'https://api.wren.co/v1',
|
|
headers: {
|
|
'Authorization': `Bearer ${WREN_API_TOKEN}`,
|
|
'Content-Type': 'application/json'
|
|
}
|
|
});
|
|
|
|
async function main() {
|
|
try {
|
|
// 1. Get available projects
|
|
console.log('Fetching available offset projects...');
|
|
const projectsResponse = await api.get('/projects');
|
|
const projects = projectsResponse.data.projects;
|
|
|
|
console.log(`Found ${projects.length} projects:\n`);
|
|
projects.forEach(project => {
|
|
console.log(`- ${project.name} (${project.location})`);
|
|
console.log(` Price: $${project.price_per_ton}/ton`);
|
|
console.log(` Type: ${project.type}\n`);
|
|
});
|
|
|
|
// 2. Create an offset order
|
|
console.log('Creating offset order for 1 ton of CO2...');
|
|
const orderResponse = await api.post('/orders', {
|
|
tons: 1,
|
|
currency: 'USD'
|
|
});
|
|
|
|
const order = orderResponse.data;
|
|
|
|
console.log('\nOrder created successfully!');
|
|
console.log('------------------------');
|
|
console.log(`Order ID: ${order.id}`);
|
|
console.log(`Amount: $${order.amount_charged/100}`);
|
|
console.log(`Status: ${order.status}`);
|
|
console.log(`Portfolio: ${order.portfolio.name}`);
|
|
|
|
// List projects in the portfolio
|
|
console.log('\nPortfolio projects:');
|
|
order.portfolio.projects.forEach(project => {
|
|
console.log(`- ${project.name}`);
|
|
});
|
|
|
|
} catch (error) {
|
|
if (error.response) {
|
|
console.error('API Error:', error.response.data);
|
|
} else {
|
|
console.error('Error:', error.message);
|
|
}
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
main(); |