supermemory/apps/docs/memory-api/connectors/managing-resources.mdx
Dhravya Shah 87b361c26b
Some checks failed
Publish AI SDK / publish (push) Has been cancelled
docs changes (#678)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 16:55:32 -08:00

343 lines
8.9 KiB
Text

---
title: 'Managing Connection Resources'
sidebarTitle: 'Managing Resources'
description: 'Get and configure resources for connections that support resource management'
icon: 'folder-sync'
---
<Note>
**Currently Available for GitHub:** Resource management endpoints are currently only available for the GitHub connector. These endpoints allow you to select which repositories to sync before syncing begins.
</Note>
Some connectors require you to select which resources (e.g., repositories) to sync before syncing begins. Use these generic endpoints to list and configure resources for connections that support resource management.
## Get Resources
`GET /v3/connections/:connectionId/resources`
Get available resources (e.g., repositories, folders) for a connection using stored credentials.
<CodeGroup>
```typescript Typescript
import Supermemory from 'supermemory';
const client = new Supermemory({
apiKey: process.env['SUPERMEMORY_API_KEY'],
});
// Get resources with pagination
const response = await fetch(
`https://api.supermemory.ai/v3/connections/${connectionId}/resources?page=1&per_page=30`,
{
headers: {
'Authorization': `Bearer ${process.env.SUPERMEMORY_API_KEY}`,
},
}
);
const data = await response.json();
console.log('Resources:', data.resources);
console.log('Total count:', data.total_count);
```
```python Python
import requests
url = f"https://api.supermemory.ai/v3/connections/{connection_id}/resources"
params = {
"page": 1,
"per_page": 30
}
headers = {
"Authorization": f"Bearer {api_key}",
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
print(f"Resources: {data['resources']}")
print(f"Total count: {data.get('total_count')}")
```
```bash cURL
curl -X GET \
"https://api.supermemory.ai/v3/connections/{connectionId}/resources?page=1&per_page=30" \
-H "Authorization: Bearer <token>"
```
</CodeGroup>
### Query Parameters
- `page`: Optional. Page number for pagination. Default: `1`
- `per_page`: Optional. Number of resources per page. Default: `30`
### Response
```json
{
"resources": [
{
"id": 123456789,
"name": "your-org/documentation",
"full_name": "your-org/documentation",
"description": "Documentation repository",
"private": false,
"default_branch": "main",
"updated_at": "2024-01-15T10:00:00Z"
}
],
"total_count": 45
}
```
### Error Responses
- `400`: Connection missing refresh token
- `401`: Unauthorized
- `404`: Connection not found
- `501`: Provider does not support resource fetching
<Note>
**Provider Support:** Not all providers support resource fetching. This endpoint is only available for providers that implement the `fetchResources()` method (e.g., GitHub). For providers that don't support this, you'll receive a `501 Not Implemented` response.
</Note>
## Configure Connection
`POST /v3/connections/:connectionId/configure`
Configure selected resources (e.g., repositories) for a connection and set up webhooks/subscriptions.
<CodeGroup>
```typescript Typescript
import Supermemory from 'supermemory';
const client = new Supermemory({
apiKey: process.env['SUPERMEMORY_API_KEY'],
});
// Configure connection
const response = await fetch(
`https://api.supermemory.ai/v3/connections/${connectionId}/configure`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.SUPERMEMORY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
resources: [
{
id: 123456789,
name: 'your-org/documentation',
defaultBranch: 'main',
},
{
id: 987654321,
name: 'your-org/api-docs',
defaultBranch: 'main',
},
],
}),
}
);
const data = await response.json();
console.log('Success:', data.success);
console.log('Message:', data.message);
console.log('Webhooks registered:', data.webhooksRegistered);
```
```python Python
import requests
url = f"https://api.supermemory.ai/v3/connections/{connection_id}/configure"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
}
payload = {
"resources": [
{
"id": 123456789,
"name": "your-org/documentation",
"defaultBranch": "main",
},
{
"id": 987654321,
"name": "your-org/api-docs",
"defaultBranch": "main",
},
]
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(f"Success: {data['success']}")
print(f"Message: {data['message']}")
print(f"Webhooks registered: {data.get('webhooksRegistered')}")
```
```bash cURL
curl -X POST \
"https://api.supermemory.ai/v3/connections/{connectionId}/configure" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{
"id": 123456789,
"name": "your-org/documentation",
"defaultBranch": "main"
},
{
"id": 987654321,
"name": "your-org/api-docs",
"defaultBranch": "main"
}
]
}'
```
</CodeGroup>
### Request Body
```json
{
"resources": [
{
"id": 123456789,
"name": "your-org/documentation",
"defaultBranch": "main"
}
]
}
```
The structure of each resource object depends on the provider. For GitHub, resources include:
- `id`: Repository ID (number)
- `name`: Repository full name (string)
- `defaultBranch`: Default branch name (string)
### Response
```json
{
"success": true,
"message": "Resources configured successfully",
"webhooksRegistered": 2
}
```
### Error Responses
- `400`: Connection missing refresh token
- `401`: Unauthorized
- `404`: Connection not found
- `501`: Provider does not support resource configuration
<Note>
**Automatic Sync:** After successfully configuring resources, an initial sync is automatically triggered for the connection. You don't need to manually trigger a sync after configuration.
</Note>
<Warning>
**Provider Support:** Not all providers support resource configuration. This endpoint is only available for providers that implement the `configureConnection()` method (e.g., GitHub). For providers that don't support this, you'll receive a `501 Not Implemented` response.
</Warning>
## Example: GitHub Repository Selection
Here's a complete example for GitHub:
<CodeGroup>
```typescript Typescript
// 1. Create connection (see creating-connection.mdx)
const connection = await client.connections.create('github', {
redirectUrl: 'https://yourapp.com/callback',
});
// 2. After OAuth callback, fetch available repositories
const resourcesResponse = await fetch(
`https://api.supermemory.ai/v3/connections/${connection.id}/resources?page=1&per_page=100`,
{
headers: {
'Authorization': `Bearer ${process.env.SUPERMEMORY_API_KEY}`,
},
}
);
const { resources } = await resourcesResponse.json();
// 3. Display repositories to user and let them select
// (Build your UI here)
// 4. Configure selected repositories
const configureResponse = await fetch(
`https://api.supermemory.ai/v3/connections/${connection.id}/configure`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.SUPERMEMORY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
resources: selectedRepositories, // User's selection
}),
}
);
const result = await configureResponse.json();
console.log('Sync initiated:', result.success);
```
```python Python
# 1. Create connection (see creating-connection.mdx)
connection = client.connections.create(
'github',
redirect_url='https://yourapp.com/callback'
)
# 2. After OAuth callback, fetch available repositories
resources_response = requests.get(
f"https://api.supermemory.ai/v3/connections/{connection.id}/resources",
params={"page": 1, "per_page": 100},
headers={"Authorization": f"Bearer {api_key}"}
)
resources = resources_response.json()["resources"]
# 3. Display repositories to user and let them select
# (Build your UI here)
# 4. Configure selected repositories
configure_response = requests.post(
f"https://api.supermemory.ai/v3/connections/{connection.id}/configure",
json={"resources": selected_repositories}, # User's selection
headers={"Authorization": f"Bearer {api_key}"}
)
result = configure_response.json()
print(f"Sync initiated: {result['success']}")
```
```bash cURL
# 1. Create connection (see creating-connection.mdx)
# ... (OAuth flow) ...
# 2. Fetch available repositories
curl -X GET \
"https://api.supermemory.ai/v3/connections/{connectionId}/resources?page=1&per_page=100" \
-H "Authorization: Bearer $SUPERMEMORY_API_KEY"
# 3. Configure selected repositories
curl -X POST \
"https://api.supermemory.ai/v3/connections/{connectionId}/configure" \
-H "Authorization: Bearer $SUPERMEMORY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{
"id": 123456789,
"name": "your-org/documentation",
"defaultBranch": "main"
}
]
}'
```
</CodeGroup>