You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add Linear emulator
- Add a stateful Linear service with GraphQL, OAuth, webhooks, inspector, and seed support.
- Register Linear in the CLI package and default service config.
- Document the supported surface and cover it with Linear SDK conformance tests.
* Reject Linear refresh tokens for API auth
* Fix Linear strict scope enforcement
* Fix Linear issue or filters
* Fix Linear emulator edge cases
* Fix Linear emulator edge cases
* Fix Linear seed override handling
* Fix Linear SDK compatibility
* Fix Linear issue mutation validation
* Fix Linear SDK mutation compatibility
* Fix Linear OAuth Basic auth parsing
* Fix Linear GraphQL validation edge cases
* Fix Linear docs site wiring
|`service`|*(required)*| Service name: `'vercel'`, `'github'`, `'google'`, `'slack'`, `'apple'`, `'microsoft'`, or`'aws'`|
150
+
|`service`|*(required)*| Service name: `'vercel'`, `'github'`, `'google'`, `'slack'`, `'apple'`, `'microsoft'`, `'okta'`,`'aws'`, `'resend'`, `'stripe'`, `'mongoatlas'`, `'clerk'`, or `'linear'`|
145
151
|`port`|`4000`| Port for the HTTP server |
146
152
|`seed`| none | Inline seed data (same shape as YAML config) |
147
153
|`baseUrl`| none | Override advertised base URL. Per-service `baseUrl` in seed config takes highest priority, then this option, then `EMULATE_BASE_URL` env var (supports `{service}`), then `PORTLESS_URL` (supports `{service}`, automatically set by the `portless` CLI wrapper), then `http://localhost:<port>`. |
@@ -771,6 +836,35 @@ Slack scope checks are relaxed by default so local tests can use simple bearer t
771
836
772
837
Current Slack limits: Slack Connect, Enterprise Grid admin APIs, Audit Logs API, SCIM, Legal Holds, Socket Mode, slash command and interaction simulation, user groups, reminders, stars, calls, canvases, lists, functions, workflows, chat streaming, legacy `files.upload`, exact rate limiting, and paid-plan behavior are not implemented.
773
838
839
+
## Linear API
840
+
841
+
Stateful Linear GraphQL API emulation with seeded organizations, users, teams, workflow states, issues, comments, labels, projects, cycles, OAuth apps, tokens, webhooks, and basic agent sessions. GraphQL reads and writes mutate in-memory state and use Relay-style connections with opaque cursors. OAuth supports authorization code, PKCE, refresh token, revoke, client credentials, and `actor=app` tokens for local app-actor tests. Supported writes dispatch Linear-shaped webhook payloads with `Linear-Delivery`, `Linear-Event`, and `Linear-Signature` headers when webhooks are configured.
842
+
843
+
### GraphQL
844
+
845
+
- `POST /graphql`- GraphQL endpoint for queries and mutations
846
+
- `GET /graphql`- query-string GraphQL endpoint for tooling
- `POST /oauth/revoke`- revoke access or refresh tokens
856
+
857
+
OAuth app `actor` config is authoritative. Apps configured with `actor: user` use authorization code flows. Apps configured with `actor: app` use the app install flow and can request client credentials tokens.
858
+
859
+
### Webhooks And Inspector
860
+
861
+
- `webhookCreate`/ `webhookDelete` manage local webhook subscriptions
862
+
- `GET /`- tabbed local inspector for issues, teams, users, projects, agents, auth records, webhook subscriptions, and deliveries
863
+
864
+
Linear scope checks are relaxed by default so local tests can use simple bearer tokens or the seeded `lin_test_admin` token. Set `linear.strict_scopes: true` in seed config to require `read`, `write`, `issues:create`, `comments:create`, or `admin` on supported GraphQL operations.
865
+
866
+
Current Linear limits: full schema coverage, exact production rate limiting, notification inbox behavior, rich document APIs, customer APIs, initiative APIs, exact search relevance, and production agent behavior are not implemented. Agent support is a focused local-test subset.
867
+
774
868
## Apple Sign In
775
869
776
870
Sign in with Apple emulation with authorization code flow, PKCE support, RS256 ID tokens, and OIDC discovery.
@@ -954,6 +1048,7 @@ packages/
954
1048
github/ # GitHub API service
955
1049
google/ # Google OAuth 2.0 / OIDC + Gmail, Calendar, Drive
956
1050
slack/ # Slack Web API, OAuth v2, incoming webhooks
1051
+
linear/ # Linear GraphQL API, OAuth, webhooks
957
1052
apple/ # Apple Sign In / OIDC
958
1053
microsoft/ # Microsoft Entra ID OAuth 2.0 / OIDC + Graph /me
959
1054
aws/ # AWS S3, SQS, IAM, STS
@@ -975,6 +1070,8 @@ Tokens are configured in the seed config and map to users. Pass them as `Authori
975
1070
976
1071
**Slack**: All Web API endpoints require `Authorization: Bearer <token>`. Seeded OAuth apps create local installation records, and OAuth v2 flow with user picker UI creates scoped bot tokens. Optional strict scope mode returns `missing_scope` when a token lacks a required method scope.
977
1072
1073
+
**Linear**: GraphQL accepts `Authorization: Bearer <token>` or a bare personal API key value. Seeded Linear tokens map to users or app actors, OAuth apps support local authorization code and client credentials flows, and optional strict scope mode checks supported GraphQL operations.
1074
+
978
1075
**Apple**: OIDC authorization code flow with RS256 ID tokens. On first auth per user/client pair, a `user` JSON blob is included.
979
1076
980
1077
**Microsoft**: OIDC authorization code flow with PKCE support. Also supports client credentials grants. Microsoft Graph `/v1.0/me` available.
Copy file name to clipboardExpand all lines: apps/web/app/api/docs-chat/route.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ export const maxDuration = 60;
12
12
13
13
constDEFAULT_MODEL="anthropic/claude-haiku-4.5";
14
14
15
-
constSYSTEM_PROMPT=`You are a helpful documentation assistant for emulate, a local drop-in replacement for Vercel, GitHub, Google, Slack, Apple, Microsoft, AWS, Okta, MongoDB Atlas, Resend, and Stripe APIs used in CI and no-network sandboxes.
15
+
constSYSTEM_PROMPT=`You are a helpful documentation assistant for emulate, a local drop-in replacement for Vercel, GitHub, Google, Slack, Apple, Microsoft, Okta, AWS, Resend, Stripe, MongoDB Atlas, Clerk, and Linear APIs used in CI and no-network sandboxes.
16
16
17
17
emulate provides fully stateful, production-fidelity API emulation, not mocks. The CLI is installed as the "emulate" npm package and run via "npx emulate". It also supports a programmatic API via createEmulator and a Next.js adapter (@emulators/adapter-next) for embedding emulators in your app.
Connections use Relay-style cursors with `nodes`, `edges`, and `pageInfo`.
53
+
54
+
## Auth
55
+
56
+
GraphQL accepts `Authorization: Bearer <token>` or a bare personal API key value. The default seeded token is `lin_test_admin`.
57
+
58
+
Scope checks are relaxed by default. Set `linear.strict_scopes: true` to require supported operation scopes such as `read`, `write`, `issues:create`, `comments:create`, and `admin`.
59
+
60
+
## OAuth
61
+
62
+
-`GET /oauth/authorize` - authorization endpoint with local user picker
63
+
-`POST /oauth/authorize/callback` - local callback used by the user picker
-`POST /oauth/revoke` - revoke access or refresh tokens
66
+
67
+
OAuth apps can use `actor: user` or `actor: app`. The configured actor is authoritative. User actor apps use authorization code flows. App actor apps use the app install flow and can request client credentials tokens.
Create local webhook subscriptions through `webhookCreate` or seed config. Supported writes dispatch Linear-shaped payloads with these headers:
106
+
107
+
- `Linear-Delivery`
108
+
- `Linear-Event`
109
+
- `Linear-Signature`
110
+
111
+
## Inspector
112
+
113
+
- `GET /`- tabbed inspector for issues, teams, users, projects, agent sessions, OAuth apps, tokens, webhook subscriptions, and webhook deliveries
114
+
115
+
## Current Limits
116
+
117
+
Full Linear schema coverage, exact production rate limiting, notification inbox behavior, rich document APIs, customer APIs, initiative APIs, exact search relevance, and full production agent behavior are not implemented.
Copy file name to clipboardExpand all lines: apps/web/app/docs/page.mdx
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Getting Started
2
2
3
-
Local drop-in replacement for Vercel, GitHub, Google, Slack, Apple, Microsoft, AWS, Okta, MongoDB Atlas, Resend, and Stripe APIs. Built for CI and no-network sandboxes. Fully stateful, production-fidelity API emulation. Not mocks.
3
+
Local drop-in replacement for Vercel, GitHub, Google, Slack, Apple, Microsoft, Okta, AWS, Resend, Stripe, MongoDB Atlas, Clerk, and Linear APIs. Built for CI and no-network sandboxes. Fully stateful, production-fidelity API emulation. Not mocks.
4
4
5
5
## Quick Start
6
6
@@ -16,11 +16,13 @@ All services start with sensible defaults. No config file needed:
0 commit comments