UNPKG

@devma/qloo

Version:

TypeScript SDK for the Qloo Insights API - Generate taste-based insights and recommendations

288 lines (211 loc) 7.84 kB
# Qloo TypeScript SDK Developer-friendly & type-safe TypeScript SDK for the Qloo Insights API - Generate taste-based insights and recommendations. <div align="left"> <a href="https://www.npmjs.com/package/@devma/qloo"> <img src="https://img.shields.io/npm/v/@devma/qloo.svg" alt="npm version" /> </a> <a href="https://opensource.org/licenses/MIT"> <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License" /> </a> <a href="https://github.com/manasseh-zw/qloo-ts-sdk"> <img src="https://img.shields.io/github/stars/manasseh-zw/qloo-ts-sdk.svg" alt="GitHub stars" /> </a> </div> <br /> ## About This SDK provides a comprehensive TypeScript interface for the Qloo Insights API, enabling developers to generate taste-based insights and recommendations with full type safety and modern JavaScript/TypeScript support. ### Key Features - 🔒 **Type-safe** - Full TypeScript support with comprehensive type definitions - 🎯 **Developer-friendly** - Intuitive API design with excellent IDE support - 📦 **Dual module support** - Works with both ESM and CommonJS -**Validation** - Built-in request/response validation using Zod - 🚀 **Modern** - Supports Node.js 18+ and modern JavaScript runtimes - 📚 **Well-documented** - Comprehensive documentation and examples - 🤖 **AI-ready** - Includes LLM.txt for AI model integration and automation ## Table of Contents - [Installation](#installation) - [Quick Start](#quick-start) - [Authentication](#authentication) - [Server Configuration](#server-configuration) - [Available Operations](#available-operations) - [Examples](#examples) - [Error Handling](#error-handling) - [AI Integration](#ai-integration) - [Contributing](#contributing) - [License](#license) ## Installation Install the SDK using your preferred package manager: ```bash # npm npm install @devma/qloo # yarn yarn add @devma/qloo # pnpm pnpm add @devma/qloo ``` ## Quick Start ```typescript import { Qloo } from '@devma/qloo'; // Initialize the SDK const qloo = new Qloo({ apiKey: 'your-api-key-here' }); // Get insights for restaurants in New York const insights = await qloo.insights.getInsights({ filterType: 'urn:entity:place', filterLocationQuery: 'New York City', take: 10 }); console.log(insights.results?.entities); ``` ## Authentication The Qloo SDK uses API key authentication. You can obtain your API key from the [Qloo Dashboard](https://dashboard.qloo.com). ```typescript import { Qloo } from '@devma/qloo'; const qloo = new Qloo({ apiKey: process.env.QLOO_API_KEY // Store your API key in environment variables }); ``` ## Server Configuration The SDK supports different server environments for development, testing, and production use: ### Available Environments - **Staging**: `https://staging.api.qloo.com` - Development and testing - **Hackathon**: `https://hackathon.api.qloo.com` - Special hackathon environment (default) ### Configuration Examples ```typescript import { Qloo } from '@devma/qloo'; // Production (default) const qloo = new Qloo({ apiKey: 'your-api-key' }); // Staging environment const qlooStaging = new Qloo({ serverURL: 'https://staging.api.qloo.com', apiKey: 'your-staging-api-key' }); // Hackathon environment const qlooHackathon = new Qloo({ serverURL: 'https://hackathon.api.qloo.com', apiKey: 'your-hackathon-api-key' }); // Using configuration object const config = { Qloo: { url: 'https://hackathon.api.qloo.com', apikey: 'your-hackathon-api-key' } }; const qloo = new Qloo({ serverURL: config.Qloo.url, apiKey: config.Qloo.apikey, }); ``` > **Note**: This SDK was originally created for the Qloo hackathon to provide a more developer-friendly interface to the Qloo API. The hackathon environment provides special features and endpoints for hackathon participants. ## Available Operations ### Insights API - `getInsights()` - Generate taste-based insights and recommendations ### Audiences API - `getAudiences()` - Retrieve audience data - `getAudienceTypes()` - Get available audience types ### Tags API - `getTags()` - Search for tags - `getTagTypes()` - Get available tag types ## Examples ### Restaurant Recommendations ```typescript import { Qloo } from '@devma/qloo'; const qloo = new Qloo({ apiKey: 'your-api-key' }); // Get Italian restaurants in Manhattan const restaurants = await qloo.insights.getInsights({ filterType: 'urn:entity:place', filterLocationQuery: 'Manhattan', filterTags: 'urn:tag:genre:restaurant:Italian', take: 5 }); ``` ### Movie Recommendations ```typescript // Get movie recommendations based on interests const movies = await qloo.insights.getInsights({ filterType: 'urn:entity:movie', signalInterestsEntities: ['entity-id-1', 'entity-id-2'], filterReleaseYearMin: 2020, take: 10 }); ``` ### Audience-Based Insights ```typescript // Get insights for a specific audience const audienceInsights = await qloo.insights.getInsights({ filterType: 'urn:entity:place', signalDemographicsAudiences: ['urn:audience:millennials'], signalLocationQuery: 'Los Angeles', take: 15 }); ``` ## Error Handling The SDK provides comprehensive error handling: ```typescript import { QlooError } from '@devma/qloo'; try { const insights = await qloo.insights.getInsights({ filterType: 'urn:entity:place', // ... other parameters }); } catch (error) { if (error instanceof QlooError) { console.error('Qloo API Error:', error.message); console.error('Status Code:', error.statusCode); } else { console.error('Unexpected error:', error); } } ``` ## AI Integration This package includes `LLM.txt` - a comprehensive guide designed specifically for AI models and LLM agents. This file contains: - **Core Concepts**: Understanding Qloo's signal+filter model - **Entity Types**: Places, movies, artists, podcasts, books, brands, people - **API Usage**: Complete examples for all endpoints - **Best Practices**: Optimized patterns for AI integration - **Quick Reference**: Tables and structured data for rapid lookup AI developers and LLM agents can use this file to quickly understand and integrate with the Qloo API without additional context. ## Development ### Prerequisites - Node.js 18.0.0 or higher - npm, yarn, or pnpm ### Building the SDK ```bash # Install dependencies npm install # Build the project npm run build # Run linting npm run lint # Run type checking npm run typecheck ``` ### Running Examples Check the `examples/` directory for complete usage examples: ```bash cd examples npm install npm run example ``` ## Contributing We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Make your changes 4. Add tests for your changes 5. Ensure all tests pass (`npm test`) 6. Commit your changes (`git commit -m 'Add some amazing feature'`) 7. Push to the branch (`git push origin feature/amazing-feature`) 8. Open a Pull Request ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## Support - 📧 For questions and support, please contact: [support@qloo.com](mailto:support@qloo.com) - 🐛 For bug reports and feature requests, please [open an issue](https://github.com/manasseh-zw/qloo-ts-sdk/issues) - 📖 For more information about the Qloo API, visit the [official documentation](https://docs.qloo.com) --- Made with ❤️ by the Qloo community