API Reference
Summary: This document provides a comprehensive reference for the STRIDE REST API. All endpoints are versioned and follow standard RESTful conventions.
Base URL: https://api.stride.com/v1
Authentication
All API requests must be authenticated using a Bearer token in the Authorization header, obtained via Google SSO login.
Authorization: Bearer <YOUR_JWT_TOKEN>
Tokens are issued after successful Google SSO authentication via the /auth/google endpoint.
Endpoints
1. Users
GET /users/{id}
Retrieves a specific user by their unique ID.
-
Parameters:
id(string, path, required): The UUID of the user.
-
Responses:
200 OK: Successful response.
{ "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "email": "user@example.com", "role": "sales", "created_at": "2023-10-27T10:00:00Z" }404 Not Found: If the user with the specified ID does not exist.
{ "detail": "User not found" }
2. Content Assets
GET /assets
Retrieves a list of all content assets (case studies, decks, narratives, etc.)
-
Query Parameters:
tag(string, optional): Filter by tag (e.g., industry, stage, outcome).q(string, optional): Search query (supports natural language).
-
Responses:
200 OK: A list of content assets.
[ { "id": "asset-uuid-1", "title": "Fintech Exit Case Study", "type": "case_study", "tags": ["Fintech", "Exit", "2023"], "source": "Notion", "url": "https://notion.so/...", "created_at": "2025-06-01T10:00:00Z" } ]
POST /assets
Uploads or ingests a new content asset.
-
Request Body:
{ "title": "New Case Study", "type": "case_study", "source": "Drive", "url": "https://drive.google.com/...", "tags": ["SaaS", "Growth", "2024"] } -
Responses:
201 Created: Asset created successfully.
{ "id": "asset-uuid-2", "title": "New Case Study", "type": "case_study" }422 Unprocessable Entity: If the request body is invalid.
3. Tagging
POST /assets/{id}/tags
Applies tags to a content asset.
-
Request Body:
{ "tags": ["Fintech", "Exit", "2023"] } -
Responses:
200 OK: Tags applied successfully.
{ "id": "asset-uuid-1", "tags": ["Fintech", "Exit", "2023"] }
4. Search
GET /search
Searches content assets using natural language and filters.
-
Query Parameters:
q(string, required): Search query (e.g., "Fintech exits in 2023").tag(string, optional): Filter by tag.
-
Responses:
200 OK: Search results.
[ { "id": "asset-uuid-1", "title": "Fintech Exit Case Study", "tags": ["Fintech", "Exit", "2023"] } ]
5. Analytics
GET /analytics/usage
Returns usage statistics by content, tag, and user.
- Responses:
200 OK: Usage stats.
{ "most_viewed_assets": ["asset-uuid-1", "asset-uuid-2"], "top_tags": ["Fintech", "Growth"], "active_users": 42 }
For a guided tour of the implementation, see the Code Walkthroughs.