NAME
Kayako::RestAPI - Perl library for working with Kayako REST API. Tested with
VERSION
version 0.07
SYNOPSIS
use Kayako::RestAPI;
my $kayako_api = Kayako::RestAPI->new({
"api_url" => '',
"api_key" => '',
"secret_key" => ''
}, {
content_key => 'text',
pretty => 1,
attribute_prefix => 'attr_'
});
$kayako_api->get($route, $params); # $params is optional hashref
$kayako_api->post($route, $params);
$kayako_api->put($route, $params);
$kayako_api->delete($route, $params);
$kayako_api->get('/Base/Department'); # list of all departements
my $ticket_id = 1000;
$kayako_api->get_ticket_xml($ticket_id);
$kayako_api->get_ticket_hash($ticket_id);
$kayako_api->create_ticket({
subject => 'Test ticket',
fullname => 'Pavel Serikov',
email => 'someuser@gmail.com',
contents => 'Hello, world!',
departmentid => 5,
ticketstatusid => 4,
ticketpriorityid => 1,
tickettypeid => 5,
autouserid => 1
});
You can test you controller with API Test Controller
Attention: since version 0.06 (migration from XML::XML2JSON to XML::LibXML::Simple) response structure of following methods was changed from array to hash
get_ticket_hash
get_departements
get_ticket_statuses
get_ticket_priorities
get_ticket_types
If you need to use old structure please add _old suffix to method ;)
WORK UNDER THIS MODULE IS IN PROGRESS, HELP WANTED, ESPECIALLY FOR WRITING DOCS
METHODS
xml2obj
Convert xml API response to hash using XML::XML2JSON::xml2obj method
my $xml = $kayako_api->get('/Some/Endpoint');
my $hash = $kayako_api->xml2obj($xml);
Can potentially crash is returned xml isn't valid (when XML::XML2JSON dies)
last_res
Get latest result from user agent. For debug purpose
get_hash
Wrapper under abstract GET API query, return hash
$kayako_api->get_hash('/Some/API/Endpoint');
Can potentially crash is returned xml isn't valid (when XML::XML2JSON dies)
get_ticket_xml
Get info about ticket in native XML
$kayako_api->get_ticket_xml($ticket_id);
get_ticket_hash
$kayako_api->get_ticket_hash($ticket_id);
change_ticket_owner
$kayako_api->change_ticket_owner($ticket_id, $new_owner_id);
make_unassigned
$kayako_api->make_unassigned($ticket_id);
equalent to
$kayako_api->change_ticket_owner($ticket_id, 0);
create_ticket
Check a list of required arguments here: https://kayako.atlassian.net/wiki/display/DEV/REST+-+Ticket#REST-Ticket-POST/Tickets/Ticket
filter_fields
THIS METHOD LEFT HERE FOR COMPATIBILITY AND WILL BE REMOVED IN FUTURE RELEASES
Filter fields of API request result and trim content_key added by XML::XML2JSON
By default leave only id, title and module fields
my $arrayref = $kayako_api->get_hash('/Some/API/Endpoint');
$kayako_api->filter_fields($arrayref);
get_departements_old
$kayako_api->get_departements();
Return an arrayref of hashes with title, module and id keys like
[
{
'module' => 'tickets',
'title' => 'Hard drives department',
'id' => '5'
},
{
'id' => '6',
'module' => 'tickets',
'title' => 'Flash drives department'
}
]
API endpoint is /Base/Department/
get_ticket_statuses_old
$kayako_api->get_ticket_statuses();
Return an arrayref of hashes with title and id keys like
[
{
'title' => 'In progress',
'id' => '1'
},
{
'title' => 'Closed',
'id' => '3'
},
{
'id' => '4',
'title' => 'New'
}
]
API endpoint is /Tickets/TicketStatus/
get_ticket_priorities_old
$kayako_api->get_ticket_priorities();
Return an arrayref of hashes with title and id keys like
[
{
'title' => 'Normal',
'id' => '1'
},
{
'id' => '3',
'title' => 'Urgent'
},
]
API endpoint is /Tickets/TicketPriority/
get_ticket_types_old
$kayako_api->get_ticket_types();
Return an arrayref of hashes with title and id keys like
[
{
'id' => '1',
'title' => 'Case'
},
{
'id' => '3',
'title' => 'Bug'
},
{
'id' => '5',
'title' => 'Feedback'
}
];
API endpoint is /Tickets/TicketType/
get_staff_old
$kayako_api->get_staff();
Return an arrayref of hashes with keys like firstname, lastname, username etc.
E.g.
[
{ ... },
{
'id' => { 'text' => '12' },
'firstname' => { 'text' => 'Pavel' },
'email' => { 'text' => 'pavelsr@cpan.org' },
'lastname' => { 'text' => 'Serikov' },
'enabledst' => { 'text' => '0'},
'username' => { 'text' => 'pavelsr' },
'isenabled' => { 'text' => '1' },
'staffgroupid' => { 'text' => '4' },
'greeting' => {},
'timezone' => {},
'designation' => { 'text' => 'TS' },
'mobilenumber' => {},
'signature' => {},
'fullname' => { 'text' => 'Pavel Serikov' }
}
]
API endpoint is /Base/Staff/
AUTHOR
Pavel Serikov <pavelsr@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2018 by Pavel Serikov.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.