# List all plugins with optional search and filtering

`GET /api/plugins`

Retrieve a paginated list of plugins with optional filtering and search capabilities. Use query parameters for search, category, status, type filtering.

Authentication: no security requirement declared for this operation.

Parameters:

- `select` (query, object, optional)
  Type: object
  
  Schema: [Object](https://sourcey-gauzy.pages.dev/api-reference/models/object/index.md)

- `relations` (query, object, optional)
  Type: object
  
  Schema: [Object](https://sourcey-gauzy.pages.dev/api-reference/models/object/index.md)

- `where` (query, object, optional)
  Type: object
  
  Schema: [Object](https://sourcey-gauzy.pages.dev/api-reference/models/object/index.md)

- `order` (query, object, optional)
  Type: object
  
  Schema: [Object](https://sourcey-gauzy.pages.dev/api-reference/models/object/index.md)

- `withDeleted` (query, boolean, optional)
  Type: boolean

- `take` (query, number, optional)
  Type: number
  
  minimum: 0
  
  maximum: 100

- `skip` (query, number, optional)
  Type: number
  
  minimum: 0

- `search` (query, string, optional) - Search text to filter plugins by name, description, or author
  Type: string
  
  Example:
  
  ```json
  "time tracking"
  ```

- `name` (query, string, optional) - Filter by plugin name (exact match)
  Type: string
  
  Example:
  
  ```json
  "Gauzy Time Tracker"
  ```

- `description` (query, string, optional) - Filter by plugin description (partial match)
  Type: string
  
  Example:
  
  ```json
  "track time"
  ```

- `type` (query, string, optional) - Filter by plugin type
  Type: string
  
  enum: ["DESKTOP","WEB","MOBILE"]
  
  Example:
  
  ```json
  "DESKTOP"
  ```

- `status` (query, string, optional) - Filter by plugin status
  Type: string
  
  enum: ["ACTIVE","INACTIVE","DEPRECATED","ARCHIVED"]
  
  Example:
  
  ```json
  "ACTIVE"
  ```

- `isActive` (query, boolean, optional) - Filter by active state
  Type: boolean
  
  Example:
  
  ```json
  true
  ```

- `categoryId` (query, string, optional) - Filter by plugin category ID
  Type: string
  
  Example:
  
  ```json
  "uuid-string"
  ```

- `author` (query, string, optional) - Filter by plugin author
  Type: string
  
  Example:
  
  ```json
  "Gauzy Team"
  ```

- `license` (query, string, optional) - Filter by plugin license
  Type: string
  
  Example:
  
  ```json
  "MIT"
  ```

- `uploadedById` (query, string, optional) - Filter by user who uploaded the plugin
  Type: string
  
  Example:
  
  ```json
  "uuid-string"
  ```

- `uploadedAfter` (query, string, date-time, optional) - Filter plugins uploaded after this date
  Type: string, date-time
  
  Example:
  
  ```json
  "2024-01-01T00:00:00.000Z"
  ```

- `uploadedBefore` (query, string, date-time, optional) - Filter plugins uploaded before this date
  Type: string, date-time
  
  Example:
  
  ```json
  "2024-12-31T23:59:59.999Z"
  ```

- `downloadedAfter` (query, string, date-time, optional) - Filter plugins downloaded after this date
  Type: string, date-time
  
  Example:
  
  ```json
  "2024-01-01T00:00:00.000Z"
  ```

- `downloadedBefore` (query, string, date-time, optional) - Filter plugins downloaded before this date
  Type: string, date-time
  
  Example:
  
  ```json
  "2024-12-31T23:59:59.999Z"
  ```

- `minDownloads` (query, number, optional) - Filter by minimum download count
  Type: number
  
  minimum: 0
  
  Example:
  
  ```json
  10
  ```

- `maxDownloads` (query, number, optional) - Filter by maximum download count
  Type: number
  
  minimum: 0
  
  Example:
  
  ```json
  1000
  ```

- `version` (query, string, optional) - Filter by version number
  Type: string
  
  Example:
  
  ```json
  "1.0.0"
  ```

- `tags` (query, array, optional) - Filter by plugin tags
  Type: array
  
  Example:
  
  ```json
  [
    "time-tracking",
    "productivity"
  ]
  ```
  
  Items:
    Type: string

- `hasInstallations` (query, boolean, optional) - Include only plugins with installations
  Type: boolean
  
  Example:
  
  ```json
  true
  ```

- `isVerified` (query, boolean, optional) - Include only verified plugins
  Type: boolean
  
  Example:
  
  ```json
  true
  ```

- `page` (query, number, optional) - Page number for pagination
  Type: number
  
  minimum: 1
  
  Example:
  
  ```json
  1
  ```

- `limit` (query, number, optional) - Number of items per page
  Type: number
  
  minimum: 1
  
  maximum: 100
  
  Example:
  
  ```json
  10
  ```

- `sortBy` (query, string, optional) - Sort field
  Type: string
  
  enum: ["name","author","uploadedAt","lastDownloadedAt","downloadCount","createdAt","updatedAt"]
  
  Example:
  
  ```json
  "name"
  ```

- `sortDirection` (query, string, optional) - Sort direction
  Type: string
  
  enum: ["ASC","DESC"]
  
  Example:
  
  ```json
  "ASC"
  ```

Responses:

- 200: List of plugins retrieved successfully.

Content type: application/json

Type: array

Items:
  Reference: [Plugin_1](https://sourcey-gauzy.pages.dev/api-reference/models/plugin-1/index.md); Type: object

- 400: Invalid search or filter criteria provided.

- 401: Unauthorized access.

- 404: No plugins found matching the provided criteria.

## Examples

### cURL

```bash
curl -X GET 'http://localhost:3000/api/plugins'
```

### JavaScript

```javascript
const response = await fetch('http://localhost:3000/api/plugins', {
  method: 'GET',
});

const data = await response.text();
```

### Python

```python
import requests

response = requests.get('http://localhost:3000/api/plugins')
print(response.text)
```
