Search API
All list operations in Authpipe use a unified search pattern via POST /search endpoints. This provides filtering, sorting, cursor-based pagination, and full-text search across all resource types.
Search endpoints
Section titled “Search endpoints”| Endpoint | Resource |
|---|---|
POST /api/providers/search | Provider catalog (includes custom providers) |
POST /api/provider-configs/search | Provider configs |
POST /api/installations/search | Installations |
POST /api/connections/search | Connections |
POST /api/events/search | Events |
Request format
Section titled “Request format”{ "filter": { "tenant_id": { "eq": "org_acme" }, "status": { "in": ["active", "needs_reauth"] } }, "sort": [ { "field": "created_at", "direction": "desc" } ], "query": "search text", "cursor": "cursor_token", "limit": 25, "fields": ["id", "status", "tenant_id"]}All fields are optional. An empty request body returns the first page of results with default sorting.
Filter operators
Section titled “Filter operators”| Operator | Description | Example |
|---|---|---|
eq | Equals | { "status": { "eq": "active" } } |
neq | Not equals | { "status": { "neq": "revoked" } } |
in | In list | { "status": { "in": ["active", "needs_reauth"] } } |
gt | Greater than | { "created_at": { "gt": "2026-01-01T00:00:00Z" } } |
gte | Greater than or equal | { "created_at": { "gte": "2026-01-01T00:00:00Z" } } |
lt | Less than | { "created_at": { "lt": "2026-12-31T23:59:59Z" } } |
lte | Less than or equal | { "created_at": { "lte": "2026-12-31T23:59:59Z" } } |
Multiple filters are combined with AND logic.
Sorting
Section titled “Sorting”Sort by one or more fields with asc or desc direction:
{ "sort": [ { "field": "created_at", "direction": "desc" }, { "field": "name", "direction": "asc" } ]}Default direction is asc if omitted.
Pagination
Section titled “Pagination”Authpipe uses cursor-based pagination for consistent results across pages.
Response format
Section titled “Response format”{ "data": [...], "has_more": true, "next_cursor": "eyJpZCI6Ijk5OSJ9", "limit": 25}Iterating pages
Section titled “Iterating pages”let cursor: string | undefined;do { const resp = await authpipe.searchConnections({ filter: { tenant_id: { eq: "org_acme" } }, limit: 100, cursor, });
for (const conn of resp.data) { console.log(conn.id, conn.status); }
cursor = resp.next_cursor;} while (cursor);cursor := ""for { resp, err := client.SearchConnections(ctx, &authpipe.SearchRequest{ Filter: map[string]map[string]interface{}{ "tenant_id": {"eq": "org_acme"}, }, Limit: 100, Cursor: cursor, }) if err != nil { log.Fatal(err) }
for _, conn := range resp.Data { fmt.Println(conn.ID, conn.Status) }
if !resp.HasMore { break } cursor = resp.NextCursor}from authpipe.types import SearchRequest
cursor = Nonewhile True: resp = client.search_connections(SearchRequest( filter={"tenant_id": {"eq": "org_acme"}}, limit=100, cursor=cursor, ))
for conn in resp.data: print(conn.id, conn.status)
if not resp.has_more: break cursor = resp.next_cursorFull-text search
Section titled “Full-text search”The query parameter performs full-text search. Available on provider search — matches against names, descriptions, and tags with relevance ranking.
const resp = await authpipe.searchProviders({ query: "email marketing", limit: 10,});Field selection
Section titled “Field selection”Use fields to return only specific fields, reducing response size:
{ "fields": ["id", "status", "tenant_id"], "limit": 100}Offset pagination
Section titled “Offset pagination”For simple use cases, offset-based pagination is also supported:
{ "offset": 50, "limit": 25}Cursor pagination is preferred for large datasets as it provides consistent results when data changes between pages.