Schematic · JSON Structure

Schematic Api Structure

Document structure for the Schematic feature and entitlement management API.

Type: Properties: 0
BillingEntitlementsFeature FlagsFeature ManagementFinOpsMeteringPricingSaaS

Schematic Api Structure is a JSON Structure definition published by Schematic.

Meta-schema:

JSON Structure

Raw ↑
{
  "title": "Schematic API Structure",
  "description": "Document structure for the Schematic feature and entitlement management API.",
  "baseUrl": "https://api.schematichq.com",
  "authentication": {
    "type": "API Key",
    "header": "X-Schematic-Api-Key",
    "key_prefixes": {
      "production": "sch_prod_",
      "staging": "sch_stag_",
      "development": "sch_dev_"
    },
    "key_types": ["secret", "publishable", "readonly"]
  },
  "resource_groups": {
    "account": {
      "description": "Account members, API keys, and environments",
      "endpoints": [
        "GET /account-members",
        "GET /api-keys",
        "POST /api-keys",
        "PUT /api-keys/{id}",
        "DELETE /api-keys/{id}"
      ]
    },
    "companies": {
      "description": "Customer organization management",
      "endpoints": [
        "GET /companies",
        "POST /companies (upsert)",
        "POST /companies/create",
        "GET /companies/{id}",
        "DELETE /companies/{id}",
        "GET /companies/lookup",
        "POST /company-traits"
      ]
    },
    "users": {
      "description": "Individual user management",
      "endpoints": [
        "GET /users",
        "POST /users (upsert)",
        "POST /users/create",
        "GET /users/{id}",
        "DELETE /users/{id}",
        "GET /users/lookup",
        "POST /user-traits"
      ]
    },
    "features": {
      "description": "Product feature definitions",
      "endpoints": [
        "GET /features",
        "POST /features",
        "GET /features/{id}",
        "PUT /features/{id}",
        "DELETE /features/{id}"
      ]
    },
    "flags": {
      "description": "Feature flags with rule-based evaluation",
      "endpoints": [
        "GET /flags",
        "POST /flags",
        "POST /flags/check (single)",
        "POST /flags/check-bulk",
        "POST /flags/{key}/check",
        "PUT /flags/{id}/rules",
        "GET /flags/{id}",
        "PUT /flags/{id}",
        "DELETE /flags/{id}"
      ]
    },
    "plans": {
      "description": "Subscription plan management",
      "endpoints": [
        "GET /plans",
        "POST /plans",
        "GET /plans/{id}",
        "PUT /plans/{id}",
        "DELETE /plans/{id}",
        "PUT /plans/version/{id}/publish"
      ]
    },
    "entitlements": {
      "description": "Plan and company entitlement management",
      "endpoints": [
        "GET /plan-entitlements",
        "POST /plan-entitlements",
        "GET /company-overrides",
        "POST /company-overrides",
        "PUT /company-overrides/{id}",
        "DELETE /company-overrides/{id}"
      ]
    },
    "billing": {
      "description": "Stripe and billing provider integration",
      "endpoints": [
        "POST /billing/customer/upsert",
        "POST /billing/subscription/upsert",
        "POST /billing/product/upsert",
        "POST /billing/price/upsert",
        "GET /billing/products",
        "GET /billing/credits",
        "POST /billing/credits"
      ]
    },
    "events": {
      "description": "Usage event tracking",
      "endpoints": [
        "POST /events",
        "POST /events/batch",
        "GET /events"
      ]
    },
    "webhooks": {
      "description": "Outbound webhook configuration",
      "endpoints": [
        "GET /webhooks",
        "POST /webhooks",
        "GET /webhooks/{id}",
        "PUT /webhooks/{id}",
        "DELETE /webhooks/{id}",
        "GET /webhook-events"
      ]
    },
    "insights": {
      "description": "Usage analytics and reporting",
      "endpoints": [
        "GET /insights/summary",
        "GET /insights/activity",
        "GET /insights/plan-growth",
        "GET /insights/top-features",
        "GET /insights/feature-usage-timeseries"
      ]
    }
  },
  "common_patterns": {
    "upsert": "POST with keys object to create-or-update by external identifiers",
    "list": "GET returning paginated array with limit/offset params",
    "count": "GET /resource/count returning total count",
    "lookup": "GET /resource/lookup?key=val for key-based lookup",
    "pagination": {
      "limit": "integer: items per page",
      "offset": "integer: items to skip"
    }
  }
}