2017 © Pedro Peláez
 

library php-jira-rest-client

JIRA REST API Client for PHP Users.

image

lesstif/php-jira-rest-client

JIRA REST API Client for PHP Users.

  • Saturday, July 28, 2018
  • by lesstif
  • Repository
  • 13 Watchers
  • 190 Stars
  • 234,581 Installations
  • PHP
  • 7 Dependents
  • 0 Suggesters
  • 107 Forks
  • 7 Open issues
  • 100 Versions
  • 22 % Grown

The README.md

PHP JIRA Rest Client

Latest Stable Version Latest Unstable Version Build Status StyleCI Scrutinizer Code Quality Coverage Status License Total Downloads Monthly Downloads Daily Downloads, (*1)

On-Premise only

If you want to interact with Jira cloud instead of On-Premise(Server, Data Center), check out this repository., (*2)

From version >= 5.0.0 of this repository this project is only using V2 of the Jira rest API, to use V3 check out this repository., (*3)

Requirements

Installation

  1. Download and Install PHP Composer., (*4)

    sh curl -sS https://getcomposer.org/installer | php, (*5)

  2. Next, run the Composer command to install the latest version of php jira rest client. ``` sh php composer.phar require lesstif/php-jira-rest-client, (*6)

    or add the following to your composer.json file.
    ```json
    {
       "require": {
           "lesstif/php-jira-rest-client": "^5.0"
       }
    }
    
  3. Then run Composer's install or update commands to complete installation., (*7)

    php composer.phar install
    
  4. After installing, you need to require Composer's autoloader:, (*8)

    require 'vendor/autoload.php';
    

Laravel: Once installed, if you are not using automatic package discovery, then you need to register the JiraRestApi\JiraRestApiServiceProvider service provider in your config/app.php., (*9)

Configuration

you can choose loads environment variables either 'dotenv' or 'array'., (*10)

use dotenv

If you want to use Dotenv based configuration,first of all, you have to install dependency., (*11)

composer require vlucas/phpdotenv

then copy .env.example file to .env on your project root., (*12)

JIRA_HOST='https://your-jira.host.com'
JIRA_USER='jira-username'
JIRA_PASS='jira-password-OR-api-token'
# if TOKEN_BASED_AUTH set to true, ignore JIRA_USER and JIRA_PASS.
TOKEN_BASED_AUTH=true
PERSONAL_ACCESS_TOKEN='your-access-token-here'
# to enable session cookie authorization
# COOKIE_AUTH_ENABLED=true
# COOKIE_FILE=storage/jira-cookie.txt
# if you are behind a proxy, add proxy settings
PROXY_SERVER='your-proxy-server'
PROXY_PORT='proxy-port'
PROXY_USER='proxy-username'
PROXY_PASSWORD='proxy-password'

Important Note: As of March 15, 2018, in accordance to the Atlassian REST API Policy, Basic auth with password to be deprecated. Instead of password, you should using API token., (*13)

Laravel Users: If you are developing with laravel framework(5.x), you must append above configuration to your application .env file., (*14)

use array

create Service class with ArrayConfiguration parameter., (*15)

use JiraRestApi\Configuration\ArrayConfiguration;
use JiraRestApi\Issue\IssueService;

$iss = new IssueService(new ArrayConfiguration(
          [
               'jiraHost' => 'https://your-jira.host.com',
                // Basic authentication deprecated 
                /*                 
                 'jiraUser' => 'jira-username',
                'jiraPassword' => 'jira-password-OR-api-token',
                */
               // instead,you can use the token based authentication. 
               'useTokenBasedAuth' => true,
               'personalAccessToken' => 'your-token-here',

                // custom log config
               'jiraLogEnabled' => true,
               'jiraLogFile' => "my-jira-rest-client.log",
               'jiraLogLevel' => 'INFO',

               // to enable session cookie authorization (with basic authorization only)
               'cookieAuthEnabled' => true,
               'cookieFile' => storage_path('jira-cookie.txt'),
               // if you are behind a proxy, add proxy settings
               'proxyServer' => 'your-proxy-server',
               'proxyPort' => 'proxy-port',
               'proxyUser' => 'proxy-username',
               'proxyPassword' => 'proxy-password',
          ]
   ));

Usage

Table of Contents

Project

Custom Field

Issue

Comment

User

Group

Priority

Attachment

Version

Component

Board

Epic

Create Project

Create a new project., (*16)

See Jira API reference, (*17)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\Project\Project;
use JiraRestApi\JiraException;

try {
    $p = new Project();

    $p->setKey('EX')
        ->setName('Example')
        ->setProjectTypeKey('business')
        ->setProjectTemplateKey('com.atlassian.jira-core-project-templates:jira-core-project-management')
        ->setDescription('Example Project description')
        ->setLeadName('lesstif')
        ->setUrl('http://example.com')
        ->setAssigneeType('PROJECT_LEAD')
        ->setAvatarId(10130)
        ->setIssueSecurityScheme(10000)
        ->setPermissionScheme(10100)
        ->setNotificationScheme(10100)
        ->setCategoryId(10100)
    ;

    $proj = new ProjectService();

    $pj = $proj->createProject($p);

    // 'http://example.com/rest/api/2/project/10042'
    var_dump($pj->self);
    // 10042 
    var_dump($pj->id);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Update Project

Update a project. Only non null values sent in JSON will be updated in the project., (*18)

Values available for the assigneeType field are: 'PROJECT_LEAD' and 'UNASSIGNED'., (*19)

See Jira API reference, (*20)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\Project\Project;
use JiraRestApi\JiraException;

try {
    $p = new Project();

    $p->setName('Updated Example')
        ->setProjectTypeKey('software')
        ->setProjectTemplateKey('com.atlassian.jira-software-project-templates:jira-software-project-management')
        ->setDescription('Updated Example Project description')
        ->setLead('new-leader')
        ->setUrl('http://new.example.com')
        ->setAssigneeType('UNASSIGNED')
    ;

    $proj = new ProjectService();

    $pj = $proj->updateProject($p, 'EX');

    var_dump($pj);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Delete Project

Deletes a project., (*21)

See Jira API reference, (*22)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $proj = new ProjectService();

    $pj = $proj->deleteProject('EX');

    var_dump($pj);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Project Info

See Jira API reference, (*23)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $proj = new ProjectService();

    $p = $proj->get('TEST');

    var_dump($p);           
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get All Project list

See Jira API reference, (*24)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $proj = new ProjectService();

    $prjs = $proj->getAllProjects();

    foreach ($prjs as $p) {
        echo sprintf('Project Key:%s, Id:%s, Name:%s, projectCategory: %s\n',
            $p->key, $p->id, $p->name, $p->projectCategory['name']
        );          
    }           
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Project Components

See Jira API reference (Get project components), (*25)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $proj = new ProjectService();

    $prjs = $proj->getAllProjects();

    // Extract and show Project Components for every Jira Project
    foreach ($prjs as $p) {
        var_export($proj->getProjectComponents($p->id));
    }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Project type

See Jira API reference (get all types), (*26)

See Jira API reference (get type), (*27)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $proj = new ProjectService();

    // get all project type
    $prjtyps = $proj->getProjectTypes();

    foreach ($prjtyps as $pt) {
        var_dump($pt);
    }

    // get specific project type.
    $pt = $proj->getProjectType('software');
    var_dump($pt);

} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Project Version

get all project's versions., (*28)

See Jira API reference, (*29)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $proj = new ProjectService();

    $vers = $proj->getVersions('TEST');

    foreach ($vers as $v) {
        // $v is  JiraRestApi\Issue\Version
        var_dump($v);
    }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

or get pagenated project's versions., (*30)

See Jira API reference, (*31)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $param = [
        'startAt' => 0,
        'maxResults' => 10,
        'orderBy' => 'name',
        //'expand' => null,
    ];

    $proj = new ProjectService();

    $vers = $proj->getVersionsPagenated('TEST', $param);

    foreach ($vers as $v) {
        // $v is  JiraRestApi\Issue\Version
        var_dump($v);
    }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get All Field List

See Jira API reference, (*32)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Field\Field;
use JiraRestApi\Field\FieldService;
use JiraRestApi\JiraException;

try {
    $fieldService = new FieldService();

    // return custom field only. 
    $ret = $fieldService->getAllFields(Field::CUSTOM); 

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}

Create Custom Field

See Jira API reference, (*33)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Field\Field;
use JiraRestApi\Field\FieldService;
use JiraRestApi\JiraException;

try {
    $field = new Field();

    $field->setName('New custom field')
            ->setDescription('Custom field for picking groups')
            ->setType('com.atlassian.jira.plugin.system.customfieldtypes:grouppicker')
            ->setSearcherKey('com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher');

    $fieldService = new FieldService();

    $ret = $fieldService->create($field);

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Field Create Failed : '.$e->getMessage());
}

If you need a list of custom field types(ex. com.atlassian.jira.plugin.system.customfieldtypes:grouppicker) , check out Get All Field list., (*34)

Get Issue Info

See Jira API reference, (*35)

Returns a full representation of the issue for the given issue key., (*36)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

try {
    $issueService = new IssueService();

    $queryParam = [
        'fields' => [  // default: '*all'
            'summary',
            'comment',
        ],
        'expand' => [
            'renderedFields',
            'names',
            'schema',
            'transitions',
            'operations',
            'editmeta',
            'changelog',
        ]
    ];

    $issue = $issueService->get('TEST-867', $queryParam);

    var_dump($issue->fields);   
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

You can access the custom field associated with issue through $issue->fields->customFields array or through direct custom field id variables(Ex: $issue->fields->customfield_10300)., (*37)

Create Issue

See Jira API reference, (*38)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
use JiraRestApi\JiraException;

try {
    $issueField = new IssueField();

    $issueField->setProjectKey('TEST')
                ->setSummary('something\'s wrong')
                ->setAssigneeNameAsString('lesstif')
                ->setPriorityNameAsString('Critical')
                ->setIssueTypeAsString('Bug')
                ->setDescription('Full description for issue')
                ->addVersionAsString('1.0.1')
                ->addVersionAsArray(['1.0.2', '1.0.3'])
                ->addComponentsAsArray(['Component-1', 'Component-2'])
                // set issue security if you need.
                ->setSecurityId(10001 /* security scheme id */)
                ->setDueDateAsString('2023-06-19')
                // or you can use DateTimeInterface
                //->setDueDateAsDateTime(
                //            (new DateTime('NOW'))->add(DateInterval::createFromDateString('1 month 5 day'))
                // )
            ;

    $issueService = new IssueService();

    $ret = $issueService->create($issueField);

    //If success, Returns a link to the created issue.
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

If you want to set custom field, you can call the addCustomField function with custom field id and value as parameters., (*39)

try {
    $issueField = new IssueField();

    $issueField->setProjectKey('TEST')
                ->setSummary('something\'s wrong')
                ->setAssigneeNameAsString('lesstif')
                ->setPriorityNameAsString('Critical')
                ->setIssueTypeAsString('Bug')
                ->setDescription('Full description for issue')
                ->addVersion('1.0.1')
                ->addVersion('1.0.3')
                ->addCustomField('customfield_10100', 'text area body text') // String type custom field
                ->addCustomField('customfield_10200', ['value' => 'Linux']) // Select List (single choice)
                ->addCustomField('customfield_10408', [
                    ['value' => 'opt2'], ['value' => 'opt4']
                ]) // Select List (multiple choice)
    ;

    $issueService = new IssueService();

    $ret = $issueService->create($issueField);

    //If success, Returns a link to the created issue.
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Currently, not tested for all custom field types., (*40)

Create Multiple Issues

See Jira API reference, (*41)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
use JiraRestApi\JiraException;

try {
    $issueFieldOne = new IssueField();

    $issueFieldOne->setProjectKey('TEST')
                ->setSummary('something\'s wrong')
                ->setPriorityNameAsString('Critical')
                ->setIssueTypeAsString('Bug')
                ->setDescription('Full description for issue');

    $issueFieldTwo = new IssueField();

    $issueFieldTwo->setProjectKey('TEST')
                ->setSummary('something else is wrong')
                ->setPriorityNameAsString('Critical')
                ->setIssueTypeAsString('Bug')
                ->setDescription('Full description for second issue');

    $issueService = new IssueService();

    $ret = $issueService->createMultiple([$issueFieldOne, $issueFieldTwo]);

    //If success, returns an array of the created issues
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Create Sub Task

See Jira API reference, (*42)

Creating a sub-task is similar to creating a regular issue, with two important method calls:, (*43)

->setIssueTypeAsString('Sub-task')
->setParentKeyOrId($issueKeyOrId)

for example ​, (*44)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
use JiraRestApi\JiraException;

try {
    $issueField = new IssueField();

    $issueField->setProjectKey('TEST')
                ->setSummary('something\'s wrong')
                ->setAssigneeNameAsString('lesstif')
                ->setPriorityNameAsString('Critical')
                ->setDescription('Full description for issue')
                ->addVersion('1.0.1')
                ->addVersion('1.0.3')
                ->setIssueTypeAsString('Sub-task')  //issue type must be Sub-task
                ->setParentKeyOrId('TEST-143')  //Issue Key
    ;

    $issueService = new IssueService();

    $ret = $issueService->create($issueField);

    //If success, Returns a link to the created sub task.
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

If you want to set custom field, you can call the addCustomField function with custom field id and value as parameters., (*45)

try {
    $issueField = new IssueField();

    $issueField->setProjectKey('TEST')
                ->setSummary('something\'s wrong')
                ->setAssigneeNameAsString('lesstif')
                ->setPriorityNameAsString('Critical')
                ->setIssueTypeAsString('Bug')
                ->setDescription('Full description for issue')
                ->addVersion('1.0.1')
                ->addVersion('1.0.3')
                ->addCustomField('customfield_10100', 'text area body text') // String type custom field
                ->addCustomField('customfield_10200', ['value' => 'Linux']) // Select List (single choice)
                ->addCustomField('customfield_10408', [
                    ['value' => 'opt2'], ['value' => 'opt4']
                ]) // Select List (multiple choice)
    ;

    $issueService = new IssueService();

    $ret = $issueService->create($issueField);

    //If success, Returns a link to the created issue.
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Currently, not tested for all custom field types., (*46)

Add Attachment

See Jira API reference, (*47)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $issueService = new IssueService();

    // multiple file upload support.
    $ret = $issueService->addAttachments($issueKey, 
        ['screen_capture.png', 'bug-description.pdf', 'README.md']
    );

    print_r($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'Attach Failed : ' . $e->getMessage());
}

Update issue

See Jira API reference, (*48)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {           
    $issueField = new IssueField(true);

    $issueField->setAssigneeNameAsString('admin')
                ->setPriorityNameAsString('Blocker')
                ->setIssueTypeAsString('Task')
                ->addLabel('test-label-first')
                ->addLabel('test-label-second')
                ->addVersion('1.0.1')
                ->addVersion('1.0.2')
                ->setDescription('This is a shorthand for a set operation on the summary field')
    ;

    // optionally set some query params
    $editParams = [
        'notifyUsers' => false,
    ];

    $issueService = new IssueService();

    // You can set the $paramArray param to disable notifications in example
    $ret = $issueService->update($issueKey, $issueField, $editParams);

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'update Failed : ' . $e->getMessage());
}

If you want to change the custom field type when updating an issue, you can call the addCustomField function just as you did for creating issue., (*49)

Update labels

This function is a convenient wrapper for add or remove label in the issue., (*50)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

try {
    $issueKey = 'TEST-123';

    $issueService = new IssueService();

    $addLabels = [
        'triaged', 'customer-request', 'sales-request'
    ];

    $removeLabel = [
        'will-be-remove', 'this-label-is-typo'
    ];

    $ret = $issueService->updateLabels($issueKey,
            $addLabels,
            $removeLabel,
            $notifyUsers = false
        );

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'updateLabels Failed : '.$e->getMessage());
}
Update fix versions

This function is a convenient wrapper for add or remove fix version in the issue., (*51)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

try {
    $issueKey = 'TEST-123';

    $issueService = new IssueService();

    $addVersions = [
        '1.1.1', 'named-version'
    ];

    $removeVersions = [
        '1.1.0', 'old-version'
    ];

    $ret = $issueService->updateFixVersions($issueKey,
            $addVersions,
            $removeVersions,
            $notifyUsers = false
        );

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'updateFixVersions Failed : '.$e->getMessage());
}

Change Assignee

See Jira API reference, (*52)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $issueService = new IssueService();

    // if assignee is -1, automatic assignee used.
    // A null assignee will remove the assignee.
    $assignee = 'newAssigneeName';

    $ret = $issueService->changeAssignee($issueKey, $assignee);

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'Change Assignee Failed : ' . $e->getMessage());
}
<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $issueService = new IssueService();

    $accountId = 'usre-account-id';

    $ret = $issueService->changeAssigneeByAccountId($issueKey, $accountId);

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'Change Assignee Failed : ' . $e->getMessage());
}

Remove Issue

See Jira API reference, (*53)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $issueService = new IssueService();

    $ret = $issueService->deleteIssue($issueKey);
    // if you want to delete issues with sub-tasks
    //$ret = $issueService->deleteIssue($issueKey, array('deleteSubtasks' => 'true'));

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'Remove Issue Failed : ' . $e->getMessage());
}

Read property

See Jira API reference, (*54)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = "TEST-879";

try {
    $issueService = new IssueService();
    $property = $issueService->getProperty($issueKey, 'com.railsware.SmartChecklist.checklist');

    var_dump($property);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Write property

See Jira API reference, (*55)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Property;
use JiraRestApi\JiraException;

$issueKey = "TEST-879";

try {
    $issueService = new IssueService();
    $property = new Property();
    $property->value = "- First entry\n- second entry";
    $issueService->setProperty($issueKey, $property);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Add comment

See Jira API reference, (*56)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Comment;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {           
    $comment = new Comment();

    $body = <<<COMMENT
Adds a new comment to an issue.
* Bullet 1
* Bullet 2
** sub Bullet 1
** sub Bullet 2
* Bullet 3
COMMENT;

    $comment->setBody($body)
        ->setVisibilityAsString('role', 'Users');
    ;

    $issueService = new IssueService();
    $ret = $issueService->addComment($issueKey, $comment);
    print_r($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'add Comment Failed : ' . $e->getMessage());
}

Get comment

See Jira API reference, (*57)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $issueService = new IssueService();

    $param = [
         'startAt' => 0, 
         'maxResults' => 3,
         'expand' => 'renderedBody',
    ];

    $comments = $issueService->getComments($issueKey, $param);

    var_dump($comments);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'get Comment Failed : '.$e->getMessage());
}

get comment by comment id, (*58)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $issueService = new IssueService();

    $param = [
         'startAt' => 0, 
         'maxResults' => 3,
         'expand' => 'renderedBody',
    ];
    $commentId = 13805;

    $comments = $issueService->getComment($issueKey, $commentId, $param);

    var_dump($comments);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'get Comment Failed : '.$e->getMessage());
}

Delete comment

See Jira API reference, (*59)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {
    $commentId = 12345;

    $issueService = new IssueService();

    $ret = $issueService->deleteComment($issueKey, $commentId);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Delete comment Failed : '.$e->getMessage());
}

Update comment

See Jira API reference, (*60)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;
use JiraRestApi\Issue\Comment;

$issueKey = 'TEST-879';

try {
    $commentId = 12345;

    $issueService = new IssueService();

    $comment = new Comment();
    $comment->setBody('Updated comments');

    $issueService->updateComment($issueKey, $commentId, $comment);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Update comment Failed : '.$e->getMessage());
}

Perform a transition on an issue

Note: this library uses goal status names instead of transition names. So, if you want to change issue status to 'Some Status', you should pass that status name to setTransitionName, (*61)

i.e. $transition->setTransitionName('Some Status'), (*62)

See Jira API reference, (*63)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Transition;
use JiraRestApi\JiraException;

$issueKey = 'TEST-879';

try {           
    $transition = new Transition();
    $transition->setTransitionName('Resolved');
    $transition->setCommentBody('performing the transition via REST API.');

    $issueService = new IssueService();

    $issueService->transition($issueKey, $transition);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(FALSE, 'add Comment Failed : ' . $e->getMessage());
}

Note: If you are JIRA with local language profiles, you must use setUntranslatedName instead of setTransitionName., (*64)

i.e. $transition->setUntranslatedName('Done'), (*65)

Simple Query

See Jira API reference, (*66)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$jql = 'project not in (TEST)  and assignee = currentUser() and status in (Resolved, closed)';

try {
    $issueService = new IssueService();

    $ret = $issueService->search($jql);
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}
Simple Query with LinkedIssue

See Jira API reference, (*67)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;
use JiraRestApi\Issue\JqlFunction;

// Searches for issues that are linked to an issue. You can restrict the search to links of a particular type. 
try {
    $linkedIssue = JqlFunction::linkedIssues('TEST-01', 'IN', 'is blocked by');

    $issueService = new IssueService();

    $ret = $issueService->search($linkedIssue->expression);

    var_dump($ret);
} catch (JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

// Searches for epics and subtasks. If the issue is not an epic, the search returns all subtasks for the issue. 
try {
    $linkedIssue = JqlFunction::linkedissue('TEST-01');

    $issueService = new IssueService();

    $ret = $issueService->search($linkedIssue->expression);

    var_dump($ret);
} catch (JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}
JQL with pagination

See Jira API reference, (*68)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$jql = 'project not in (TEST)  and assignee = currentUser() and status in (Resolved, closed)';

try {
    $issueService = new IssueService();

    $pagination = -1;

    $startAt = 0;   //the index of the first issue to return (0-based)    
    $maxResult = 3; // the maximum number of issues to return (defaults to 50). 
    $totalCount = -1;   // the number of issues to return

    // first fetch
    $ret = $issueService->search($jql, $startAt, $maxResult);
    $totalCount = $ret->total;

    // do something with fetched data
    foreach ($ret->issues as $issue) {
        print (sprintf('%s %s \n', $issue->key, $issue->fields->summary));
    }

    // fetch remained data
    $page = $totalCount / $maxResult;

    for ($startAt = 1; $startAt < $page; $startAt++) {
        $ret = $issueService->search($jql, $startAt * $maxResult, $maxResult);

        print ('\nPaging $startAt\n');
        print ('-------------------\n');
        foreach ($ret->issues as $issue) {
            print (sprintf('%s %s \n', $issue->key, $issue->fields->summary));
        }
    }     
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}
JQL query class

See Jira API reference, (*69)

If you're not familiar JQL then you can use convenience JqlQuery class. JqlFunction class can be used to add jql functions calls to query. You can find the names of almost all fields, functions, keywords and operators defined as constants in JqlQuery and static methods in JqlFunciton classes. For more info see the Jira docs (link above)., (*70)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\JqlQuery;
use JiraRestApi\JiraException;
use JiraRestApi\Issue\JqlFunction;

try {
    $jql = new JqlQuery();

    $jql->setProject('TEST')
        ->setType('Bug')
        ->setStatus('In Progress')
        ->setAssignee(JqlFunction::currentUser())
        ->setCustomField('My Custom Field', 'value')
        ->addIsNotNullExpression('due');

    $issueService = new IssueService();

    $ret = $issueService->search($jql->getQuery());

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}
<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-316';

try {
    $issueService = new IssueService();

    $rils = $issueService->getRemoteIssueLink($issueKey);

    // rils is array of RemoteIssueLink classes
    var_dump($rils);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, $e->getMessage());
}

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\RemoteIssueLink;
use JiraRestApi\JiraException;

$issueKey = 'TEST-316';

try {
    $issueService = new IssueService();

    $ril = new RemoteIssueLink();

    $ril->setUrl('http://www.mycompany.com/support?id=1')
        ->setTitle('Remote Link Title')
        ->setRelationship('causes')
        ->setSummary('Crazy customer support issue')
    ;

    $rils = $issueService->createOrUpdateRemoteIssueLink($issueKey, $ril);

    // rils is array of RemoteIssueLink classes
    var_dump($rils);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Create Failed : '.$e->getMessage());
}

Issue time tracking

This methods use get issue and edit issue methods internally., (*71)

See Jira API reference (get issue), (*72)

See Jira API reference (edit issue), (*73)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\TimeTracking;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';

try {
    $issueService = new IssueService();

    // get issue's time tracking info
    $ret = $issueService->getTimeTracking($this->issueKey);
    var_dump($ret);

    $timeTracking = new TimeTracking;

    $timeTracking->setOriginalEstimate('3w 4d 6h');
    $timeTracking->setRemainingEstimate('1w 2d 3h');

    // add time tracking
    $ret = $issueService->timeTracking($this->issueKey, $timeTracking);
    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}

Add worklog in issue

See Jira API V2 reference, (*74)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Worklog;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';

try {
    $workLog = new Worklog();

    $workLog->setComment('I did some work here.')
            ->setStarted('2016-05-28 12:35:54')
            ->setTimeSpent('1d 2h 3m');

    $issueService = new IssueService();

    $ret = $issueService->addWorklog($issueKey, $workLog);

    $workLogid = $ret->{'id'};

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Create Failed : '.$e->getMessage());
}

edit worklog in issue

See Jira API reference, (*75)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Worklog;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';
$workLogid = '12345';

try {
    $workLog = new Worklog();

    $workLog->setComment('I did edit previous worklog here.')
            ->setStarted('2016-05-29 13:15:34')
            ->setTimeSpent('3d 4h 5m');

    $issueService = new IssueService();

    $ret = $issueService->editWorklog($issueKey, $workLog, $workLogid);

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Edit worklog Failed : '.$e->getMessage());
}

Get issue worklog

See Jira API reference (get full issue worklog), (*76)

See Jira API reference (get worklog by id), (*77)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';

try {
    $issueService = new IssueService();

    // get issue's all worklog
    $worklogs = $issueService->getWorklog($issueKey)->getWorklogs();
    var_dump($worklogs);

    // get worklog by id
    $wlId = 12345;
    $wl = $issueService->getWorklogById($issueKey, $wlId);
    var_dump($wl);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}

Add watcher to Issue

See Jira API reference, (*78)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';

try {
    $issueService = new IssueService();

    // watcher's id
    $watcher = 'lesstif';

    $issueService->addWatcher($issueKey, $watcher);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'add watcher Failed : '.$e->getMessage());
}

Remove watcher from Issue

See Jira API reference, (*79)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';

try {
    $issueService = new IssueService();

    // watcher's id
    $watcher = 'lesstif';

    $issueService->removeWatcher($issueKey, $watcher);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'add watcher Failed : '.$e->getMessage());
}

issue notify

See Jira API reference, (*80)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Notify;
use JiraRestApi\JiraException;

$issueKey = 'TEST-961';

try {
    $issueService = new IssueService();

    $noti = new Notify();

    $noti->setSubject('notify test')
        ->setTextBody('notify test text body')
        ->setHtmlBody('<h1>notify</h1>test html body')
        ->sendToAssignee(true)
        ->sendToWatchers(true)
        ->sendToUser('lesstif', true)
        ->sendToGroup('temp-group')
    ;

    $issueService->notify($issueKey, $noti);

} catch (JiraRestApi\JiraException $e) {
    $this->assertTrue(false, 'Issue notify Failed : '.$e->getMessage());
}

See Jira API reference, (*81)

The Link Issue Resource provides functionality to manage issue links., (*82)

<?php
require 'vendor/autoload.php';

use JiraRestApi\IssueLink\IssueLink;
use JiraRestApi\IssueLink\IssueLinkService;
use JiraRestApi\JiraException;

try {
    $il = new IssueLink();

    $il->setInwardIssue('TEST-258')
        ->setOutwardIssue('TEST-249')
        ->setLinkTypeName('Relates' )
        ->setComment('Linked related issue via REST API.');

    $ils = new IssueLinkService();

    $ret = $ils->addIssueLink($il);

} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Issue LinkType

See Jira API reference, (*83)

Rest resource to retrieve a list of issue link types., (*84)

<?php
require 'vendor/autoload.php';

use JiraRestApi\IssueLink\IssueLinkService;
use JiraRestApi\JiraException;

try {
    $ils = new IssueLinkService();

    $ret = $ils->getIssueLinkTypes();

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Create User

See Jira API reference, (*85)

Create user. By default created user will not be notified with email. If password field is not set then password will be randomly generated., (*86)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    // create new user
    $user = $us->create([
            'name'=>'charlie',
            'password' => 'abracadabra',
            'emailAddress' => 'charlie@atlassian.com',
            'displayName' => 'Charlie of Atlassian',
        ]);

    var_dump($user);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get User Info

See Jira API reference, (*87)

Returns a user., (*88)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    $user = $us->get(['username' => 'lesstif']);

    var_dump($user);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Find Users

See Jira API reference, (*89)

Returns a list of users that match the search string and/or property., (*90)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    $paramArray = [
        'username' => '.', // get all users. 
        'startAt' => 0,
        'maxResults' => 1000,
        'includeInactive' => true,
        //'property' => '*',
    ];

    // get the user info.
    $users = $us->findUsers($paramArray);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Find Assignable Users

See Jira API reference, (*91)

Returns a list of users that match the search string., (*92)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    $paramArray = [
        //'username' => null,
        'project' => 'TEST',
        //'issueKey' => 'TEST-1',
        'startAt' => 0,
        'maxResults' => 50, //max 1000
        //'actionDescriptorId' => 1,
    ];

    $users = $us->findAssignableUsers($paramArray);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Find users by query

See Jira API reference, (*93)

Returns a list of users that match the search string., (*94)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    $paramArray = [
      'query' => 'is watcher of TEST',
    ];

    $users = $us->findUsersByQuery($paramArray);
    var_dump($users);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

delete User

See Jira API reference, (*95)

Removes user., (*96)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    $paramArray = ['username' => 'user@example.com'];

    $users = $us->deleteUser($paramArray);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

update User

See Jira API reference, (*97)

Updates user., (*98)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\User\UserService;

try {
    $us = new UserService();

    $paramArray = ['username' => 'user@example.com'];

    // create new user
    $user = [
            'name'=>'charli',
            'password' => 'abracada',
            'emailAddress' => 'charli@atlassian.com',
            'displayName' => 'Charli of Atlassian',
        ];

    $updatedUser = $us->update($paramArray, $user)

    var_dump($updatedUser);

} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Create Group

See Jira API reference, (*99)

Create new group., (*100)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\Group\GroupService;
use JiraRestApi\Group\Group;

try {
    $g = new Group();

    $g->name = 'Test group for REST API';

    $gs = new GroupService();
    $ret = $gs->createGroup($g);

    var_dump($ret);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Users from group

See Jira API reference, (*101)

returns a paginated list of users who are members of the specified group and its subgroups., (*102)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\Group\GroupService;

try {
   $queryParam = [
        'groupname' => 'Test group for REST API',
        'includeInactiveUsers' => true, // default false
        'startAt' => 0,
        'maxResults' => 50,
    ];

    $gs = new GroupService();

    $ret = $gs->getMembers($queryParam);

    // print all users in the group
    foreach($ret->values as $user) {
        print_r($user);
    }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Add User to group

See Jira API reference, (*103)

add user to given group., (*104)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\Group\GroupService;

try {
    $groupName  = '한글 그룹 name';
    $userName = 'lesstif';

    $gs = new GroupService();

    $ret = $gs->addUserToGroup($groupName, $userName);

    // print current state of the group.
    print_r($ret);

} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Remove User from group

See Jira API reference, (*105)

Removes given user from a group., (*106)

<?php
require 'vendor/autoload.php';

use JiraRestApi\JiraException;
use JiraRestApi\Group\GroupService;

try {
    $groupName  = '한글 그룹 name';
    $userName = 'lesstif';

    $gs = new GroupService();

    $gs->removeUserFromGroup($groupName, $userName);

} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get All Priority list

See Jira API reference, (*107)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Priority\PriorityService;
use JiraRestApi\JiraException;

try {
    $ps = new PriorityService();

    $p = $ps->getAll();

    var_dump($p);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Priority

See Jira API reference, (*108)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Priority\PriorityService;
use JiraRestApi\JiraException;

try {
    $ps = new PriorityService();

    $p = $ps->get(1);

    var_dump($p);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get Attachment Info

See Jira API reference, (*109)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Attachment\AttachmentService;
use JiraRestApi\JiraException;

try {
    $attachmentId = 12345;

    $atts = new AttachmentService();
    $att = $atts->get($attachmentId);

    var_dump($att);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Gets the attachment information and saves the attachment into the outDir directory., (*110)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Attachment\AttachmentService;
use JiraRestApi\JiraException;

try {
    $attachmentId = 12345;
    $outDir = 'attachment_dir';

    $atts = new AttachmentService();
    $att = $atts->get($attachmentId, $outDir, $overwrite = true);

    var_dump($att);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Remove attachment

See Jira API reference, (*111)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Attachment\AttachmentService;
use JiraRestApi\JiraException;

try {
    $attachmentId = 12345;

    $atts = new AttachmentService();

    $atts->remove($attachmentId);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Create version

See Jira API reference, (*112)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Issue\Version;
use JiraRestApi\Project\ProjectService;
use JiraRestApi\Version\VersionService;
use JiraRestApi\JiraException;

try {
    $projectService = new ProjectService();
    $project = $projectService->get('TEST');

    $versionService = new VersionService();

    $version = new Version();

    $version->setName('1.0.0')
            ->setDescription('Generated by script')
            ->setReleased(true)
            ->setStartDateAsDateTime(new \DateTime())
            ->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('1 months 3 days')))
            ->setProjectId($project->id)
            ;

    $res = $versionService->create($version);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Update version

See Jira API reference, (*113)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Version\VersionService;
use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $versionService = new VersionService();
    $projectService = new ProjectService();

    $ver = $projectService->getVersion('TEST', '1.0.0');

    // update version
    $ver->setName($ver->name . ' Updated name')
        ->setDescription($ver->description . ' Updated description')
        ->setReleased(false)
        ->setStartDateAsDateTime(new \DateTime())
        ->setReleaseDateAsDateTime((new \DateTime())->add(date_interval_create_from_date_string('2 weeks 3 days')))
        ;

    $res = $versionService->update($ver);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Delete version

See Jira API reference, (*114)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Version\VersionService;
use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $versionService = new VersionService();
    $projectService = new ProjectService();

    $version = $projectService->getVersion('TEST', '1.0.0');

    $res = $versionService->delete($version);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

See Jira API reference, (*115)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Version\VersionService;
use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $versionService = new VersionService();
    $projectService = new ProjectService();

    $version = $projectService->getVersion('TEST', '1.0.0');

    $res = $versionService->getRelatedIssues($version);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get version unresolved issues

See Jira API reference, (*116)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Version\VersionService;
use JiraRestApi\Project\ProjectService;
use JiraRestApi\JiraException;

try {
    $versionService = new VersionService();
    $projectService = new ProjectService();

    $version = $projectService->getVersion('TEST', '1.0.0');

    $res = $versionService->getUnresolvedIssues($version);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Create component

See Jira API reference, (*117)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Component\ComponentService;
use JiraRestApi\Issue\Version;
use JiraRestApi\Project\Component;
use JiraRestApi\JiraException;

try {
    $componentService = new ComponentService();

    $component = new Component();
    $component->setName('my component')
              ->setDescription('Generated by script')
              ->setProjectKey('TEST');

    $res = $componentService->create($component);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Update component

See Jira API reference, (*118)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Component\ComponentService;
use JiraRestApi\Issue\Version;
use JiraRestApi\Project\Component;
use JiraRestApi\JiraException;

try {
    $componentService = new ComponentService();

    $component = $componentService->get(10000); // component-id
    $component->setName($component->name . ' Updated name')
              ->setDescription($component->description . ' Updated descrption')
              ->setLeadUserName($component->lead->key);  // bug in jira api

    $res = $componentService->update($component);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Delete component

See Jira API reference, (*119)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Component\ComponentService;
use JiraRestApi\Issue\Version;
use JiraRestApi\Project\Component;
use JiraRestApi\JiraException;

try {
    $componentService = new ComponentService();

    $component = $componentService->get(10000); // component-id

    $res = $componentService->delete($component);

    var_dump($res);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get board list

See Jira API reference, (*120)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Board\BoardService;

try {
  $board_service = new BoardService();
  $board = $board_service->getBoardList();

  var_dump($board);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get boards

See Jira API reference, (*121)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Board\BoardService;

try {
  $results = [];
  $startAt = 0;
  $maxResults = 50; // maximum allowed for board queries

  do {
      $response = $this->boardService->getBoards([
        'startAt' => $startAt,
        'maxResults' => $maxResults
      ]);

      $results = [...$results, ...$response->getBoards()];

      $startAt += $maxResults;

  } while($startAt < $response->total);

  var_dump($results);

} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get board info

See Jira API reference, (*122)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Board\BoardService;

try {
  $board_service = new BoardService();
  $board_id = 1;
  $board = $board_service->getBoard($board_id);

  var_dump($board);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get board issues

See Jira API reference, (*123)

<?php
require 'vendor/autoload.php';

use JiraRestApi\Board\BoardService;

try {
  $board_service = new BoardService();
  $board_id = 1;
  $issues = $board_service->getBoardIssues($board_id, [
    'maxResults' => 500,
    'jql' => urlencode('status != Closed'),
  ]);

  foreach ($issues as $issue) {
    var_dump($issue);
  }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get board epics

See Jira API reference, (*124)

<?php
require 'vendor/autoload.php';

try {
  $board_service = new JiraRestApi\Board\BoardService();
  $board_id = 1;
  $epics = $board_service->getBoardEpics($board_id, [
    'maxResults' => 500,
  ]);

  foreach ($epics as $epic) {
    var_dump($epic);
  }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get epic info

See Jira API reference, (*125)

<?php
require 'vendor/autoload.php';

try {
  $epic_service = new JiraRestApi\Epic\EpicService();
  $epic_id = 1;
  $epic = $epic_service->getEpic($epic_id);

  var_dump($epic);
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

Get epic issues

See Jira API reference, (*126)

<?php
require 'vendor/autoload.php';

try {
  $epic_service = new JiraRestApi\Epic\EpicService();
  $epic_id = 1;
  $issues = $epic_service->getEpicIssues($epic_id, [
    'maxResults' => 500,
    'jql' => urlencode('status != Closed'),
  ]);

  foreach ($issues as $issue) {
    var_dump($issue);
  }
} catch (JiraRestApi\JiraException $e) {
    print('Error Occured! ' . $e->getMessage());
}

License

Apache V2 License, (*127)

JIRA Rest API Documents

  • 6.4 - https://docs.atlassian.com/jira/REST/6.4/
  • Jira Server latest - https://docs.atlassian.com/jira/REST/server/
  • Jira Cloud latest - https://docs.atlassian.com/jira/REST/latest/

The Versions

28/07 2018

dev-master

9999999-dev

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0 Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

28/07 2018

dev-develop

dev-develop

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0 Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

28/07 2018

1.29.0

1.29.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

27/07 2018

1.28.0

1.28.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

27/07 2018

dev-analysis-8QKrxo

dev-analysis-8QKrxo

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

22/07 2018

1.27.0

1.27.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

22/07 2018

dev-analysis-q1ORJA

dev-analysis-q1ORJA

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

15/07 2018

1.26.0

1.26.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

26/06 2018

1.25.0

1.25.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/06 2018

1.24.0

1.24.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/06 2018

dev-analysis-X09Lnn

dev-analysis-X09Lnn

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/06 2018

dev-analysis-XawMJx

dev-analysis-XawMJx

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/06 2018

dev-analysis-XZ0d1R

dev-analysis-XZ0d1R

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/06 2018

dev-analysis-qvexkV

dev-analysis-qvexkV

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

17/06 2018

1.23.1

1.23.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

17/06 2018

dev-analysis-XZ0ZdP

dev-analysis-XZ0ZdP

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

02/06 2018

dev-analysis-ze1yLv

dev-analysis-ze1yLv

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

02/06 2018

1.23.0

1.23.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

02/06 2018

dev-analysis-q5dkNW

dev-analysis-q5dkNW

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

02/06 2018

1.22.0

1.22.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

25/05 2018

dev-analysis-86lEDa

dev-analysis-86lEDa

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

24/05 2018

1.21.0

1.21.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

24/05 2018

dev-analysis-ze2W9K

dev-analysis-ze2W9K

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

29/04 2018

1.20.3

1.20.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

06/04 2018

1.20.2

1.20.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

05/04 2018

dev-hotfix/issue-148

dev-hotfix/issue-148

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

04/04 2018

1.20.1

1.20.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

04/04 2018

dev-analysis-X05Ybn

dev-analysis-X05Ybn

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

03/04 2018

dev-analysis-zGoYxk

dev-analysis-zGoYxk

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

03/04 2018

1.20.0

1.20.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

29/03 2018

dev-analysis-qBLJjg

dev-analysis-qBLJjg

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

29/03 2018

1.19.8

1.19.8.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

24/03 2018

dev-analysis-Xl15lO

dev-analysis-Xl15lO

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

24/03 2018

1.19.7

1.19.7.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

22/03 2018

1.19.6

1.19.6.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

14/03 2018

1.19.5

1.19.5.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

03/03 2018

dev-pr/133

dev-pr/133

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

23/02 2018

1.19.3

1.19.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

23/02 2018

1.19.4

1.19.4.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

15/02 2018

1.19.2

1.19.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

11/02 2018

dev-analysis-Xljrnd

dev-analysis-Xljrnd

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

11/02 2018

1.19.1

1.19.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/02 2018

dev-analysis-zYZ6Py

dev-analysis-zYZ6Py

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/02 2018

1.19.0

1.19.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

07/02 2018

dev-for-php-5.4

dev-for-php-5.4

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

07/02 2018

1.12.2

1.12.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

07/02 2018

1.18.1

1.18.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

20/01 2018

1.18.0

1.18.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

16/01 2018

dev-analysis-8n1ZMN

dev-analysis-8n1ZMN

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

16/01 2018

1.17.0

1.17.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/01 2018

1.16.0

1.16.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/01 2018

dev-analysis-8by962

dev-analysis-8by962

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

04/01 2018

dev-analysis-zG0L0O

dev-analysis-zG0L0O

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

04/01 2018

1.15.0

1.15.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

03/01 2018

dev-analysis-qvRvMv

dev-analysis-qvRvMv

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

27/12 2017

1.14.4

1.14.4.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

26/12 2017

1.14.3

1.14.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

26/12 2017

dev-pr/101

dev-pr/101

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

22/12 2017

1.14.2

1.14.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

20/12 2017

1.14.1

1.14.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

20/12 2017

dev-analysis-86AonN

dev-analysis-86AonN

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/12 2017

dev-feature/pr-98

dev-feature/pr-98

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

09/12 2017

dev-analysis-XlQKgN

dev-analysis-XlQKgN

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

08/11 2017

1.14

1.14.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

01/08 2017

1.13.4

1.13.4.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

29/07 2017

1.13.3

1.13.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

28/07 2017

1.13.2

1.13.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

05/07 2017

1.13.1

1.13.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

09/06 2017

1.13.0

1.13.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

31/05 2017

1.12.1

1.12.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

29/05 2017

1.12.0

1.12.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

20/05 2017

1.11.0

1.11.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

21/04 2017

1.10.7

1.10.7.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

13/04 2017

1.10.6

1.10.6.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

24/03 2017

1.10.5

1.10.5.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

16/02 2017

1.10.4

1.10.4.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

15/02 2017

1.10.3

1.10.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/02 2017

1.10.2

1.10.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

26/01 2017

1.10.1

1.10.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

25/01 2017

1.10.0

1.10.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

20/01 2017

1.9.4

1.9.4.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

18/01 2017

1.9.3

1.9.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/01 2017

1.9.2

1.9.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

30/12 2016

1.9.1

1.9.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

22/11 2016

1.9.0

1.9.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

06/11 2016

1.8.3

1.8.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

05/09 2016

1.8.2

1.8.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/07 2016

1.8.1

1.8.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

05/07 2016

1.8.0

1.8.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

02/07 2016

1.7.4

1.7.4.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

02/07 2016

1.7.3

1.7.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

22/06 2016

1.7.2

1.7.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

20/05 2016

1.7.1

1.7.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

19/05 2016

dev-add-custom-field

dev-add-custom-field

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

18/05 2016

1.7.0

1.7.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

10/05 2016

dev-feature/custom-fields

dev-feature/custom-fields

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

12/04 2016

1.6.3

1.6.3.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

08/01 2016

1.6.2

1.6.2.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

06/01 2016

1.6.1

1.6.1.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest

31/12 2015

1.6.0

1.6.0.0

JIRA REST API Client for PHP Users.

  Sources   Download

Apache 2.0

The Requires

 

The Development Requires

rest jira jira-php jira-rest