liferay-headless-rest-client
Version:
A collection of Headless Clients used in Liferay Portal
128 lines (93 loc) • 4.73 kB
Markdown
# Liferay Headless REST Client
> ⚠️ **Project Disclaimer**: This library is a community-maintained project and is not officially supported or maintained by Liferay, Inc. It is provided as-is with no warranty or guarantee of support from Liferay.
A TypeScript client library for interacting with Liferay's Headless REST APIs. This library provides type-safe access to various Liferay services including Commerce, Content Management, User Management, and more. It is maintained by the community to provide a better developer experience when working with Liferay's REST APIs.
## Liferay Version Compatibility
This library is designed to work with `Liferay Portal 2025 Q2` and above. The API endpoints and types are generated from Liferay's OpenAPI specifications for these versions.
## Installation
```bash
npm install liferay-headless-rest-client
# or
yarn add liferay-headless-rest-client
# or
bun add liferay-headless-rest-client
```
## Quick Start
```typescript
import { createClient } from 'liferay-headless-rest-client';
import { getProductsPage } from 'liferay-headless-rest-client/headless-commerce-admin-catalog-v1.0';
// Create a client instance
const client = createClient({
baseUrl: 'https://your-liferay-instance.com',
headers: {
Authorization: `Basic ${btoa('username:password')}`,
},
});
// Use the client to make API calls
async function main() {
const { data } = await getProductsPage({
client,
query: { nestedFields: "catalog" },
});
for (const product of data?.items ?? []) {
console.log(product);
}
}
```
## Custom Client Examples
The library supports custom client implementations for different authentication methods and HTTP clients. Check out the [examples directory](https://github.com/kevenleone/liferay-headless-rest-client/tree/main/examples) for complete implementations.
#### Available Examples
1. **Ky Client** (`ky.auth.client.ts`)
- Implements OAuth2 authentication
- Includes retry mechanism
- Uses the Ky HTTP client for requests
2. **Basic Authentication** (`basic.auth.client.ts`)
- Simple Basic Auth implementation
- Uses username/password authentication
3. **Liferay Fetch** (`liferay-fetch.auth.client.ts`)
- Inherits fetch from Portal
- Client-side only implementation
- Useful for browser-based applications
## Available Clients
The library provides access to various Liferay services through different client modules:
### Analytics
- `analytics-cms-rest-v1.0` - CMS Analytics
- `analytics-reports-rest-v1.0` - Analytics Reports
- `analytics-settings-rest-v1.0` - Analytics Settings
### Commerce Clients
- `headless-commerce-admin-catalog-v1.0` - Product catalog management
- `headless-commerce-admin-channel-v1.0` - Channel management
- `headless-commerce-admin-inventory-v1.0` - Inventory management
- `headless-commerce-admin-order-v1.0` - Order management
- `headless-commerce-admin-payment-v1.0` - Payment processing
- `headless-commerce-admin-pricing-v1.0` - Pricing management
- `headless-commerce-delivery-cart-v1.0` - Shopping cart operations
- `headless-commerce-delivery-catalog-v1.0` - Product catalog delivery
### Content Management
- `headless-admin-content-v1.0` - Content management
- `headless-asset-library-v1.0` - Asset library management
- `headless-delivery-v1.0` - Content delivery
### Site Management
- `headless-admin-site-v1.0` - Site management
- `headless-site-v1.0` - Site operations
### User Management
- `headless-admin-address-v1.0` - Address management
- `headless-admin-user-v1.0` - User management
### Other Services
- `headless-admin-taxonomy-v1.0` - Taxonomy management
- `headless-form-v1.0` - Form management
- `headless-object-v1.0` - Object management
- `notification-v1.0` - Notification system
- `search-v1.0` - Search functionality
## Type Safety
This library is built with TypeScript and provides full type safety for all API operations. All request and response types are automatically generated from the OpenAPI specifications.
## Tools and Technologies
This library is built using the following key technologies:
- [HeyAPI](https://heyapi.com) - Used for generating type-safe API clients from OpenAPI specifications
- `@hey-api/client-fetch` - For making HTTP requests
- `@hey-api/openapi-ts` - For TypeScript type generation
- [Biome](https://biomejs.dev) - For code formatting and linting
- [Bun](https://bun.sh) - JavaScript runtime and build tool
## Contributing
This is a community-driven project. Contributions are welcome! If you find any issues or have suggestions for improvements, please feel free to open an issue or submit a pull request.
## License
MIT License - See [LICENSE.md](LICENSE.md) for details.