Skip to content

feat: add project_label stream#30

Merged
igorsechyn merged 2 commits intolinear:mainfrom
grawinkel:feat/add-project-label-stream
Apr 29, 2026
Merged

feat: add project_label stream#30
igorsechyn merged 2 commits intolinear:mainfrom
grawinkel:feat/add-project-label-stream

Conversation

@grawinkel
Copy link
Copy Markdown
Contributor

Summary

Adds support for syncing project labels from Linear, following the existing pattern used by issue_label and other streams.

Linear's export API supports the projectlabel entity type, but the connector currently doesn't expose it as a stream. This PR adds it.

Changes

File Change
src/client/types.ts Add ProjectLabel interface
src/client/LinearClient.ts Add projectLabels() method + "projectlabel" entity type
src/streams/projectLabel.ts New stream class (same pattern as issueLabel.ts)
resources/schemas/projectLabel.json JSON schema for ProjectLabel
src/index.ts Register ProjectLabel stream

Schema

The ProjectLabel model mirrors IssueLabel but without teamId and organizationId:

interface ProjectLabel {
  id?: string;
  createdAt?: string;
  updatedAt?: string;
  archivedAt?: null | string;
  name?: string;
  description?: null | string;
  color?: string;
  creatorId?: null | string;
}

Context

We use this connector to sync Linear data into BigQuery via Airbyte. We need project_label to join project labels with projects for reporting and analytics. The Linear GraphQL API exposes projectLabels as a top-level query, and the export API should support projectlabel as an entity type.

Adds support for syncing project labels from Linear, following the
same pattern as the existing issue_label stream.

Changes:
- Add ProjectLabel type to client/types.ts
- Add projectLabels() method and "projectlabel" entity type to LinearClient
- Add ProjectLabel stream class (src/streams/projectLabel.ts)
- Add projectLabel.json schema (resources/schemas/)
- Register ProjectLabel stream in index.ts
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Airbyte stream to sync project labels from Linear’s export API, following the existing stream/client/schema patterns used for other Linear entities.

Changes:

  • Add ProjectLabel model type and LinearClient.projectLabels() fetch method (plus projectlabel entity type).
  • Introduce ProjectLabel stream and its JSON schema.
  • Register the new stream in the source so it appears in discovery and can be synced.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/streams/projectLabel.ts New stream implementation to read projectlabel entities via LinearClient.
src/index.ts Registers ProjectLabel stream in the source’s stream list.
src/client/types.ts Adds ProjectLabel interface used by client/stream typing.
src/client/LinearClient.ts Adds projectlabel to supported entity types and implements projectLabels() accessor.
resources/schemas/projectLabel.json Adds JSON schema for the project_label stream records.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/index.ts
new EntityExternalLink(this.logger, client),
new Project(this.logger, client),
new ProjectStatus(this.logger, client),
new ProjectLabel(this.logger, client),
Copy link
Copy Markdown
Collaborator

@igorsechyn igorsechyn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you for submitting this 🙏 i tested this locally and it is working. can you please add this block

    {
      "stream": {
        "name": "project_label",
        "json_schema": {},
        "supported_sync_modes": ["full_refresh"],
        "source_defined_cursor": true,
        "source_defined_primary_key": [["id"]]
      },
      "sync_mode": "full_refresh",
      "destination_sync_mode": "overwrite"
    },

in full_configured_catalog.json to cover this path in integration testing

@grawinkel grawinkel requested a review from igorsechyn April 28, 2026 15:51
@igorsechyn igorsechyn merged commit bf74985 into linear:main Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants