Aller au contenu principal

Search

L'API Search exécute une recherche full-text globale dans votre workspace en un seul appel. Au lieu de rechercher chaque domaine séparément, vous interrogez une fois et obtenez une liste classée et mixte de résultats — documents, channels, messages, todos, fichiers du drive, transcriptions vocales et chats IA — chacun étiqueté avec le type d'entité dont il provient.

Démarrage rapide

# Search across every entity type you can access
curl -X GET "https://api.copera.ai/public/v1/search?q=quarterly%20plan" \
-H "Authorization: Bearer YOUR_API_KEY"

# Restrict to specific entity types
curl -X GET "https://api.copera.ai/public/v1/search?q=contract&types=document,driveContent" \
-H "Authorization: Bearer YOUR_API_KEY"

# Sort and limit the results
curl -X GET "https://api.copera.ai/public/v1/search?q=plan&sortBy=updatedAt&sortOrder=desc&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"

Disponible dans

Public APICLIMCPCopera AI
✅ Complet✅ Complet✅ Complet

La CLI et le serveur MCP hébergé exposent la même recherche globale. Elle n'est pas exposée à l'assistant Copera AI intégré à l'app.

Fonctionnement

Envoyez un GET à /search avec une chaîne de requête. L'endpoint recherche chaque type d'entité pour lequel vous avez la permission, classe les résultats, et les renvoie comme une seule liste de hits typés.

Paramètres

  • qrequis. La requête de recherche (au moins un caractère).
  • types — optionnel. Restreint la recherche à des types d'entités spécifiques. Accepte une valeur séparée par des virgules (?types=document,channel) ou des paramètres répétés (?types=document&types=channel). Lorsqu'il est omis, tous les types autorisés sont recherchés. Valeurs valides :
    • document
    • channel
    • channelMessage
    • todo
    • todoItem
    • driveContent
    • voiceTranscription
    • aiChat
    • aiChatMessage
  • sortBycreatedAt ou updatedAt (défaut updatedAt).
  • sortOrderasc ou desc (défaut desc).
  • limit — nombre de résultats, 1–100 (défaut 50).

Réponse

La réponse enveloppe les hits avec des métadonnées :

{
"query": "quarterly plan",
"totalHits": 12,
"processingTimeMs": 8,
"hits": [
{ "entityType": "document", "_id": "…", "title": "Q3 Plan", "updatedAt": 1719400000000 },
{ "entityType": "channelMessage", "_id": "…", "content": "let's finalize the plan", "channel": "…" }
]
}

Chaque hit porte un champ entityType qui indique quelle forme attendre. Les champs par type reflètent l'entité (par exemple, les hits document ont un title et un mdBody ; les hits channelMessage ont content, author et channel ; les hits driveContent ont name, mimeType et size). Tous les horodatages sont en millisecondes epoch.

Permissions et filtrage

Search respecte les scopes de votre token. Chaque type d'entité se mappe à un scope de domaine — par exemple, les résultats document exigent access_docs, les résultats channel et transcription exigent access_channels, et les résultats drive exigent access_drive. Si votre token n'a pas le scope pour un type, ce type est silencieusement retiré des résultats.

Si vous demandez explicitement un ensemble de types et que votre token n'a la permission pour aucun d'eux, la requête renvoie un 403.

Authentification et scope

Search exige un Personal Access Token (cp_pat_) — les Integration API Keys (cp_key_) ne sont pas acceptées sur cet endpoint. Les résultats sont ensuite filtrés par les scopes de domaine que votre token détient (voir ci-dessus). Les utilisateurs externes ne peuvent pas utiliser cet endpoint. Voir Authentification.

Référence