0.0
The project is in a healthy, maintained state
Cliente minimalista, sem dependencias externas, para criar issues, comentar e consultar dados no Linear (linear.app) via sua API GraphQL.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 13.0
~> 3.13
~> 3.26
 Project Readme

linear_client

Cliente Ruby puro para a API GraphQL do Linear — sem gems externas, apenas a stdlib (net/http, uri, json).

Não há SDK oficial para Ruby; este projeto preenche essa lacuna com uma interface simples para criar issues, comentar e consultar dados no Linear.

Instalação

gem install linear_client

ou no Gemfile:

gem "linear_client"

Configuração

  1. Gere uma API key pessoal no Linear em Settings > Account > Security > API keys.
  2. Exporte a chave como variável de ambiente (nunca hardcode no código):
export LINEAR_API_KEY="lin_api_xxxxxxxx"

Trate a API key como uma senha: não a compartilhe, não a commit em arquivos versionados, e revogue/gere outra se ela vazar.

Uso

require "linear_client"

client = LinearClient::Client.new
# ou, explicitamente:
client = LinearClient::Client.new(api_key: "lin_api_xxxxxxxx")

Descobrir times

client.teams
# => [{"id"=>"...", "name"=>"Engineering", "key"=>"ENG"}, ...]

Criar um card e comentar

result = client.create_issue(team_id: "TEAM_ID", title: "Bug no login", description: "Detalhes...")
issue_id = result.dig("issue", "id")

client.create_comment(issue_id: issue_id, body: "Já reproduzi, investigando.")

Listar issues atribuídas a você

client.my_issues.each { |i| puts "#{i['identifier']} [#{i['state']['name']}] #{i['title']}" }

Dados do usuário autenticado

client.viewer
# => {"name"=>"...", "email"=>"..."}

Referência da API

Método Descrição Retorno
teams Lista os times do workspace (id, name, key) Array<Hash>
viewer Nome e e-mail do dono da API key Hash
my_issues Issues atribuídas ao dono da API key, com prioridade, datas, estado e time Array<Hash>
create_issue(team_id:, title:, description: nil) Cria um card num time Hash com "success" e "issue" (id, identifier, title, url)
create_comment(issue_id:, body:) Comenta num card existente Hash com "success" e "comment" (id, url)

Todos os métodos lançam LinearClient::Client::Error se a API retornar erros GraphQL.

Testes

Suíte em RSpec, com WebMock simulando as respostas da API (nenhum teste bate na rede real):

bundle install
bundle exec rspec

Scripts de exemplo

# Lista os times e cria um card de teste no time indicado pelo key (ex: ENG)
ruby examples/create_issue.rb ENG

# Lista as issues atribuídas a você
ruby examples/my_issues.rb

# Exporta viewer + issues atribuídas para JSON
ruby examples/report.rb caminho/para/saida.json

Notas de segurança

  • A API key vai no header Authorization (sem prefixo Bearer), conforme exigido pela API do Linear.
  • Nunca dê commit em arquivos .env ou qualquer arquivo com a chave em texto puro — este repositório já ignora .env via .gitignore.

Licença

MIT