parent
4f4d5be200
commit
5099b52633
@ -0,0 +1,205 @@
|
|||||||
|
# Documentation for `getAllPrompts` API Endpoint
|
||||||
|
|
||||||
|
The `getAllPrompts` API endpoint is a part of the `swarms.world` application, designed to fetch all prompt records from the database. This endpoint is crucial for retrieving various prompts stored in the `swarms_cloud_prompts` table, including their metadata such as name, description, use cases, and tags. It provides an authenticated way to access this data, ensuring that only authorized users can retrieve the information.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
The primary purpose of this API endpoint is to provide a secure method for clients to fetch a list of prompts stored in the `swarms_cloud_prompts` table. It ensures data integrity and security by using an authentication guard and handles various HTTP methods and errors gracefully.
|
||||||
|
|
||||||
|
## API Endpoint Definition
|
||||||
|
|
||||||
|
### Endpoint URL
|
||||||
|
|
||||||
|
```
|
||||||
|
https://swarms.world/get-prompt
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTTP Method
|
||||||
|
|
||||||
|
```
|
||||||
|
GET
|
||||||
|
```
|
||||||
|
|
||||||
|
### Request Headers
|
||||||
|
|
||||||
|
| Header | Type | Required | Description |
|
||||||
|
|----------------|--------|----------|-----------------------------|
|
||||||
|
| Authorization | String | Yes | Bearer token for API access |
|
||||||
|
|
||||||
|
### Response
|
||||||
|
|
||||||
|
#### Success Response (200)
|
||||||
|
|
||||||
|
Returns an array of prompts.
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "string",
|
||||||
|
"name": "string",
|
||||||
|
"description": "string",
|
||||||
|
"prompt": "string",
|
||||||
|
"use_cases": "string",
|
||||||
|
"tags": "string"
|
||||||
|
},
|
||||||
|
...
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Error Responses
|
||||||
|
|
||||||
|
- **405 Method Not Allowed**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"error": "Method <method> Not Allowed"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- **401 Unauthorized**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"error": "API Key is missing"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- **500 Internal Server Error**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"error": "Could not fetch prompts"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Request Handling
|
||||||
|
|
||||||
|
1. **Method Validation**: The endpoint only supports the `GET` method. If a different HTTP method is used, it responds with a `405 Method Not Allowed` status.
|
||||||
|
2. **Authentication**: The request must include a valid Bearer token in the `Authorization` header. If the token is missing, a `401 Unauthorized` status is returned.
|
||||||
|
3. **Authorization Check**: The token is validated using the `AuthApiGuard` class. If the token is invalid, an appropriate error response is returned based on the status received from the guard.
|
||||||
|
4. **Database Query**: The endpoint queries the `swarms_cloud_prompts` table using the `supabaseAdmin` client to fetch prompt data.
|
||||||
|
5. **Response**: On success, it returns the prompt data in JSON format. In case of an error during the database query, a `500 Internal Server Error` status is returned.
|
||||||
|
|
||||||
|
## Code Example
|
||||||
|
|
||||||
|
### JavaScript (Node.js)
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import fetch from 'node-fetch';
|
||||||
|
|
||||||
|
const getPrompts = async () => {
|
||||||
|
const response = await fetch('https://swarms.world/get-prompt', {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Authorization': 'Bearer YOUR_API_KEY'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Error: ${response.statusText}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
console.log(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
getPrompts().catch(console.error);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Python
|
||||||
|
|
||||||
|
```python
|
||||||
|
import requests
|
||||||
|
|
||||||
|
def get_prompts():
|
||||||
|
headers = {
|
||||||
|
'Authorization': 'Bearer YOUR_API_KEY'
|
||||||
|
}
|
||||||
|
response = requests.get('https://swarms.world/get-prompt', headers=headers)
|
||||||
|
|
||||||
|
if response.status_code != 200:
|
||||||
|
raise Exception(f'Error: {response.status_code}, {response.text}')
|
||||||
|
|
||||||
|
data = response.json()
|
||||||
|
print(data)
|
||||||
|
|
||||||
|
get_prompts()
|
||||||
|
```
|
||||||
|
|
||||||
|
### cURL
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -X GET https://swarms.world/get-prompt \
|
||||||
|
-H "Authorization: Bearer YOUR_API_KEY"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Go
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getPrompts() {
|
||||||
|
client := &http.Client{}
|
||||||
|
req, err := http.NewRequest("GET", "https://swarms.world/get-prompt", nil)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode != http.StatusOK {
|
||||||
|
body, _ := ioutil.ReadAll(resp.Body)
|
||||||
|
panic(fmt.Sprintf("Error: %d, %s", resp.StatusCode, string(body)))
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(string(body))
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
getPrompts()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Attributes Table
|
||||||
|
|
||||||
|
| Attribute | Type | Description |
|
||||||
|
|---------------|--------|------------------------------------------------------------|
|
||||||
|
| id | String | Unique identifier for the prompt |
|
||||||
|
| name | String | Name of the prompt |
|
||||||
|
| description | String | Description of the prompt |
|
||||||
|
| prompt | String | The actual prompt text |
|
||||||
|
| use_cases | String | Use cases for the prompt |
|
||||||
|
| tags | String | Tags associated with the prompt |
|
||||||
|
|
||||||
|
## Additional Information and Tips
|
||||||
|
|
||||||
|
- Ensure your API key is kept secure and not exposed in client-side code.
|
||||||
|
- Handle different error statuses appropriately to provide clear feedback to users.
|
||||||
|
- Consider implementing rate limiting and logging for better security and monitoring.
|
||||||
|
|
||||||
|
## References and Resources
|
||||||
|
|
||||||
|
- [Next.js API Routes](https://nextjs.org/docs/api-routes/introduction)
|
||||||
|
- [Supabase Documentation](https://supabase.com/docs)
|
||||||
|
- [Node Fetch](https://www.npmjs.com/package/node-fetch)
|
||||||
|
- [Requests Library (Python)](https://docs.python-requests.org/en/latest/)
|
||||||
|
- [Go net/http Package](https://pkg.go.dev/net/http)
|
||||||
|
|
||||||
|
This documentation provides a comprehensive guide to the `getAllPrompts` API endpoint, including usage examples in multiple programming languages and detailed attribute descriptions.
|
Loading…
Reference in new issue