GraphQL API β
Π£Π²ΠΎΠ΄ β
ΠΠΎΡΠ΅Π΄ REST API-ΡΠ° Ρ Zammad-Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠΈ, ΠΌΠ΅ΡΠ°ΡΠΈ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΏΡΡΠ΅ΠΌ ΠΌΠΎΡΠ½ΠΎΠ³ ΠΈ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΠ³ ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ GraphQL API-ΡΠ°.
ΠΠ²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π΅ ΠΏΠΎΠΊΡΠΈΠ²Π° ΡΠ²Π΅ ΠΎ GraphQL-u. Π’ΡΠ΅Π±Π° Π΄Π° Π²Π°ΠΌ ΠΏΡΡΠΆΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠΈ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ/ΠΌΠ΅ΡΠ°ΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Π·Π° Π΄Π°ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅. ΠΠ° ΠΈΡΡΡΠΏΠ½Π΅ ΡΠΏΡΡΡΡΠ²Π°, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ GraphQL-a.
GraphQL ΠΊΠΎΡΠΈΡΡΠ΅ ΠΌΠ½ΠΎΠ³Π΅ Π²Π΅Π± ΡΠ΅ΡΠ²ΠΈΡΠ΅, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΈ Π²Π΅Π»ΠΈΠΊΠ΅. ΠΠΎΡΡΠ°ΠΎ ΡΠ΅ Π²ΡΡΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠΊΠΎΠ³ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π° Π·Π±ΠΎΠ³ ΡΠ²ΠΎΡΠ΅ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΎ Π·Π°ΡΡΠ°ΠΆΠΈΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠΈ ΡΡ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ, ΡΠΈΠΌΠ΅ ΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΏΡΠ΅Π½ΠΎΡΠΈ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅ΠΌΠ΅.
ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ GraphQL ΡΠ΅ΠΌΠ΅ Zammad-Π° (Π½Π°Π·Π²Π°Π½ΠΎ ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΡΠ°) ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ Π΄ΠΎΠΏΡΡΠ°Π²Π°ΡΠ΅ ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡΡ Π½Π° ΠΊΠ»ΠΈΡΠ΅Π½ΡΡΠΊΠΎΡ ΡΡΡΠ°Π½ΠΈ Π΄ΠΎΠΊ ΠΏΠΈΡΠ΅ΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π΅.
ΠΡΠ²ΠΈ ΠΊΠΎΡΠ°ΡΠΈ β
ΠΡΠ°ΡΠ΅ΡΠ΅ΠΌ ΡΠ»Π΅Π΄Π΅ΡΠΈΡ ΠΊΠΎΡΠ°ΠΊΠ° ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΡΠ΅Π±ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ»Π°ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΠ³ Π·Π°Ρ ΡΠ΅Π²Π° ΠΈ ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈΠ· Zammad-Π°.
ΠΠ»ΠΈΡΠ΅Π½ΡΠΈ β
ΠΠ° ΡΠ»Π°ΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π° ΠΈ ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ° ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π²Π°ΠΌ ΡΠ΅ API ΠΊΠ»ΠΈΡΠ΅Π½Ρ. ΠΠΊΠΎ Π²Π΅Ρ ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ° API-ΡΠΈΠΌΠ°, ΠΏΡΠ΅ΡΠΊΠΎΡΠΈΡΠ΅ ΠΎΠ²Π°Ρ Π΄Π΅ΠΎ. ΠΠΊΠΎ ΡΡΠ΅ Π½ΠΎΠ²ΠΈ Ρ ΠΎΠ²ΠΎΡ ΡΠ΅ΠΌΠΈ, ΠΏΠΎΡΡΠ°ΠΆΠΈΡΠ΅ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ° ΠΊΠΎΡΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π²Π°ΡΠΈΠΌ ΠΏΠΎΡΡΠ΅Π±Π°ΠΌΠ°. ΠΠ°Π²ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΡΠ΅. ΠΠ΅ΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΈΡ ΠΊΠ»ΠΈΡΠ΅Π½Π°ΡΠ° ΡΠ° GraphQL ΠΏΠΎΠ΄ΡΡΠΊΠΎΠΌ ΡΡ:
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° β
ΠΠΊΠΎ Π²Π΅Ρ Π½ΠΈΡΠ΅ ΠΏΡΠΈΡΡΡΠ°Π½, ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΠΎΠΊΠ΅Π½ Ρ ΠΏΡΠΎΡΠΈΠ»Ρ Zammad-Π° ΠΊΠΎΡΠΈ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠ°ΠΎ API ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ. ΠΠ°Π²ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΎΠ½ΠΎΠ³Π° ΡΡΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ ΠΏΠΎΡΡΠΈΡΠΈ ΠΏΡΡΠ΅ΠΌ API-ΡΠ°, ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅.
ΠΠ±Π°Π²Π΅Π·Π½ΠΎ Π³Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ ΠΏΡΠ΅ Π·Π°ΡΠ²Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠ°Π»ΠΎΠ³Π° ΡΠ΅Ρ Π³Π° Π½Π΅ΡΠ΅ΡΠ΅ ΠΌΠΎΡΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ. Π£ ΡΠ»ΡΡΠ°ΡΡ Π³ΡΠ΅ΡΠΊΠ΅, ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠΎΠΊΠ΅Π½.
ΠΡΠΈΠΏΡΠ΅ΠΌΠΈΡΠ΅ Π²Π°Ρ ΠΊΠ»ΠΈΡΠ΅Π½Ρ β
ΠΡΠ²ΠΎΡΠΈΡΠ΅ Π²Π°Ρ API ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΠΈ ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π³Π°.
- ΠΠΎΠ΄Π°ΡΡΠ΅ Π²Π°Ρ ΡΠΎΠΊΠ΅Π½ ΠΈΠ· Zammad-Π° ΠΊΠ°ΠΎ Π±Π΅Π°ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½.
- ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π·Π°Ρ
ΡΠ΅Π² ΠΈ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠ²ΠΎΡ Zammad Π΄ΠΎΠΌΠ΅Π½ ΡΠ° ΡΡΡΠΈΠΊΡΠΎΠΌ
/graphql, Π½ΠΏΡ.https://fastlane.inc/graphql. - ΠΡΠ΅ΡΠ·ΠΌΠΈΡΠ΅ GraphQL ΡΠ΅ΠΌΡ Zammad-Π° ΠΈΠ· ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ ΡΡΠΈΡΠ°ΡΡΠ΅ ΠΈΠ· Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅.
WARNING
ΠΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΡΠ° ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π° Π·Π° Zammad Ρ ΡΠ°Π·Π²ΠΎΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΎΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅ΡΡΠΊΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ZAMMAD_GRAPHQL_INTROSPECTION Π½Π° true. ΠΠ²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ°Π²Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½Ρ ΠΏΠΎΠ²ΡΡΠΈΠ½Ρ Π½Π°ΠΏΠ°Π΄Π° ΠΈ ΡΠ΅ Π½Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅.
ΠΡΠ²ΠΎΡΠΈΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠΈΠΊΠ΅Ρ β
Π‘Π²ΠΈ Π·Π°Ρ ΡΠ΅Π²ΠΈ ΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ ΡΡ Ρ JSON ΡΠΎΡΠΌΠ°ΡΡ. Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° Ρ Π·Π°Π³ΡΠ°Π΄Π΅ ΠΈ ΠΈΠΌΠ°ΡΠΈ Ρ ΠΈΡΠ΅ΡΠ°ΡΡ ΠΈΡΡΠΊΡ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ Π·Π°Ρ
ΡΠ΅Π² Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΈΠ· Zammad-Π°. Π’Π°ΠΊΠ°Π² Π·Π°Ρ
ΡΠ΅Π² ΠΏΠΎΡΠΈΡΠ΅ ΡΠ° Π½ΠΈΠ·ΠΎΠΌ query, ΠΏΡΠ°ΡΠ΅Π½ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠΎΡΠΈ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΡΠΏΠΈΡΠ°ΡΠ΅.
ΠΡΠ½ΠΎΠ²Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ° ΡΠΈΡ ΠΎΠ²ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ ΠΈ ΠΏΡΠ΅Π·ΠΈΠΌΠ΅Π½ΠΎΠΌ:
gql
query userName (
$userId: ID!
) {
user(userId: $userId) {
firstname
lastname
}
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
ΠΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π° $userId ΡΠ° Π΄ΡΡΠ³Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ°Π±Π»Ρ ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠ°ΠΎ ID. Π£ ΡΠ΅ΠΊΡΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Π²Π°ΡΠ΅Π³ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ°, Π½Π°Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ΅Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ. Π£ ΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ΅ΠΊΡΠΈΡΠ° Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
json
{
"userId": "gid://zammad/User/2"
}ΠΠΎΡΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ Ρ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎΠΌ ID ΡΠΎΡΠΌΠ°ΡΡ GraphQL ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Zammad-Π°. ΠΠ°Π²ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΡΠΎΠ³Π° ΠΊΠΎΡΠΈ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ΡΠ΅, Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ User Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Ticket, Organization, Group, ΠΈΡΠ΄. Zammad ΠΎΡΠ΅ΠΊΡΡΠ΅ Π½ΡΠΌΠ΅ΡΠΈΡΠΊΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΊΠ°ΠΎ ID.
ΠΠΎΡΠΈΡΡΡΠΈ ΠΎΠ΄ ΡΠ΅ΡΠ²ΡΡΠ΅ Π»ΠΈΠ½ΠΈΡΠ΅ Ρ Π³ΠΎΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΠΌ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΡΠ΅ ΡΡΠ²Π°ΡΠ½ΠΈ Π·Π°Ρ
ΡΠ΅Π². ΠΠ²Π°Ρ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° Π°ΡΡΠΈΠ±ΡΡΠ΅ firstname ΠΈ lastname ΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ° ID-ΡΠ΅ΠΌ 2.
ΠΠ° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°, Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ query ΡΠ° mutation Ρ ΡΠ΅Π»Ρ Π·Π°Ρ
ΡΠ΅Π²Π°.
ΠΡΠΈΠΌΠ΅ΡΠΈ β
ΠΡΠΈΠΌΠ΅ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΠ°ΡΠ°. ΠΠ±Π°Π²Π΅Π·Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ°Π±Π»Π΅ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ°.
ΠΡΠΈΠ»ΠΎΠ³ β
ΠΠ°ΡΠ²ΠΎΡΠΈ ΠΏΡΠ΅ΡΡΠ°Π³Ρ β
INFO
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ {ID} Π½ΡΠΌΠ΅ΡΠΈΡΠΊΠΎΠΌ Π²ΡΠ΅Π΄Π½ΠΎΡΡΡ.
gid://zammad/Ticket/{ID}gid://zammad/User/{ID}gid://zammad/Organization/{ID}