{"manifest":{"id":"gitlab","name":"GitLab","description":"Stateful GitLab GraphQL API emulator carrying GitLab's full, real schema. Introspection and validation behave exactly like gitlab.com/api/graphql; a curated set of root fields return data.","docsUrl":"https://docs.emulators.dev/gitlab","surfaces":[{"id":"graphql","kind":"graphql","title":"GitLab GraphQL API","status":"partial","basePath":"/api/graphql","notes":"Full real schema for introspection and validation. A curated set of root fields (metadata, echo) return data; currentUser is null unauthenticated."}],"auth":[{"id":"personal-access-token","title":"Personal Access Token (bearer)","type":"bearer-token","status":"partial","notes":"Accepted as an Authorization: Bearer header to match GitLab, but not yet used to resolve an authenticated identity. Unauthenticated GraphQL requests are allowed, like GitLab's public endpoint."}],"specs":[{"kind":"graphql","title":"GitLab GraphQL schema (full, real)","coverage":"generated","notes":"GitLab's complete GraphQL schema, printed to SDL from the live API. Used as is for parsing, validation, and introspection. Resolver coverage is partial and declared in the surface notes."}],"scenarios":[{"id":"default","title":"Public GraphQL endpoint","description":"Unauthenticated GitLab GraphQL surface: metadata and echo resolve, currentUser is null, and the full schema is introspectable."}],"connections":[{"id":"curl-metadata","title":"curl (metadata query)","kind":"curl","language":"bash","description":"Query instance metadata against the emulated GraphQL endpoint.","template":"curl -s -X POST {{baseUrl}}/api/graphql \\\n  -H \"content-type: application/json\" \\\n  -d '{\"query\":\"{ metadata { version revision enterprise } }\"}'"},{"id":"gitlab-env","title":"GitLab GraphQL URL (env)","kind":"env","language":"bash","description":"Point your app at the emulator instead of gitlab.com.","template":"GITLAB_GRAPHQL_URL={{baseUrl}}/api/graphql"},{"id":"graphql-request","title":"graphql-request (TypeScript)","kind":"sdk","language":"typescript","description":"Run real GraphQL queries against the emulator with graphql-request.","template":"import { GraphQLClient, gql } from \"graphql-request\";\n\nconst client = new GraphQLClient(\"{{baseUrl}}/api/graphql\");\n\nconst data = await client.request(gql`\n  query {\n    metadata {\n      version\n      enterprise\n    }\n  }\n`);"},{"id":"base-url","title":"Base URL (env)","kind":"env","language":"bash","description":"Point your SDK or app at the emulator instead of the real provider.","template":"{{SERVICE_UPPER}}_BASE_URL={{baseUrl}}"},{"id":"create-credential","title":"Create a credential","kind":"curl","language":"bash","description":"Mint a working credential for this instance.","template":"curl -s -X POST {{controlBaseUrl}}/credentials \\\n  -H \"content-type: application/json\" \\\n  -d '{\"type\":\"{{defaultAuthType}}\"}'"},{"id":"inspect-ledger","title":"Inspect requests","kind":"curl","language":"bash","description":"Read the request ledger to validate how your app called the service.","template":"curl -s {{controlBaseUrl}}/ledger"}],"resetBehavior":{"description":"Resets the instance to its seeded baseline.","reseeds":true,"clearsLedger":true,"clearsWebhooks":true},"ledger":{"description":"Recent provider requests with sensitive headers and fields redacted.","recordsFields":["timestamp","method","host","path","route","operationId","correlationId","identity","request","response","summary","sideEffects","webhookDeliveries","durationMs"],"redactsSensitive":true,"correlationId":true,"webhookDeliveries":true,"sideEffects":true,"persistent":true,"maxEntries":1000},"inspectorTabs":[{"id":"overview","title":"Overview","kind":"landing","description":"Service surfaces, base URLs, and connection snippets."},{"id":"ledger","title":"Ledger","kind":"ledger","description":"Recent provider requests recorded by the emulator."},{"id":"state","title":"State","kind":"state","description":"Current seeded and mutated instance state."},{"id":"credentials","title":"Credentials","kind":"credentials","description":"Mint tokens, API keys, or OAuth clients."},{"id":"seed","title":"Seed","kind":"seed","description":"Seed state or load a scenario."},{"id":"spec","title":"Spec","kind":"spec","description":"OpenAPI / GraphQL spec sources and coverage."}]},"instance":null,"sampleInstance":{"service":"gitlab","instance":"your-instance","baseUrl":"https://gitlab.your-instance.emulators.dev","providerBaseUrl":"https://gitlab.your-instance.emulators.dev","controlBaseUrl":"https://gitlab.your-instance.emulators.dev/_emulate"},"connections":[{"id":"curl-metadata","title":"curl (metadata query)","kind":"curl","language":"bash","description":"Query instance metadata against the emulated GraphQL endpoint.","template":"curl -s -X POST {{baseUrl}}/api/graphql \\\n  -H \"content-type: application/json\" \\\n  -d '{\"query\":\"{ metadata { version revision enterprise } }\"}'","body":"curl -s -X POST https://gitlab.your-instance.emulators.dev/api/graphql \\\n  -H \"content-type: application/json\" \\\n  -d '{\"query\":\"{ metadata { version revision enterprise } }\"}'"},{"id":"gitlab-env","title":"GitLab GraphQL URL (env)","kind":"env","language":"bash","description":"Point your app at the emulator instead of gitlab.com.","template":"GITLAB_GRAPHQL_URL={{baseUrl}}/api/graphql","body":"GITLAB_GRAPHQL_URL=https://gitlab.your-instance.emulators.dev/api/graphql"},{"id":"graphql-request","title":"graphql-request (TypeScript)","kind":"sdk","language":"typescript","description":"Run real GraphQL queries against the emulator with graphql-request.","template":"import { GraphQLClient, gql } from \"graphql-request\";\n\nconst client = new GraphQLClient(\"{{baseUrl}}/api/graphql\");\n\nconst data = await client.request(gql`\n  query {\n    metadata {\n      version\n      enterprise\n    }\n  }\n`);","body":"import { GraphQLClient, gql } from \"graphql-request\";\n\nconst client = new GraphQLClient(\"https://gitlab.your-instance.emulators.dev/api/graphql\");\n\nconst data = await client.request(gql`\n  query {\n    metadata {\n      version\n      enterprise\n    }\n  }\n`);"},{"id":"base-url","title":"Base URL (env)","kind":"env","language":"bash","description":"Point your SDK or app at the emulator instead of the real provider.","template":"{{SERVICE_UPPER}}_BASE_URL={{baseUrl}}","body":"GITLAB_BASE_URL=https://gitlab.your-instance.emulators.dev"},{"id":"create-credential","title":"Create a credential","kind":"curl","language":"bash","description":"Mint a working credential for this instance.","template":"curl -s -X POST {{controlBaseUrl}}/credentials \\\n  -H \"content-type: application/json\" \\\n  -d '{\"type\":\"{{defaultAuthType}}\"}'","body":"curl -s -X POST https://gitlab.your-instance.emulators.dev/_emulate/credentials \\\n  -H \"content-type: application/json\" \\\n  -d '{\"type\":\"bearer-token\"}'"},{"id":"inspect-ledger","title":"Inspect requests","kind":"curl","language":"bash","description":"Read the request ledger to validate how your app called the service.","template":"curl -s {{controlBaseUrl}}/ledger","body":"curl -s https://gitlab.your-instance.emulators.dev/_emulate/ledger"}]}