blomstra / linear
An API client for Linear
0.1.6
2024-03-07 17:39 UTC
Requires
- cuyz/valinor: ^1.8
- guzzlehttp/guzzle: ^7.8
- illuminate/http: ^8
- symfony/cache: ^6.4
Requires (Dev)
- phpunit/phpunit: ^9.6
README
This is a typed PHP SDK for the Linear API. It contains functionality that would be most commonly needed when integrating with Linear, but does not expose every GraphQL endpoint.
Capabilities
Using this SDK you can:
- Create, retrieve, update, and delete issues
- Retrieve Teams
- Retrieve Projects
- Retrieve an organisation
Requirements
- PHP 8.2+
- An token from Linear (the SDK does not support OAuth 2 authentication yet)
Installation
Like all PHP packages, you can install this package using composer:
composer require blomstra/linear
Usage
Retrieve Current Organisation
use Linear\Sdk\Organization; $o = new Organization('your-token-here'); $organization = $o->get(); // $organization is now an instance of Linear\Dto\Organization $organization->name; $organization->id; $organization->urlKey
Retrieve Teams
A single team can be retrieved by ID:
use Linear\Sdk\Teams; $t = new Teams('your-token-here'); $team = $t->getOne('team-id-here'); // $team is now an instance of Linear\Dto\Team
Or all teams can be retrieved:
use Linear\Sdk\Teams; $t = new Teams('your-token-here'); $teams = $t->getAll(); // $teams is now an instance of Linear\Dto\Teams
Retrieve Projects
A single project can be retrieved by ID:
use Linear\Sdk\Projects; $p = new Projects('your-token-here'); $project = $p->getOne('project-id-here'); // $project is now an instance of Linear\Dto\Project
Or all projects can be retrieved:
use Linear\Sdk\Projects; $p = new Projects('your-token-here'); $projects = $p->getAll(); // $projects is now an instance of Linear\Dto\Projects
Issues
Retrieve an Issue
A single issue can be retrieved by ID:
use Linear\Sdk\Issues; $i = new Issues('your-token-here'); $issue = $i->getOne('issue-id-here'); // $issue is now an instance of Linear\Dto\Issue
Or all issues can be retrieved:
use Linear\Sdk\Issues; $i = new Issues('your-token-here'); $issues = $i->getAll(); // $issues is now an instance of Linear\Dto\Issues
Create an Issue
use Linear\Sdk\Issues; use Linear\Dto\Issue; use Linear\Sdk\Teams; $t = new Teams('your-token-here'); $team = $t->getAll()->nodes[0]; $i = new Issues('your-token-here'); $title = 'My new issue'; $description = 'This is a description'; $createdIssue = $i->create($title, $description, $team); // $createdIssue is now an instance of Linear\Dto\Issue
Update an Issue
use Linear\Sdk\Issues; use Linear\Dto\Issue; $i = new Issues('your-token-here'); $issue = $i->getOne('issue-id-here'); $updatedIssueDto = new Issue($issue->id, 'updated title', 'updated description'); $updatedIssue = $i->update($updatedIssue); // $updatedIssue is now an instance of Linear\Dto\Issue
Delete an Issue
use Linear\Sdk\Issues; $i = new Issues('your-token-here'); $issue = $i->getOne('issue-id-here'); $i->delete($issue); // returns true or false
Testing
Every method in this SDK is unit tested. Please see the tests/Api
folder for more details.
Sponsor
This extension was sponsored by Kagi Search, an ad free search engine
License
MIT