{"openapi":"3.1.0","info":{"title":"Signal API","version":"1.0.0","description":"Client analytics for ecommerce agencies. Browser session (cookie) auth unless noted."},"servers":[{"url":"https://signalanalytics.app"}],"paths":{"/api/plans":{"get":{"summary":"List active pricing plans","security":[],"responses":{"200":{"description":"Active plans with prices and project limits"}}}},"/api/billing/status":{"get":{"summary":"Org subscription, plan and project usage (requires login)","parameters":[{"name":"orgId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Plan, subscription, usage"}}}},"/api/billing/checkout":{"post":{"summary":"Create a Stripe Checkout session to upgrade (requires org admin)","responses":{"200":{"description":"{ url } — redirect the customer"}}}},"/api/billing/portal":{"post":{"summary":"Create a Stripe customer portal session (requires org admin)","responses":{"200":{"description":"{ url } — redirect the customer"}}}},"/api/billing/cancel":{"post":{"summary":"Cancel at period end, or resume (requires org admin)","responses":{"200":{"description":"{ ok, cancelAtPeriodEnd, status }"}}}},"/api/projects":{"get":{"summary":"List projects in the caller's workspaces (requires login)","responses":{"200":{"description":"{ projects }"}}},"post":{"summary":"Create a project, subject to plan limits (requires org admin)","responses":{"200":{"description":"{ project }"}}}},"/api/orgs/members":{"get":{"summary":"List workspace members (requires membership)","responses":{"200":{"description":"{ members, invites, myRole }"}}},"post":{"summary":"Invite a teammate (requires org admin)","responses":{"200":{"description":"{ added } or { invited, link }"}}}}},"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"better-auth.session_token","description":"Session cookie from email/password sign-in at /login."}}},"security":[{"cookieAuth":[]}]}