OSS-first docs

These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.

project-management.linear

Linear integration for issue tracking and project management workflows.

  • Type: integration (integration)
  • Version: 1.0.0
  • Owners: @platform.integrations
  • Tags: project-management, linear
  • field.key.label
    project-management.linear
    field.version.label
    1.0.0
    field.type.label
    integration (integration)
    field.title.label
    project-management.linear
    field.description.label

    Linear integration for issue tracking and project management workflows.

  • Type: integration (integration)
  • Version: 1.0.0
  • Owners: @platform.integrations
  • Tags: project-management, linear
  • field.tags.label
    project-management,linear
    field.owners.label
    @platform.integrations
    field.stability.label

    Linear integration for issue tracking and project management workflows.

    Source Definition

    export const linearIntegrationSpec = defineIntegration({
    	meta: {
    		key: 'project-management.linear',
    		version: '1.0.0',
    		category: 'project-management',
    		title: 'Linear',
    		description:
    			'Linear integration for issue tracking and project management workflows.',
    		domain: 'productivity',
    		owners: ['@platform.integrations'],
    		tags: ['project-management', 'linear'],
    		stability: StabilityEnum.Beta,
    	},
    	supportedModes: ['managed', 'byok'],
    	transports: [
    		{ type: 'rest', baseUrl: 'https://api.linear.app' },
    		{
    			type: 'webhook',
    			inbound: {
    				signatureHeader: 'linear-signature',
    				signingAlgorithm: 'hmac-sha256',
    			},
    		},
    		{ type: 'sdk', packageName: '@linear/sdk' },
    	],
    	preferredTransport: 'rest',
    	supportedAuthMethods: [
    		{ type: 'api-key' },
    		{
    			type: 'oauth2',
    			grantType: 'authorization_code',
    			authorizationUrl: 'https://linear.app/oauth/authorize',
    			tokenUrl: 'https://api.linear.app/oauth/token',
    			scopes: ['read', 'write', 'issues:create'],
    		},
    	],
    	capabilities: {
    		provides: [{ key: 'project-management.work-items', version: '1.0.0' }],
    	},
    	configSchema: {
    		schema: {
    			type: 'object',
    			required: ['teamId'],
    			properties: {
    				teamId: {
    					type: 'string',
    					description: 'Linear team ID that owns created issues.',
    				},
    				projectId: {
    					type: 'string',
    					description: 'Optional default project ID for new issues.',
    				},
    				stateId: {
    					type: 'string',
    					description: 'Optional default workflow state ID.',
    				},
    				assigneeId: {
    					type: 'string',
    					description: 'Optional default assignee ID.',
    				},
    				labelIds: {
    					type: 'array',
    					items: { type: 'string' },
    					description: 'Optional label IDs applied to each issue.',
    				},
    				tagLabelMap: {
    					type: 'object',
    					additionalProperties: { type: 'string' },
    					description:
    						'Optional mapping of tags to Linear label IDs (tag -> labelId).',
    				},
    			},
    		},
    		example: {
    			teamId: 'team_123',
    			projectId: 'proj_456',
    			labelIds: ['label_1', 'label_2'],
    		},
    	},
    	secretSchema: {
    		schema: {
    			type: 'object',
    			required: ['apiKey'],
    			properties: {
    				apiKey: {
    					type: 'string',
    					description: 'Linear API key (personal or service token).',
    				},
    			},
    		},
    		example: {
    			apiKey: 'lin_api_key',
    		},
    	},
    	healthCheck: {
    		method: 'custom',
    		timeoutMs: 4000,
    	},
    	docsUrl: 'https://developers.linear.app',
    	constraints: {},
    	byokSetup: {
    		setupInstructions:
    			'Create a Linear API key with issue:write permission and store it as a secret.',
    		keyRotationSupported: true,
    		quotaTrackingSupported: false,
    	},
    });