MATIH Platform is in active MVP development. Documentation reflects current implementation status.
9. Query Engine & SQL
Saved Queries

Saved Queries

The SavedQueryController provides a reusable query library where users can save, organize, share, and discover SQL queries.


Base Path

/v1/saved-queries

Create a Saved Query

curl -X POST http://query-engine:8080/v1/saved-queries \
  -H "Content-Type: application/json" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000" \
  -H "X-User-ID: 6ba7b810-9dad-11d1-80b4-00c04fd430c8" \
  -H "Authorization: Bearer $JWT_TOKEN" \
  -d '{
    "name": "Top Customers by Revenue",
    "description": "Monthly revenue ranking of top 100 customers",
    "sql": "SELECT c.name, SUM(o.total) as revenue FROM customers c JOIN orders o ON c.id = o.customer_id WHERE o.order_date >= date_trunc('\''month'\'', current_date) GROUP BY c.name ORDER BY revenue DESC LIMIT 100",
    "tags": ["revenue", "customers", "monthly"],
    "isPublic": true
  }'

Browse Queries

# Get all accessible queries (own + public)
curl "http://query-engine:8080/v1/saved-queries?page=0&size=20" \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN"
 
# Get only my queries
curl "http://query-engine:8080/v1/saved-queries/my?page=0&size=20" \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN"
 
# Search queries
curl "http://query-engine:8080/v1/saved-queries/search?q=revenue&page=0&size=20" \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN"
 
# Get queries by tag
curl "http://query-engine:8080/v1/saved-queries/tag/revenue" \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN"
 
# Get most popular queries
curl "http://query-engine:8080/v1/saved-queries/popular?page=0&size=10" \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN"

Update and Delete

# Update a saved query
curl -X PUT http://query-engine:8080/v1/saved-queries/{queryId} \
  -H "Content-Type: application/json" \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN" \
  -d '{"name": "Updated Name", "sql": "...", "isPublic": false}'
 
# Delete a saved query
curl -X DELETE http://query-engine:8080/v1/saved-queries/{queryId} \
  -H "X-Tenant-ID: ..." \
  -H "X-User-ID: ..." \
  -H "Authorization: Bearer $JWT_TOKEN"

Visibility Model

VisibilityDescription
Private (isPublic: false)Only visible to the creator
Public (isPublic: true)Visible to all users in the tenant