You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2019-10-25 09:49:35

headquaker
Member
Registered: 2015-03-23
Posts: 40

[SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Hello,
I am asking you because I am fed up to search how to do it.
I just want to create a ticket in GLPI using the REST API.
I can initsession but after that, when I am testing a ticket creation, the request seems OK but no ticket is  created.

curl -X POST -H 'Content-Type: application/json' -H "Session-Token: xxxxxxxx" -H "App-Token: yyyyyyyyyy" -d '{"input": {"name": "Ticket Name", "content": "Ticket Desc","status":"1","urgency":"1","_disablenotif":true}}' 'http://glpiserver/apirest.php/itilsolution/'

GLPI : 9.4.4

Another question is : how can I find all the field I can use in the request.
I've read the documentation but nothing is talking about that.

Thank you !

SOLUTIONS

Ok for those who needs help :
In powershell :

# GLPI REST API CONFIG :
$AppURL =     "http://server/apirest.php/"
$UserToken =  "xxxxxxxxx"
$AppToken =   "yyyyyyyyy"
$createUrl = "http://server/apirest.php/Ticket"

# session creation
$SessionToken = Invoke-RestMethod "$AppURL/initSession" -Method Get -Headers @{"Content-Type" = "application/json";"Authorization" = "user_token $UserToken";"App-Token"=$AppToken}

# Things to do
$data = @{
    "input" = @(
        @{
            "content" = "Ticket description"
            "name" = "Depart Salarie"
            "_groups_id_requester" = "1"
            "priority" = "4"
            "urgency" = "2"
            "status" = "1"
            "impact" = "3"
        }
    )
}
$json = $data | ConvertTo-Json
Invoke-RestMethod -Method POST -Uri $createUrl -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"} -Body $json -ContentType 'application/json'

# Kill of the session
Invoke-RestMethod "$AppURL/killSession" -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"}

In PS, the json has to be like this :

{
    "input":  [
                  {
                      "content":  "Ticket description",
                      "name":  "Depart Salarie",
                      "_groups_id_requester":  "1",
                      "priority":  "4",
                      "impact":  "3",
                      "urgency":  "2",
                      "status":  "1"
                  }
              ]
}

####################################

LINUX :
#!/bin/bash
APISESSION=$(curl -s -X GET -H 'Content-Type: application/json' -H "Authorization: user_token: XXXXXXXXX" -H "App-Token: YYYYYYYYY" 'http://SERVER/glpi/apirest.php/initSession' | grep -o -P '(?<=:").*(?=")')

EVENTNAME=$1
TRIGGERSEVERITY=$2

case $2 in
     Disaster)
          PRIORITY=5
          ;;
     Critical)
          PRIORITY=4
          ;;
     High)
          PRIORITY=3
          ;;
esac

curl -H POST \
'http://SERVER/glpi/apirest.php//Ticket/' \
-H 'App-Token: YYYYYYYYY' \
-H 'Content-Type: application/json' \
-H 'Cookie: glpi_token' \
-H 'Host: localhost' \
-H 'Session-Token: '${APISESSION}'' \
-d '{
"input": {
        "name": "'"${EVENTNAME}"' (Zabbix)",
        "content": "'"${EVENTNAME}"' - Severity :'"${TRIGGERSEVERITY}"'",
                        "status":"1",
                        "urgency":"1",
                        "priority":"'"${PRIORITY}"'",
                        "_groups_id_requester":"1"
}
}'

curl -X GET \
-H 'Content-Type: application/json' \
-H 'Session-Token: '${APISESSION}'' \
-H "App-Token: YYYYYYYYY" \
'http://SERVER/glpi/apirest.php/killSession'

Last edited by headquaker (2023-01-27 18:22:36)

Offline

#2 2019-10-25 10:33:07

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

While I found it:
curl -X POST -H 'Content-Type: application/json' -H "Session-Token: xxxxxxxx" -H "App-Token: yyyyyyyyyy" -d '{"input": {"name": "Ticket Name", "content": "Ticket Desc","status":"1","urgency":"1"}}' 'http://glpiserver/apirest.php/Ticket/'

Offline

#3 2019-10-25 10:37:23

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Now I am looking for the field to put a requester

Offline

#4 2019-10-25 10:42:54

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,361

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

"_users_id_requester": $users_id.


Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9

Offline

#5 2019-10-25 10:57:07

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Yes I find it thanks but can I change the $users_id ?

Offline

#6 2019-10-25 11:59:41

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Is it possible to use a ticket template for creation?

Offline

#7 2019-10-25 12:59:14

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

LaDenrée wrote:

"_users_id_requester": $users_id.

I do not know how to use that, it is not working when I try this :

curl -X POST -H 'Content-Type: application/json' -H "Session-Token: xxxxxxxx" -H "App-Token: yyyyyyyyyy" -d '{"input": {"name": "Ticket Name", "content": "Ticket Desc","status":"1","urgency":"1","_users_id_requester":"1"}}' 'http://glpiserver/apirest.php/Ticket/'

Offline

#8 2019-10-25 13:16:39

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Arf thats Ok, it was not working because I would like to add a group and not a user -_-

Offline

#9 2019-10-25 15:52:53

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

How to use variables with space and others things into the curl commande because this is not working ..."name": $1,...

Got the error : ["ERROR_JSON_PAYLOAD_INVALID","JSON payload seems not valid"]

Offline

#10 2019-10-25 16:00:41

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

I would like to use a variable like this : CH - Hunenberg - Disponibilité WAN (x.x.x.x)

Offline

#11 2019-10-29 10:41:55

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Bon voici mon script complet pour aider ceux qui ont du mal

#!/bin/bash
APISESSION=$(curl -s -X GET -H 'Content-Type: application/json' -H "Authorization: user_token: XXXXXXXXX" -H "App-Token: YYYYYYYYY" 'http://SERVER/glpi/apirest.php/initSession' | grep -o -P '(?<=:").*(?=")')

EVENTNAME=$1
TRIGGERSEVERITY=$2

case $2 in
     Disaster)
          PRIORITY=5
          ;;
     Critical)
          PRIORITY=4
          ;;
     High)
          PRIORITY=3
          ;;
esac

curl -H POST \
'http://SERVER/glpi/apirest.php//Ticket/' \
-H 'App-Token: YYYYYYYYY' \
-H 'Content-Type: application/json' \
-H 'Cookie: glpi_token' \
-H 'Host: localhost' \
-H 'Session-Token: '${APISESSION}'' \
-d '{
"input": {
        "name": "'"${EVENTNAME}"' (Zabbix)",
        "content": "'"${EVENTNAME}"' - Severity :'"${TRIGGERSEVERITY}"'",
                        "status":"1",
                        "urgency":"1",
                        "priority":"'"${PRIORITY}"'",
                        "_groups_id_requester":"1"
}
}'

curl -X GET \
-H 'Content-Type: application/json' \
-H 'Session-Token: '${APISESSION}'' \
-H "App-Token: YYYYYYYYY" \
'http://SERVER/glpi/apirest.php/killSession'

Offline

#12 2019-12-08 15:37:15

wtralui
Member
Registered: 2019-12-07
Posts: 25

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Hi bro,
Could you contact me in any way?
Have you been able to troubleshoot your script issue? I have the same idea of wanting to create a

Offline

#13 2021-03-21 04:35:24

mkdalmam
Member
Registered: 2021-03-21
Posts: 9

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Hello, I am also wanting to do what you reported. You can indicate how you solved it.
I'm waiting.
Thanks

Offline

#14 2021-04-16 17:19:30

mecmav
Member
From: Brasil
Registered: 2019-03-22
Posts: 330

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

What you trying to do ?

Offline

#15 2021-04-30 16:18:07

mkdalmam
Member
Registered: 2021-03-21
Posts: 9

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Hi mecmav,
I am looking to use the API to create tickets.
TYPE:
I need the API to provide data for creating tickets.
I do not know where to start.
Thanks

Offline

#16 2022-06-30 10:34:28

ila
Member
Registered: 2022-03-10
Posts: 11

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Hi
I try to create a ticket using API but the response is code 200 without a body. (response: <Response [200]>)
i have no problem to update ticket, get ticket, and search ticket but suddenly i got error when create ticket because the request doesn't return a body
I have checked the ticket is created on the glpi but the request not return anything, it is supposed to return the ticket id i just posted
Does anyone know why is that happen?
Thanks

Last edited by ila (2022-06-30 10:38:53)

Offline

#17 2023-01-27 12:53:21

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

sorry i don't have any idea, glpi,zabbix all thoses products just lacks of help and informations that are precise.

There are plenty of documentation but when it comes to test, it never works...

My code abose is an example to create a ticket but in curl... I am trying to convert it in powershell

Last edited by headquaker (2023-01-27 12:58:38)

Offline

#18 2023-01-27 16:11:00

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Why i get that ffs error !
Invoke-RestMethod : ["ERROR_BAD_ARRAY","Le paramètre input doit être un tableau d'objets; Afficher la documentation dans votre navigateur à
["ERROR_BAD_ARRAY","The input parameter must be an array of objects

JSON :

{
    "input":  {
                  "content":  "Ticket description",
                  "name":  "Depart Salarie",
                  "_groups_id_requester":  "1",
                  "priority":  "4",
                  "urgency":  "2",
                  "status":  "1",
                  "impact":  "3"
              }
}

Code :
# GLPI REST API CONFIG :
$AppURL =     "http://server/apirest.php/"
$UserToken =  "xxxxxxxxxx"
$AppToken =   "yyyyyyyyyy"
$createUrl = "http://server/apirest.php/Ticket/"

# session creation
$SessionToken = Invoke-RestMethod "$AppURL/initSession" -Method Get -Headers @{"Content-Type" = "application/json";"Authorization" = "user_token $UserToken";"App-Token"=$AppToken}

# Things to do
#$SearchResult = Invoke-RestMethod "$AppURL/Computer/" -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"}
#$SearchResult | ft -AutoSize -Wrap | ft -AutoSize -Wrap

$jsonBase = @{}
$array = @{}
$data = @{
    "name" = "Depart Salarie"
    "content" = "Ticket description"
    "status" = "1"
    "urgency" = "2"
    "impact" = "3"
    "priority" = "4"
    "_groups_id_requester" = "1"
}

$jsonBase.Add("input",$data)

$ticketData = $jsonBase | ConvertTo-Json

$createResult = Invoke-RestMethod -Method POST -Uri $createUrl -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"} -Body ($ticketData)

# Kill of the session
Invoke-RestMethod "$AppURL/killSession" -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"}

Last edited by headquaker (2023-01-27 16:12:12)

Offline

#19 2023-01-27 18:19:20

headquaker
Member
Registered: 2015-03-23
Posts: 40

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Ok for those who needs help :
In powershell :

# GLPI REST API CONFIG :
$AppURL =     "http://server/apirest.php/"
$UserToken =  "xxxxxxxxx"
$AppToken =   "yyyyyyyyy"
$createUrl = "http://server/apirest.php/Ticket"

# session creation
$SessionToken = Invoke-RestMethod "$AppURL/initSession" -Method Get -Headers @{"Content-Type" = "application/json";"Authorization" = "user_token $UserToken";"App-Token"=$AppToken}

# Things to do
$data = @{
    "input" = @(
        @{
            "content" = "Ticket description"
            "name" = "Depart Salarie"
            "_groups_id_requester" = "1"
            "priority" = "4"
            "urgency" = "2"
            "status" = "1"
            "impact" = "3"
        }
    )
}
$json = $data | ConvertTo-Json
Invoke-RestMethod -Method POST -Uri $createUrl -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"} -Body $json -ContentType 'application/json'

# Kill of the session
Invoke-RestMethod "$AppURL/killSession" -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"}

In PS, the json has to be like this :

{
    "input":  [
                  {
                      "content":  "Ticket description",
                      "name":  "Depart Salarie",
                      "_groups_id_requester":  "1",
                      "priority":  "4",
                      "impact":  "3",
                      "urgency":  "2",
                      "status":  "1"
                  }
              ]
}

If I don't need anything, I'll ask you smile

Last edited by headquaker (2023-02-01 17:40:42)

Offline

#20 2025-01-22 17:14:20

Sico31
Member
Registered: 2018-09-24
Posts: 612

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Bonjour, il semblerait qu'il y ait des modifs sur l'API depuis la création de ce post, il m'est impossible de rajouter un utilisateur ou groupe avec ce code pour Powershell.
La création du ticket se fait bien, mais sans groupe ("_groups_id_requester":  "1",)
Je tente de passer par l'url /apirest.php/Ticket/[ID ticket/Group_ticket pour les groupes
et /ticket_User pour les utilisateurs, en vain et la doc officielle est teeeeeeellement explicite et surtout complète !


Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !

Offline

#21 2025-02-05 00:52:39

Dead-Red
Member
From: France - Aisne - 02
Registered: 2021-04-10
Posts: 28

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Bonsoir Sico31,

J'ai la dernière version de GLPI, concernant mon  @Data voici ma syntaxe :

$Data = @{
		input = @{
			entities_id = $Ticket_Entities_id
			name	    = $Ticket_Title
			content	    = $Ticket_Description
			type	    = $Ticket_Type
			urgency	    = $Ticket_Urgency
			impact	    = $Ticket_Impact
			priority    = $Ticket_Priority
			slas_id_tto = 2
			sla_waiting_duration = 0
                        _groups_id_requester = $Ticket_Requester_Group
		}
}

### Après j'ajoute d'autres paramètres en fonction de mes conditions (et cas particulier) en faisant ceci :

        if ($Ticket_Itilcategories)
	{
		$Data.input += @{
			itilcategories_id = $Ticket_Itilcategories
		}
	}
	else
	{
		$Data.input += @{
			itilcategories_id = 5
		}
	}
	if ($Ticket_Assign_User)
	{
		$Data.input += @{
			_users_id_assign = $Ticket_Assign_User
		}
	}

	$json = $Data | ConvertTo-Json
        $json = [System.Text.Encoding]::UTF8.GetBytes($json);

Pourrais-tu quand même tester ton code mais en retirant les "" qui encadrent les chiffres ?

Ex, pour assigner mon groupe 3 je fais ceci :

$Data.input += @{		
			_groups_id_assign = 3
		}

Offline

#22 2025-02-18 10:31:09

Sico31
Member
Registered: 2018-09-24
Posts: 612

Re: [SOLVED][BY ME AS USUAL]GLPI - Ticket Creation Help

Merci, ça fonctionne mieux et j'ai trouvé les balises manquantes pour assigner demandeur, observateur et groupe attribué.
Saurais-tu si je peux en même temps lié un contrat au ticket créé ?
Je le fait via une seconde fonction, en nettoyant mon code,  qui ... fonctionne donc, mais si je pouvais tout faire en une seule fois wink

Function add_contract_to_ticket
{
    param (
		$headers, $GLPIURL, $Ticket_id,$id_contrat
	)
    $Url = "$GLPIURL/apirest.php/Ticket_Contract"

    $body_contrat = @{
        input = @{
            tickets_id = $Ticket_id
            contracts_id = $id_contrat
        }
    }
$json = $body_contrat | ConvertTo-Json
$json = [System.Text.Encoding]::UTF8.GetBytes($json);
Invoke-RestMethod -Uri $Url -Method 'POST' -Headers $headers -Body $json
}

Last edited by Sico31 (2025-02-18 11:09:47)


Manger un castor, c'est sauver un arbre.
Quand on est mort, on ne sait pas qu'on est mort ; c'est pour les autres que c'est difficile. Quand on est con, c'est pareil !

Offline

Board footer

Powered by FluxBB