PHPackages                             pnkt/jiravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. pnkt/jiravel

ActiveLibrary[API Development](/categories/api)

pnkt/jiravel
============

A comprehensive Laravel package for Jira integration with advanced features

v1.0.1(8mo ago)02MITPHPPHP ^8.4

Since Aug 16Pushed 8mo agoCompare

[ Source](https://github.com/pnkt-tech/jiravel)[ Packagist](https://packagist.org/packages/pnkt/jiravel)[ RSS](/packages/pnkt-jiravel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (6)Versions (3)Used By (0)

Jiravel
=======

[](#jiravel)

A Laravel package for Jira integration with comprehensive ticket management capabilities.

Installation
------------

[](#installation)

```
composer require pnkt/jiravel
```

Publish the config file:

```
php artisan vendor:publish --tag=jiravel-config
```

Configuration
-------------

[](#configuration)

Add your Jira credentials to `.env`:

```
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_USERNAME=your-email@example.com
JIRA_API_TOKEN=your-api-token
JIRA_PROJECT_KEY=PROJECT
```

Add the logging channel to `config/logging.php`:

```
'channels' => [
    'jiravel' => [
        'driver' => 'daily',
        'path' => storage_path('logs/jiravel.log'),
        'level' => env('JIRA_LOG_LEVEL', 'info'),
        'days' => 14,
    ],
],
```

Usage
-----

[](#usage)

### Basic Operations

[](#basic-operations)

```
use Pnkt\Jiravel\Facades\Jiravel;
use Pnkt\Jiravel\DataTransferObjects\TicketData;
use Pnkt\Jiravel\DataTransferObjects\CommentData;
use Pnkt\Jiravel\DataTransferObjects\StatusData;

// Get a ticket
$ticket = Jiravel::getTicket('PROJECT-123');

// Create a ticket
$ticketData = new TicketData(
    summary: 'Bug Report',
    description: 'Critical bug description',
    issueType: 'Bug',
    priority: 'High',
    assignee: 'developer@example.com'
);

$newTicket = Jiravel::createTicket($ticketData);

// Search tickets
$tickets = Jiravel::searchTickets('project = PROJECT AND type = Bug');

// Add comment
$commentData = new CommentData(
    body: 'This issue has been assigned',
    author: 'manager@example.com'
);

Jiravel::addComment('PROJECT-123', $commentData);

// Change status
$statusData = new StatusData(
    status: 'In Progress',
    comment: 'Starting work'
);

Jiravel::changeStatus('PROJECT-123', $statusData);
```

### Advanced Operations

[](#advanced-operations)

```
use Pnkt\Jiravel\DataTransferObjects\AssigneeData;
use Pnkt\Jiravel\DataTransferObjects\AttributeData;
use Pnkt\Jiravel\DataTransferObjects\DescriptionData;

// Reassign ticket
$assigneeData = new AssigneeData(assignee: 'senior-dev@example.com');
Jiravel::reassignTicket('PROJECT-123', $assigneeData);

// Change attribute
$attributeData = new AttributeData(
    attribute: 'priority',
    value: 'High'
);
Jiravel::changeAttribute('PROJECT-123', $attributeData);

// Edit description
$descriptionData = new DescriptionData(
    description: 'Updated description'
);
Jiravel::editDescription('PROJECT-123', $descriptionData);

// Get ticket history
$history = Jiravel::getTicketHistory('PROJECT-123');
```

### Using Services Directly

[](#using-services-directly)

```
use Pnkt\Jiravel\Contracts\Services\TicketServiceInterface;
use Pnkt\Jiravel\Contracts\Services\CommentServiceInterface;
use Pnkt\Jiravel\Contracts\Services\StatusServiceInterface;

$ticketService = app(TicketServiceInterface::class);
$commentService = app(CommentServiceInterface::class);
$statusService = app(StatusServiceInterface::class);

// Get available transitions
$transitions = $statusService->getAvailableTransitions('PROJECT-123');

// Get comments
$comments = $commentService->getComments('PROJECT-123');
```

### Error Handling

[](#error-handling)

```
use Pnkt\Jiravel\Exceptions\JiraException;
use Pnkt\Jiravel\Exceptions\JiraValidationException;
use Pnkt\Jiravel\Exceptions\JiraRateLimitException;

try {
    $ticket = Jiravel::getTicket('PROJECT-999');
} catch (JiraValidationException $e) {
    // Handle validation errors
    Log::warning('Validation error: ' . $e->getMessage());
} catch (JiraRateLimitException $e) {
    // Handle rate limiting
    $retryAfter = $e->retryAfter;
    Log::warning("Rate limited. Retry after {$retryAfter} seconds");
} catch (JiraException $e) {
    // Handle general Jira errors
    Log::error('Jira error: ' . $e->getMessage());
}
```

Features
--------

[](#features)

- **Ticket Management**: Create, read, update, delete tickets
- **Comments**: Add, update, delete comments
- **Status Transitions**: Change ticket status with transition support
- **Search**: Advanced search using JQL
- **History**: Get complete ticket history and changelog
- **Rate Limiting**: Built-in rate limiting (1000 requests/minute)
- **Caching**: Automatic caching for GET requests
- **Logging**: Comprehensive logging for debugging

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance58

Moderate activity, may be stable

Popularity2

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

269d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b7ce5ea4d0d23490d21a5d7828c789cef667b4fb7e9f68d0c8a7fbb73fc59ba1?d=identicon)[abdullaalsayyed](/maintainers/abdullaalsayyed)

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/pnkt-jiravel/health.svg)

```
[![Health](https://phpackages.com/badges/pnkt-jiravel/health.svg)](https://phpackages.com/packages/pnkt-jiravel)
```

###  Alternatives

[skagarwal/google-places-api

Google Places Api

1913.0M8](/packages/skagarwal-google-places-api)[dcblogdev/laravel-microsoft-graph

A Laravel Microsoft Graph API (Office365) package

168285.5k1](/packages/dcblogdev-laravel-microsoft-graph)[nickurt/laravel-postcodeapi

Universal PostcodeApi for Laravel 11.x/12.x/13.x

97221.2k](/packages/nickurt-laravel-postcodeapi)[mozex/anthropic-laravel

Anthropic PHP for Laravel is a supercharged PHP API client that allows you to interact with the Anthropic API

71226.4k1](/packages/mozex-anthropic-laravel)[jasara/php-amzn-selling-partner-api

A fluent interface for Amazon's Selling Partner API in PHP

1344.8k1](/packages/jasara-php-amzn-selling-partner-api)[grantholle/powerschool-api

A Laravel package to make interacting with PowerSchool less painful.

1715.6k1](/packages/grantholle-powerschool-api)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
