Description | manuals and libraries |
Kernel::GenericInterface::Operation::Ticket::TicketGet - GenericInterface Ticket Get Operation backend
usually, you want to create an instance of this by using Kernel::GenericInterface::Operation->new();
perform TicketGet Operation. This function is able to return one or more ticket entries in one call.
my $Result = $OperationObject->Run(
Data => {
UserLogin => 'some agent login', # UserLogin or CustomerUserLogin or SessionID is
# required
CustomerUserLogin => 'some customer login',
SessionID => 123,
Password => 'some password', # if UserLogin or customerUserLogin is sent then
# Password is required
TicketID => '32,33', # required, could be coma separated IDs or an Array
DynamicFields => 0, # Optional, 0 as default. Indicate if Dynamic Fields
# should be included or not on the ticket content.
Extended => 1, # Optional, 0 as default
AllArticles => 1, # Optional, 0 as default. Set as 1 will include articles
# for tickets.
ArticleSenderType => [ $ArticleSenderType1, $ArticleSenderType2 ], # Optional, only requested article sender types
ArticleOrder => 'DESC', # Optional, DESC,ASC - default is ASC
ArticleLimit => 5, # Optional
Attachments => 1, # Optional, 0 as default. If it's set with the value 1,
# attachments for articles will be included on ticket data
GetAttachmentContents = 1 # Optional, 1 as default. 0|1,
HTMLBodyAsAttachment => 1 # Optional, If enabled the HTML body version of each article
# is added to the attachments list
},
);
$Result = {
Success => 1, # 0 or 1
ErrorMessage => '', # In case of an error
Data => {
Ticket => [
{
TicketNumber => '20101027000001',
Title => 'some title',
TicketID => 123,
State => 'some state',
StateID => 123,
StateType => 'some state type',
Priority => 'some priority',
PriorityID => 123,
Lock => 'lock',
LockID => 123,
Queue => 'some queue',
QueueID => 123,
CustomerID => 'customer_id_123',
CustomerUserID => 'customer_user_id_123',
Owner => 'some_owner_login',
OwnerID => 123,
Type => 'some ticket type',
TypeID => 123,
SLA => 'some sla',
SLAID => 123,
Service => 'some service',
ServiceID => 123,
Responsible => 'some_responsible_login',
ResponsibleID => 123,
Age => 3456,
Created => '2010-10-27 20:15:00'
CreateBy => 123,
Changed => '2010-10-27 20:15:15',
ChangeBy => 123,
ArchiveFlag => 'y',
TimeUnit => 123,
# If DynamicFields => 1 was passed, you'll get an entry like this for each dynamic field:
DynamicField => [
{
Name => 'some name',
Value => 'some value',
},
],
# (time stamps of expected escalations)
EscalationResponseTime (unix time stamp of response time escalation)
EscalationUpdateTime (unix time stamp of update time escalation)
EscalationSolutionTime (unix time stamp of solution time escalation)
# (general escalation info of nearest escalation type)
EscalationDestinationIn (escalation in e. g. 1h 4m)
EscalationDestinationTime (date of escalation in unix time, e. g. 72193292)
EscalationDestinationDate (date of escalation, e. g. "2009-02-14 18:00:00")
EscalationTimeWorkingTime (seconds of working/service time till escalation, e. g. "1800")
EscalationTime (seconds total till escalation of nearest escalation time type - response, update or solution time, e. g. "3600")
# (detailed escalation info about first response, update and solution time)
FirstResponseTimeEscalation (if true, ticket is escalated)
FirstResponseTimeNotification (if true, notify - x% of escalation has reached)
FirstResponseTimeDestinationTime (date of escalation in unix time, e. g. 72193292)
FirstResponseTimeDestinationDate (date of escalation, e. g. "2009-02-14 18:00:00")
FirstResponseTimeWorkingTime (seconds of working/service time till escalation, e. g. "1800")
FirstResponseTime (seconds total till escalation, e. g. "3600")
UpdateTimeEscalation (if true, ticket is escalated)
UpdateTimeNotification (if true, notify - x% of escalation has reached)
UpdateTimeDestinationTime (date of escalation in unix time, e. g. 72193292)
UpdateTimeDestinationDate (date of escalation, e. g. "2009-02-14 18:00:00")
UpdateTimeWorkingTime (seconds of working/service time till escalation, e. g. "1800")
UpdateTime (seconds total till escalation, e. g. "3600")
SolutionTimeEscalation (if true, ticket is escalated)
SolutionTimeNotification (if true, notify - x% of escalation has reached)
SolutionTimeDestinationTime (date of escalation in unix time, e. g. 72193292)
SolutionTimeDestinationDate (date of escalation, e. g. "2009-02-14 18:00:00")
SolutionTimeWorkingTime (seconds of working/service time till escalation, e. g. "1800")
SolutionTime (seconds total till escalation, e. g. "3600")
# if you use param Extended to get extended ticket attributes
FirstResponse (timestamp of first response, first contact with customer)
FirstResponseInMin (minutes till first response)
FirstResponseDiffInMin (minutes till or over first response)
SolutionInMin (minutes till solution time)
SolutionDiffInMin (minutes till or over solution time)
FirstLock (timestamp of first lock)
Article => [
{
ArticleID
From
To
Cc
Subject
Body
ReplyTo
MessageID
InReplyTo
References
SenderType
SenderTypeID
IsVisibleForCustomer
ContentType
Charset
MimeType
IncomingTime
TimeUnit
# If DynamicFields => 1 was passed, you'll get an entry like this for each dynamic field:
DynamicField => [
{
Name => 'some name',
Value => 'some value',
},
],
Attachment => [
{
Content => "xxxx", # actual attachment contents, base64 enconded
ContentAlternative => "",
ContentID => "",
ContentType => "application/pdf",
FileID => 34,
Filename => "StdAttachment-Test1.pdf",
FilesizeRaw => 4722,
},
{
# . . .
},
]
},
{
#. . .
},
],
},
{
#. . .
},
]
},
};
@apiExample Example usage: { "SessionID": "a0uShqmDGXkiSyPRjmFnPH2vRH4yPc8J", "TicketID": "3,4", "CustomerUserLogin": "ricardo.silva", "UserLogin": "ricardo.silva", "DynamicFields": 1, "Extended": 1, "AllArticles": 1, "ArticleSenderType": ["agent"], "ArticleOrder": "DESC", "ArticleLimit": 5, "Attachments": 1, "GetAttachmentContents": 1, "HTMLBodyAsAttachment": 1 }
@apiParam (Request body) {String} [UserLogin] User login to create sesssion. @apiParam (Request body) {String} [Password] Password to create session. @apiParam (Request body) {String} SessionID session id generated by session create method. @apiParam (Request body) {String} TicketID Ticket IDs separated by comma. @apiParam (Request body) {String} [CustomerUserLogin] Customer user login. @apiParam (Request body) {String} [UserLogin] User Login. @apiParam (Request body) {Integer="0","1"} [DynamicFields] Show Dynamic Fields. @apiParam (Request body) {Integer="0","1"} [Extended] Show extended data. @apiParam (Request body) {Integer="0","1"} [AllArticles] Show all articles. @apiParam (Request body) {Array} [ArticleSenderType] Article sender type array. @apiParam (Request body) {String} [ArticleOrder] Order direction. @apiParam (Request body) {Integer} [ArticleLimit] Article return limit. @apiParam (Request body) {Integer="0","1"} [Attachments] Return attachments. @apiParam (Request body) {Integer="0","1"} [GetAttachmentContents] Return attachment content. @apiParam (Request body) {Integer="0","1"} [HTMLBodyAsAttachment] Return HTML Body as HTML.
@apiErrorExample {json} Error example: HTTP/1.1 200 Success { "Error": { "ErrorCode": "TicketGet.AuthFail", "ErrorMessage": "TicketGet: Authorization failing!" } } @apiSuccessExample {json} Success example: HTTP/1.1 200 Success { "Ticket": [ { "FirstResponse": "2021-05-29 19:25:05", "StateID": 1, "LockID": 1, "CustomerUserID": "ricardo.silva", "ArchiveFlag": "n", "Service": "teste", "Age": 611, "Type": "Unclassified", "UnlockTimeout": 1622316305, "FirstResponseInMin": 0, "Title": "Teste Attachment", "Owner": "root@localhost", "GroupID": 1, "Article": [ { "ArticleNumber": 1, "TimeUnit": 1, "From": "ricardo.silva@complemento.ne.br", "ArticleID": 36, "IncomingTime": 1622316305, "InReplyTo": "", "CreateTime": "2021-05-29 19:25:05", "SenderType": "agent", "Body": "Teste Attachment", "ContentCharset": "utf-8", "Bcc": "", "ChangeTime": "2021-05-29 19:25:05", "To": "raw", "MimeType": "text/plain", "Cc": "", "References": "", "TicketID": 4, "Charset": "utf-8", "Attachment": [ { "ContentID": "", "ContentAlternative": "", "Filename": "Teste.txt", "FileID": "1", "Disposition": "attachment", "FilesizeRaw": "16", "Content": "77u/VGVzdGUgUmljYXJkbw==", "ContentType": "text/plain" } ], "CreateBy": 1, "SenderTypeID": "1", "ReplyTo": "", "ContentType": "text/plain; charset=utf-8", "MessageID": "", "ChangeBy": 1, "IsVisibleForCustomer": 1, "CommunicationChannelID": 1, "Subject": "Teste Attachment" } ], "ServiceID": 1, "SLAID": 1, "DynamicField": [ { "Name": "AccountedTime", "Value": "0:00" }, { "Name": "AccountedTimeInMin", "Value": "0h 0m" }, { "Name": "DeltaResponseTime", "Value": null }, { "Value": null, "Name": "FAQID" }, { "Value": null, "Name": "FAQTitle" }, { "Name": "ITSMCriticality", "Value": null }, { "Name": "ITSMDecisionDate", "Value": null }, { "Value": null, "Name": "ITSMDecisionResult" }, { "Value": null, "Name": "ITSMDueDate" }, { "Name": "ITSMImpact", "Value": null }, { "Value": null, "Name": "ITSMRecoveryStartTime" }, { "Value": null, "Name": "ITSMRepairStartTime" }, { "Name": "ITSMReviewRequired", "Value": null }, { "Value": null, "Name": "IsSolutionTimeSLAStoppedCalculated" }, { "Name": "PercentualScaleResponseTime", "Value": null }, { "Name": "PercentualScaleSLA", "Value": null }, { "Name": "ProcessManagementActivityID", "Value": null }, { "Value": null, "Name": "ProcessManagementProcessID" }, { "Value": null, "Name": "RocketChatLiveChatID" }, { "Value": null, "Name": "SolutionTime" }, { "Value": "teste", "Name": "TicketKey" }, { "Value": null, "Name": "TotalResponseTime" }, { "Value": null, "Name": "TotalTime" } ], "Queue": "Postmaster", "EscalationResponseTime": 0, "Priority": "1 very low", "StateType": "new", "EscalationTime": 0, "ResponsibleID": 1, "TypeID": 1, "EscalationUpdateTime": 0, "TimeUnit": "0h 0m", "State": "new", "Responsible": "root@localhost", "SLA": "teste", "Lock": "unlock", "CreateBy": 1, "RealTillTimeNotUsed": 0, "TicketID": 4, "TicketNumber": "2021052910000021", "Created": "2021-05-29 19:25:05", "EscalationSolutionTime": 0, "UntilTime": 0, "QueueID": 1, "Changed": "2021-05-29 19:25:06", "OwnerID": 1, "ChangeBy": 1, "PriorityID": 1, "CustomerID": "LIGEROSMART" } ] }
This software is part of the OTRS project (https://otrs.org/).
This software comes with ABSOLUTELY NO WARRANTY. For details, see the enclosed file COPYING for license information (GPL). If you did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.