Kumiho FastAPI

User Guide

  • Getting started
    • Run locally
    • Making requests
  • Authentication
    • Dual-token model
      • Why two tokens?
    • Local testing
  • Error handling
    • Correlation ID
      • Access logs
    • OpenTelemetry (recommended)
      • Enable
      • Export
      • Excluding noisy endpoints
    • Standard error envelope
      • Retry behavior
    • Validation errors (422)
    • Sensitive details
    • Idempotency

API

  • Endpoints
  • Endpoints
    • artifacts
    • attributes
    • blog
    • bundles
    • default
    • edges
    • events
    • graph
    • items
    • mcp
    • projects
    • resolve
    • revisions
    • spaces
    • tenant
  • Module Reference
    • app.main
      • lifespan()
      • healthz()
      • root()
    • app.dependencies
      • TenantContext
        • TenantContext.auth_token
        • TenantContext.expires_at
        • TenantContext.tenant_id
        • TenantContext.tenant_slug
        • TenantContext.tenant_tier
        • TenantContext.region_code
        • TenantContext.neo4j_db_name
        • TenantContext.guardrails
        • TenantContext.roles
        • TenantContext.server_url
        • TenantContext.grpc_authority
        • TenantContext.preferred_target()
      • ensure_tenant_context()
      • get_user_token()
      • get_kumiho_client()
      • require_user_token()
    • app.auth_utils
      • CurrentUser
      • get_current_user()
      • require_authenticated_user()
    • app.rate_limit
      • RateLimitMiddleware
        • RateLimitMiddleware.dispatch()
    • app.core.projects
      • list_projects()
      • create_project()
      • get_project()
      • update_project()
      • delete_project()
    • app.core.spaces
      • list_spaces()
      • create_space()
      • get_space()
      • update_space_metadata()
      • delete_space()
    • app.core.items
      • list_items()
      • search_items()
      • fulltext_search()
      • create_item()
      • get_item_by_kref()
      • get_item_by_path()
      • update_item_metadata()
      • delete_item()
      • deprecate_item()
    • app.core.revisions
      • list_revisions()
      • create_revision()
      • get_revision()
      • get_latest_revision()
      • peek_next_revision()
      • update_revision_metadata()
      • delete_revision()
      • deprecate_revision()
      • tag_revision()
      • untag_revision()
      • has_tag()
      • was_tagged()
      • get_revision_as_of()
    • app.core.artifacts
      • list_artifacts()
      • get_artifacts_by_location()
      • create_artifact()
      • get_artifact()
      • update_artifact_metadata()
      • delete_artifact()
      • deprecate_artifact()
    • app.core.edges
      • list_edges()
      • create_edge()
      • delete_edge()
    • app.core.tenant
      • UserInfo
        • UserInfo.email
        • UserInfo.id
        • UserInfo.model_config
      • BootstrapResponse
        • BootstrapResponse.tenant_id
        • BootstrapResponse.project_names
        • BootstrapResponse.anonymous_allowed
        • BootstrapResponse.model_config
      • TenantUsageResponse
        • TenantUsageResponse.tenant_id
        • TenantUsageResponse.node_count
        • TenantUsageResponse.node_limit
        • TenantUsageResponse.model_config
      • bootstrap()
      • whoami()
      • get_tenant_usage()
    • app.core.resolve
      • ResolveResponse
        • ResolveResponse.kref
        • ResolveResponse.location
        • ResolveResponse.resolved_revision
        • ResolveResponse.resolved_artifact
        • ResolveResponse.model_config
      • ResolveRevisionResponse
        • ResolveRevisionResponse.revision
        • ResolveRevisionResponse.found
        • ResolveRevisionResponse.model_config
      • resolve_kref()
      • resolve_kref_to_revision()
    • app.apps.blog.router
      • router
    • app.apps.blog.services
      • load_blog_settings()
      • get_post_item_kind()
      • allow_public_read()
      • resolve_project_name()
      • get_or_create_space_hierarchy()
      • get_cached_settings()
      • set_cached_settings()
      • generate_slug()
      • build_default_settings()
      • ensure_blog_project()
    • app.apps.blog.models
      • BlogPostMetadata
        • BlogPostMetadata.title
        • BlogPostMetadata.author
        • BlogPostMetadata.date
        • BlogPostMetadata.content
        • BlogPostMetadata.model_config
      • BlogPostSEO
        • BlogPostSEO.title
        • BlogPostSEO.description
        • BlogPostSEO.image
        • BlogPostSEO.canonical_url
        • BlogPostSEO.keywords
        • BlogPostSEO.noindex
        • BlogPostSEO.model_config
      • BlogPostMedia
        • BlogPostMedia.name
        • BlogPostMedia.url
        • BlogPostMedia.content_type
        • BlogPostMedia.model_config
      • BlogPostCreate
        • BlogPostCreate.title
        • BlogPostCreate.content
        • BlogPostCreate.space_path
        • BlogPostCreate.author
        • BlogPostCreate.tags
        • BlogPostCreate.media
        • BlogPostCreate.seo
        • BlogPostCreate.model_config
      • BlogPostResponse
        • BlogPostResponse.kref
        • BlogPostResponse.slug
        • BlogPostResponse.title
        • BlogPostResponse.author
        • BlogPostResponse.date
        • BlogPostResponse.content
        • BlogPostResponse.tags
        • BlogPostResponse.revision
        • BlogPostResponse.revisions
        • BlogPostResponse.published
        • BlogPostResponse.space_path
        • BlogPostResponse.media
        • BlogPostResponse.seo
        • BlogPostResponse.model_config
      • BlogSettings
        • BlogSettings.project_name
        • BlogSettings.post_item_kind
        • BlogSettings.pagination_count
        • BlogSettings.display_type
        • BlogSettings.display_category_filters
        • BlogSettings.allow_public
        • BlogSettings.model_config

Deployment

  • Cloudflare Worker Edge Cache
    • Prerequisites
    • Configure
    • Deploy
    • Cache Behavior
    • Verify
  • Deploying kumiho-FastAPI to Google Cloud Run & Cloudflare Edge
    • Architecture
    • Prerequisites
    • CI/CD with GitHub Actions
      • Required GitHub Secrets
    • Step-by-Step GCP Setup (Workload Identity Federation)
      • 1. Create Service Account
      • 2. Grant Required Roles
      • 3. Configure Workload Identity Federation
    • Cloudflare Setup
      • 1. DNS Configuration
      • 2. Worker Configuration
    • Manual Deployment (Emergency Only)
      • 1. Build and Push Origin
      • 2. Deploy Origin
      • 3. Deploy Worker
      • View Metrics
    • Rollback
    • Cost Optimization
    • Troubleshooting
      • Cold Start Latency
      • Container Fails to Start
      • Permission Denied
Kumiho FastAPI
  • Kumiho FastAPI
  • View page source

Kumiho FastAPI

Stateless, multi-tenant SaaS API for Kumiho

This service is a thin FastAPI layer that authenticates requests (dual-token model) and forwards operations to the Kumiho data plane.

Contents

User Guide

  • Getting started
    • Run locally
    • Making requests
  • Authentication
    • Dual-token model
    • Local testing
  • Error handling
    • Correlation ID
    • OpenTelemetry (recommended)
    • Standard error envelope
    • Validation errors (422)
    • Sensitive details
    • Idempotency

API

  • Endpoints
  • Endpoints
    • artifacts
    • attributes
    • blog
    • bundles
    • default
    • edges
    • events
    • graph
    • items
    • mcp
    • projects
    • resolve
    • revisions
    • spaces
    • tenant
  • Module Reference
    • app.main
    • app.dependencies
    • app.auth_utils
    • app.rate_limit
    • app.core.projects
    • app.core.spaces
    • app.core.items
    • app.core.revisions
    • app.core.artifacts
    • app.core.edges
    • app.core.tenant
    • app.core.resolve
    • app.apps.blog.router
    • app.apps.blog.services
    • app.apps.blog.models

Deployment

  • Cloudflare Worker Edge Cache
  • Deploying kumiho-FastAPI to Google Cloud Run & Cloudflare Edge

Indices and tables

  • Index

  • Search Page

Next

© Copyright 2025, Kumiho Clouds.

Built with Sphinx using a theme provided by Read the Docs.