Project

General

Profile

APIForNG » History » Version 30

Denis Kildishev, 03/30/2021 03:37 PM

1 1 Denis Kildishev
h1. APIForNG
2 4 Denis Kildishev
3 1 Denis Kildishev
По текущей модели предполагается использование следующих методов:
4 2 Denis Kildishev
Для всех методов по умолчанию используется один заголовочный параметр
5
Authorization со значением Bearer 36AC0A0F7F271314B72986EB54DB2343
6 1 Denis Kildishev
7
1.Получение списка проектов
8
Method:
9
GET
10
Path:
11
http://localhost:9988/projects
12 2 Denis Kildishev
Без дополнительных параметров
13
Пример выдачи
14 8 Alexey Khoroshilov
<pre><code class="javascript">
15 1 Denis Kildishev
{
16
  "success" : true,
17
  "result" : {
18
    "projects" : [ "Example", "з1", "arch", "stpo"],
19 10 Denis Kildishev
    "count" : 4
20 1 Denis Kildishev
  }
21
}
22 8 Alexey Khoroshilov
</code></pre>
23 1 Denis Kildishev
24 2 Denis Kildishev
2. Получение содержимого проекта(иерархия), для expandable - ограниченное 1м уровнем 
25 1 Denis Kildishev
Method:
26
GET
27
Path:
28 2 Denis Kildishev
http://localhost:9988/projects/{arch}[/expandable]
29
Здесь {arch} - имя проекта, на данный момент регистрозависимо
30
Без дополнительных параметров
31
Пример выдачи
32 9 Denis Kildishev
<pre><code class="javascript">
33 1 Denis Kildishev
{
34 9 Denis Kildishev
  "success": true,
35
  "result": {
36
    "name": "arch",
37
    "nodes": [
38
      {
39
        "uuid": "243f4afe-1d28-4652-80b9-4ad123b415a4"
40
        "name": "Documents",
41
        "type": "DocFolder",
42 1 Denis Kildishev
43 9 Denis Kildishev
      },
44
      {
45
        "uuid": "7a5374ee-eb7a-4731-997d-5f52f00ebc2e"
46
        "name": "Requirements",
47
        "type": "Requirement",
48
        "haveChildren":"true",
49
        "children": [
50
          {
51
            "uuid": "8ccd86e3-5689-43aa-9241-04728447e8f7",
52
            "name": "001",
53
            "type": "Requirement",
54
            "children": [],
55
          }
56
        ]
57
      },
58
      {
59
        "uuid": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85",
60
        "name": "Reports",
61
        "type": "ReportFolder"
62
      }
63
    ],
64
  }
65 1 Denis Kildishev
}
66 9 Denis Kildishev
</code></pre>
67 1 Denis Kildishev
по умолчанию выдает все дерево с базовым набором из нескольких полей - уникального id uuid, отображаемого имени name, типа type и массива потомков children. 
68
поле haveChildren присутствует если у узла есть потомки и работает даже когда children не видны в режиме expandable для 2 уровня вложенности
69
при режиме [expandable] потомки выдаются до 1 уровня вложенности
70 29 Denis Kildishev
В случае отсутствия проекта выдаст ошибку E1.
71 1 Denis Kildishev
72
3. Получение данных по поддереву
73
Method:
74
GET
75
Path:
76
http://localhost:9988/projects/{TEST}/hierarchy/ff42a6f4-f9ac-48c3-b41c-c36395df8a85[/expandable]
77
{TEST} - имя проекта
78
id после /hierarchy это id узла для которого получается поддерево, режим /expandable работает аналогично проекту
79
Без дополнительных параметров
80
Пример выдачи
81 9 Denis Kildishev
<pre><code class="javascript">
82 1 Denis Kildishev
{
83 9 Denis Kildishev
  "success": true, 
84
  "result": 
85
  {
86
    "uuid": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85",
87
    "name": "Reports",
88
    "type": "ReportFolder",
89
    "parent": "ff42a6f4-f9ac-48c3-b41c-c36395df8a85"
90
  }
91 1 Denis Kildishev
}
92 9 Denis Kildishev
</code></pre>
93 1 Denis Kildishev
Содержимое result аналогично описанию одного узла и всех его потомков[или потомков 1 уровня вложенности для expandable] в выдаче проекта
94 29 Denis Kildishev
В случае отсутствия проекта выдаст ошибку E1.
95
В случае отсутствия узла для которого выдается поддерева возвращает ошибку E2.
96 1 Denis Kildishev
97
4. Получение свойств узлов
98
Method:
99
POST
100
Path:
101
http://localhost:9988/projects/TEST/getattributes/
102
В теле запроса передаются все uuid ы узлов для которых нужно выдать свойства. Конкретная реализация пока уточняется, текущее предположение - просто передавать в текстовом виде с разделителем ;. Возможно будут передаваться в качестве массива по аналогии с передачей данных форм. Пример "4db0fbf4-f383-4740-9d72-891ef112f742;ff42a6f4-f9ac-48c3-b41c-c36395df8a85".
103
Пример выдачи
104 9 Denis Kildishev
<pre><code class="javascript">
105 1 Denis Kildishev
{
106 9 Denis Kildishev
  "success": true,
107
  "result": {
108
    "attributes": {
109
      "4db0fbf4-f383-4740-9d72-891ef112f742":{
110
        "Вид": {
111
          "value": "",
112
          "type": "STRING"
113
        },
114
        "_index": {
115
          "value": "1",
116
          "type": "STRING"
117
        },
118
        "_name": {
119
          "value": "Хронология",
120
          "type": "STRING"
121
        },
122
        "_type": {
123
          "value": "Requirement",
124
          "type": "STRING"
125
        },
126
        "_id": {
127
          "value": "001",
128
          "type": "STRING"
129
        },
130
        "ForeignID": {
131
          "value": "1",
132
          "type": "STRING"
133
        }
134
      },
135
      "9dffaddf-a55a-4fa1-a3bc-4a5fade4169f":{
136
        "Вид": {
137
          "value": "Заголовок",
138
          "enumName": "Вид",
139
          "valueType": "STRING",
140
          "type": "ENUM"
141
        },
142
        "_index": {
143
          "value": "1",
144
          "type": "STRING"
145
        },
146
        "_tags": {
147
          "value": [
148
            {
149
              "value": "section_Архитектура_ПО_Поток_управления"
150
            }
151
          ],
152
          "valuesType": "STRING",
153
          "type": "LIST"
154
        },
155
        "_type": {
156
          "value": "Requirement",
157
          "type": "STRING"
158
        },
159
        "_id": {
160
          "value": "Поток управления",
161
          "type": "STRING"
162
        },
163
        "_description": {
164
          "value": " ",
165
          "type": "HTML"
166
        },
167
        "ForeignID": {
168
          "value": "2",
169
          "type": "STRING"
170
        }
171
      }
172
    }
173
  }
174 3 Denis Kildishev
}
175 9 Denis Kildishev
</code></pre>
176 3 Denis Kildishev
177
В примере выдача свойств двух узлов. Они расположены в result в виде словаря где ключ это id а значение - набор свойств узла.
178
179
5. Метод для работы с ресурсами. Текущая реализация
180
Method:
181
GET
182
Path:
183
http://localhost:9988/projects/{TEST}/nodes/{n}/resources/{resFolder}/{res}
184
{Test} имя проекта
185
{n} - uuid узла
186
{resFolder} папка с ресурсами(внутри {node_id}_resources, например "images")
187 4 Denis Kildishev
{res} имя файла
188
Возвращает ответ типа APPLICATION_OCTET_STREAM включающий в себя содержимое нужного ресурса. В теле также передается имя файла.
189
Если ресурса нет то выдается ответ NOT_FOUND типа plain text
190
Если передано некорректное имя папки с ресурсами(включающее недопустимые символы) то выдается ответ INVALID FOLDER типа plain text
191
192 1 Denis Kildishev
Предположительно появится метод получения ресурсов по списку для множества узлов но потом
193
Возможный формат передачи данных - json пары
194 9 Denis Kildishev
<pre><code class="javascript">
195 1 Denis Kildishev
{"uuid":"resfolder/resname","uuid2":"resfolder2/resname2"}
196 9 Denis Kildishev
</code></pre>
197 1 Denis Kildishev
Возможный тип возвращаемого значения - multipart/mixed. Но при этом размер возвращаемых данных может оказаться значительным
198 11 Denis Kildishev
199
6. Метод для получения связей
200
Method:
201
POST
202
Path:
203
http://localhost:9988/projects/{TEST}/getlinks
204
В теле запроса передаются все uuid ы узлов для которых нужно выдать свойства. Текущее предположение - в текстовом виде с разделителем ';'. Пример "4db0fbf4-f383-4740-9d72-891ef112f742;ff42a6f4-f9ac-48c3-b41c-c36395df8a85".
205
Результат включает в себя аналог словаря uuid:{ссылки}. Если для узла ссылок нет то в выдачу он не попадает.
206
ссылки разбиты на 4 раздела
207
linkToRelations - исходящие ссылки по свойствам
208
linkedByRelations - входящие ссылки по свойствам
209
linkToTerms - связи от использования термина из другого узла к определению в данном узле
210
linkedByTerms - связи от использования термина из данного узла к определению в другом узле
211
Пример выдачи
212
<pre><code class="javascript">
213
{
214
  "success": true,
215
  "result": {
216
    "links": {
217
      "7a5374ee-eb7a-4731-997d-5f52f00ebc2e": {
218
        "linkToRelations": {
219
          "reg": [
220
            {
221
              "haveChildren": true,
222
              "name": "Архитектура ПО",
223
              "type": "Requirement",
224
              "parent": "7a5374ee-eb7a-4731-997d-5f52f00ebc2e",
225
              "externalId": "9",
226
              "uuid": "188f8992-12e1-4acc-bf5a-fd568b1a2161"
227
            }
228
          ],
229
        },
230
        "linkedByRelations": {
231
          "d": [
232
            {
233
              "haveChildren": true,
234
              "name": "если E = 2 k -1",
235
              "type": "Requirement",
236
              "project": "SQRT",
237
              "parent": "ba51211b-d1c6-46ae-9333-bdad409b1fdb",
238
              "uuid": "127bfded-ae30-4365-9274-c116201a4ac1"
239
            },
240
            {
241
              "name": "001",
242
              "type": "Requirement",
243
              "project": "SQRT",
244
              "parent": "ebc37a22-15c5-482d-9e4c-8c23461fca39",
245
              "uuid": "57b80f94-9011-43d8-844f-5bef23e37afb"
246
            },
247
            {
248
              "name": "002",
249
              "type": "Requirement",
250
              "project": "SQRT",
251
              "parent": "4b40ef1a-de18-4d71-8825-2ef16b502cd0",
252
              "uuid": "658b8768-55b8-45b5-99b3-f03ba252acb7"
253
            }
254
          ]
255
        }
256
      }
257
    }
258
  }
259
} 
260
</code></pre>
261 12 Denis Kildishev
262 23 Denis Kildishev
6.5. Получение единичного ресурса
263
Method:
264
GET
265
Paths:
266
http://localhost:9988/projects/someproject/resources/ed612ae4-ced3-408c-8d64-66d87981611f/subpath.xhtml
267
или
268
http://localhost:9988/projects/someproject/resources/ed612ae4-ced3-408c-8d64-66d87981611f/images/1.jpg
269
Содержат имя проекта {someproject}, uuid узла {ed612ae4-ced3-408c-8d64-66d87981611f} и путь к ресурсу относительно папки {nodeId}_resources.
270 26 Denis Kildishev
Стоит отметить что если в описании присутствует конструкция вида {node.resURL}/{img}[пример src="{node.resURL}/RTOS_cf.png"] то для _description путь к картинке фактически будет составлять {nodeId}_resources/_description/{img}[src="...RTOS_CONTROL_FLOW_resources\_description\RTOS_cf.png"]
271 23 Denis Kildishev
272 12 Denis Kildishev
7. Установка свойств
273
Method:
274 27 Denis Kildishev
PUT
275 12 Denis Kildishev
Datatype:
276 14 Denis Kildishev
multipart/form-data или application/json
277 12 Denis Kildishev
Path:
278 1 Denis Kildishev
http://localhost:9988/projects/{TEST}/nodes/{uuid_of_node}/attributes/
279 17 Denis Kildishev
В теле запроса передаются значения свойств которые требуется изменить. Пример запроса ниже. Значение свойств которые не переданы в запросе остаются неизмеными. Сами свойства передаются через application/json поле "input". Изображения передаются в виде прикрепленных файлов в поле images.//TODO добавить пример.
280 14 Denis Kildishev
При использовании типа application/json вместо multipart/form-data свойства передаются непосредственно в теле запроса
281 12 Denis Kildishev
<pre><code class="javascript">
282
{
283
  "attributes":
284
    {
285
      "test":
286
        {
287
          "value":"2"
288
        },
289
      "test2":
290
        {
291
          "value":"3", "type": "INT"
292
        }
293
    }
294
}
295
</code></pre>
296
Возвращает текущий набор видимых распологающихся в узле свойств
297
<pre><code class="javascript">
298
{
299
  "success": true,
300
  "result": {
301
    "attributes": {
302
      "test2": {
303
        "value": "3",
304
        "type": "INT"
305
      },
306
      "_index": {
307
        "value": "8",
308
        "type": "STRING"
309
      },
310
      "test": {
311
        "value": "2",
312
        "type": "STRING"
313
      },
314
      "_tags": {
315
        "valuesType": "STRING",
316
        "value": [
317
          {
318
            "value": "section_Архитектура_ПО"
319
          }
320
        ],
321
        "type": "LIST"
322
      },
323
      "_type": {
324
        "value": "Requirement",
325
        "type": "STRING"
326
      },
327
      "_id": {
328
        "value": "Архитектура ПО",
329
        "type": "STRING"
330
      }
331
    }
332
  }
333
}
334
</code></pre>
335 1 Denis Kildishev
336 27 Denis Kildishev
7b. Пример установки картинки
337
Запрос
338
http://127.0.0.1:9988/projects/TEST/nodes/4db0fbf4-f383-4740-9d72-891ef112f742/attributes
339
Метод
340
PUT
341
Тип значения
342
multipart/form-data
343
Два поля в содержимом
344
text part с именем input, тип application/json
345
{   "attributes":     {       "_description":         {         "type":"HTML",  "value":"2<img src='example.png'/>"          }     } }
346
file part с именем images, загружена картинка example.png
347
если нужно больше изображений то следует добавить еще полей с именем images.
348
349 12 Denis Kildishev
8. Замена свойств
350 27 Denis Kildishev
Аналогичен 7, отличается использованием метода POST. Удаляет все свойства которые не перечисленны в запросе
351 12 Denis Kildishev
352
9. Удаление свойств
353
Method:
354
DELETE
355
Path:
356
http://localhost:9988/projects/{TEST}/nodes/{n}/attributes/
357
{TEST} - имя проекта
358
{n} - uuid узла
359
В теле запроса передаются все имена свойств которые требуется удалить в текстовом виде с разделителем ';'. Пример
360
_name;attributeName
361
Результат включают в себя список оставшихся свойств. 
362
Пример выдачи
363
364
<pre><code class="javascript">
365
{
366 13 Denis Kildishev
  "success": true,
367
  "result": {
368
    "attributes": [
369
      "Вид",
370
      "Производное",
371
      "_index",
372
      "_tags",
373
      "_type",
374
      "_id",
375
      "ForeignID"
376
    ],
377
  }
378 1 Denis Kildishev
}
379
</code></pre>
380 14 Denis Kildishev
381 15 Denis Kildishev
10. Создание проекта
382
Method:
383
PUT
384
Path:
385
http://localhost:9988/projects/{new_name}
386
{new_name} - имя проекта
387
Возвращает 
388
<pre><code class="javascript">
389
{
390
  "success": true,
391
  "result": {}
392
}
393
</code></pre>
394
либо если проект уже существует 
395
<pre><code class="javascript">
396
{
397
  "success": false,
398
  "error": {
399
    "code": "project_exists",
400
    "message": "Specified project already exists",
401
    "extra": {}
402
  }
403
}
404
</code></pre>
405 16 Denis Kildishev
406
10. Удаление проекта
407
Method:
408
DELETE
409
Path:
410
http://localhost:9988/projects/{name}
411
{name} - имя проекта
412
Возвращает 
413
<pre><code class="javascript">
414
{
415
  "success": true,
416
  "result": {}
417
}
418
</code></pre>
419
либо если проект не найден
420
<pre><code class="javascript">
421
{
422
  "success": false,
423
  "error": {
424
    "code": "project_not_found",
425
    "message": "Specified project does not exists",
426
    "extra": {}
427
  }
428
}
429 1 Denis Kildishev
</code></pre>
430 17 Denis Kildishev
431
11. Создание узла
432
Method:
433
PUT
434
Path:
435
http://localhost:9988/projects/{project_name}/create
436
project_name - имя проекта
437
Datatype:
438 19 Denis Kildishev
multipart/form-data или application/json
439
Для multipart/form-data в теле содержится два поля - input содержит json с описанием узла, images содержит изображения.
440
Для application/json в теле содержится только json с описанием
441 17 Denis Kildishev
<pre><code class="javascript">
442
{
443
  "parent": "516bbbbc-babf-45d6-a146-61db334411be",
444
  "type":"Requirement",
445
  "id":"002",
446
  "attributes":{
447
    "test": {
448
      "value": "13d23",
449
      "type": "INT"
450
    },
451
    "_name": {
452
      "value": "{test} test 123"
453
    },
454
    "Ref": {
455
      "type": "REFERENCE",
456
      "value":"test"
457
    },
458
    "_description": {
459
      "value":"test desc <img src='strange.png' alt='strange.xcf'/>", "type":"HTML"
460
    }
461
  }
462
}
463
</code>
464
</pre>
465
id является опциональным, если его не указывать он будет формироваться автоматически
466
Пример возвращаемого значения
467
<pre><code class="javascript">
468
{
469
  "success": true,
470
  "result": {
471
    "name": "13d23 test 123",
472
    "uuid": "fbc83670-6993-4baf-8c8c-0b98aaab8ab3",
473
    "parent": "1f6e9e4f-4f63-446b-bddd-15838c15c212",
474
    "attributes": {
475
      "Ref": {
476
        "value": "*Missing(Ref): 'test'",
477
        "type": "REFERENCE"
478
      },
479
      "test": {
480
        "value": "13d23",
481
        "type": "INT"
482
      },
483
      "_name": {
484
        "value": "13d23 test 123",
485
        "type": "STRING"
486
      },
487
      "_type": {
488
        "value": "Requirement",
489
        "type": "STRING"
490
      },
491
      "_id": {
492
        "value": "002",
493
        "type": "STRING"
494
      },
495
      "_description": {
496
        "value": "test desc <img src='strange.png' alt='strange.xcf'/>",
497
        "type": "HTML"
498
      }
499
    }
500
  }
501
}
502
</code>
503
</pre>
504 18 Denis Kildishev
505 1 Denis Kildishev
12. Удаление узла
506 18 Denis Kildishev
Method:
507 19 Denis Kildishev
DELETE
508 18 Denis Kildishev
Path:
509
http://localhost:9988/projects/{project_name}/node
510
project_name - имя проекта
511
В теле в виде текста содержится идентефикатор узла, например UUID, но можно использовать и другие способы идентефикации
512
Пример
513
<pre><code class="javascript">
514
03745ff6-6f9f-4517-b011-c92ca6081a47
515
</code>
516
</pre>
517
Пример удачного удаления. Возвращается иерархия на уровне родителя удаленного узла
518
<pre><code class="javascript">
519
{
520
  "success": true,
521
  "result": {
522
    "haveChildren": true,
523
    "name": "Requirements",
524
    "type": "Requirement",
525
    "uuid": "1f6e9e4f-4f63-446b-bddd-15838c15c212",
526
    "children": [
527
      {
528
        "name": "002",
529
        "type": "Requirement",
530
        "uuid": "fbc83670-6993-4baf-8c8c-0b98aaab8ab3"
531
      },
532
      {
533
        "name": "004",
534
        "type": "Requirement",
535
        "uuid": "fb594248-0739-4b74-9c82-7c6d84e09e18"
536
      },
537
      {
538
        "name": "005",
539
        "type": "Requirement",
540
        "uuid": "90ae2683-d4c7-4a97-ae03-255f449f9318"
541
      },
542 1 Denis Kildishev
      {
543 20 Denis Kildishev
       "name": "006",
544
       "type": "Requirement",
545
       "uuid": "2ce727b8-0740-4344-988f-3155d7cea5f2"
546
      },
547
      {
548
        "name": "007",
549
        "type": "Requirement",
550
        "uuid": "40155667-942e-43a6-9861-3c5b05adccfb"
551
      },
552
    ],
553
  }
554
}
555 18 Denis Kildishev
</code>
556
</pre>
557
Пример с отсутствующим узлом
558
<pre><code class="javascript">
559
{
560
  "success": false,
561
  "error": {
562
    "code": "qid_not_found",
563
    "message": "Specified QID does not exists",
564
    "extra": {}
565
  }
566
}
567
</code>
568 1 Denis Kildishev
</pre>
569 20 Denis Kildishev
570
13. Перемещение узла
571
Method:
572
POST
573
Path:
574
http://localhost:9988/projects/{project_name}/nodes/{uuid}/move
575
project_name - имя проекта
576
uuid - идентефикатор узла который требуется переместить
577
В теле содержится json с описанием параметров переноса
578
Пример
579
<pre><code class="javascript">
580
{
581
  "parent":"2ce727b8-0740-4344-988f-3155d7cea5f2",
582
  "node":"90ae2683-d4c7-4a97-ae03-255f449f9318",
583
  "position":"1"
584
}
585
</code>
586
</pre>
587
parent - указание на нового родителя
588
node и position - опциональные поля для того чтобы переместить узел в определенное место, могут не включаться в запрос
589
node при указании задает узел относительно которого нужно определить новую позицию
590
position может принимать значение <0 или >=1. Если он <0 то узел будет перемещен на позицию до целевого узла, если >=0 то после.
591
Пример удачного удаления. Возвращается иерархия на уровне нового родителя узла
592
<pre><code class="javascript">
593
{
594
  "success": true,
595
  "result": {
596
    "haveChildren": true,
597
    "name": "Requirements",
598
    "type": "Requirement",
599
    "uuid": "1f6e9e4f-4f63-446b-bddd-15838c15c212",
600
    "children": [
601
      {
602
        "name": "002",
603
        "type": "Requirement",
604
        "uuid": "fbc83670-6993-4baf-8c8c-0b98aaab8ab3"
605
      },
606
      {
607
        "name": "004",
608
        "type": "Requirement",
609
        "uuid": "fb594248-0739-4b74-9c82-7c6d84e09e18"
610
      },
611
      {
612
        "name": "005",
613
        "type": "Requirement",
614
        "uuid": "90ae2683-d4c7-4a97-ae03-255f449f9318"
615
      },
616
      {
617
       "name": "006",
618
       "type": "Requirement",
619
       "uuid": "2ce727b8-0740-4344-988f-3155d7cea5f2"
620
      },
621
      {
622
        "name": "007",
623
        "type": "Requirement",
624
        "uuid": "40155667-942e-43a6-9861-3c5b05adccfb"
625
      },
626
    ],
627
  }
628
}
629 21 Denis Kildishev
</code>
630
</pre>
631 24 Denis Kildishev
632
14. Начало транзакции
633
Method:
634
POST
635
Path:
636
http://localhost:9988/projects/{project_name}/startTransaction
637
Тело содержить имя транзакиции в виде plaint текста, обычно включает имя проекта
638
project_name - имя проекта
639
Начинает транзакцию с набором действий которые впоследствии можно отменить
640
641
15. Коммит транзакции
642
Method:
643
POST
644
Path:
645
http://localhost:9988/projects/{project_name}/commitTransaction
646
project_name - имя проекта
647
Применяет транзакцию
648
649
16. Откат транзакции
650
Method:
651
POST
652
Path:
653
http://localhost:9988/projects/{project_name}/rollbackTransaction
654
project_name - имя проекта
655
Отменяет действие транзакции и возвращает все в состояние до начала транзакции
656
657
17. Отмена прошлой транзакции
658
Method:
659 25 Denis Kildishev
GET
660 24 Denis Kildishev
Path:
661 25 Denis Kildishev
http://localhost:9988/projects/undo
662
Отменяет предидущую транзакцию.
663 1 Denis Kildishev
664
18. Возврат отмененной транзакции
665
Method:
666 25 Denis Kildishev
GET
667 1 Denis Kildishev
Path:
668 25 Denis Kildishev
http://localhost:9988/projects/redo
669
Возвращает отмененную транзакцию.
670
671
19. Список действий к отмене
672
Method:
673
GET
674
Path:
675
http://localhost:9988/projects/undoactions
676 1 Denis Kildishev
Получение списка действий которые можно отменить.
677 25 Denis Kildishev
Пример ответа
678 28 Denis Kildishev
<pre><code class="javascript">
679 25 Denis Kildishev
{
680
  "success" : true,
681
  "result" : {
682
    "transactions" : [ "Move Element", "Move Element" ]
683 1 Denis Kildishev
  }
684
}
685 28 Denis Kildishev
</code>
686
</pre>
687 25 Denis Kildishev
688
20. Список действий к возвращению
689
Method:
690
GET
691
Path:
692
http://localhost:9988/projects/redoactions
693 1 Denis Kildishev
Получение списка действий которые можно вернуть.
694 25 Denis Kildishev
Пример ответа
695 28 Denis Kildishev
<pre><code class="javascript">
696 25 Denis Kildishev
{
697
  "success" : true,
698
  "result" : {
699
    "transactions" : [ "Move Element", "Move Element" ]
700 1 Denis Kildishev
  }
701
}
702 28 Denis Kildishev
</code>
703
</pre>
704
705 30 Denis Kildishev
21. Получение связей для узлов
706
Method:
707
POST
708
Path:
709
http://localhost:9988/projects/{project_name}/getlinks
710
project_name - имя проекта
711
В теле запроса список идентификаторов узлов для которых требуется получить связи разделенный ;(например uuid ов)
712
Возвращает список связей и узлов если связи удачно разрешились. Пример возвращаемого значения для узла 99bf5072-822a-41a8-bb54-eb4755773e84.
713
<pre><code class="javascript">
714
{
715
  "success": true,
716
  "result": {
717
    "links": {
718
      "99bf5072-822a-41a8-bb54-eb4755773e84": {
719
        "linkedByTerms": {
720
          "uintptr_t": [
721
            {
722
              "name": "JetConfigTreeGet_UINTPTR",
723
              "type": "TextNode",
724
              "parent": "c4ffcef4-2926-4c50-9d63-b5fe5ecf142f",
725
              "externalId": "3326",
726
              "uuid": "cda13be2-e8f5-4f28-9662-d4a83d2280d2"
727
            }
728
          ],
729
        },
730
        "linkedByRelations": {
731
          "term-uintptr_t": [
732
            {
733
              "name": "JetConfigTreeGet_UINTPTR",
734
              "type": "TextNode",
735
              "parent": "c4ffcef4-2926-4c50-9d63-b5fe5ecf142f",
736
              "externalId": "3326",
737
              "uuid": "cda13be2-e8f5-4f28-9662-d4a83d2280d2"
738
            }
739
          ],
740
        }
741
      }
742
    }
743
  }
744
}
745
</code>
746
</pre>
747
Возвращаемое значение представляет собой объект links в котором расположен словарь uuid->связи. Информация о связях заключена в 4 подгруппах. Префикс linkTo обозначают исходящие ссылки, linkedBy входящие
748
linkToTerms
749
linkedByTerms
750
linkToRelations
751
linkedByRelations
752
Суффиксы обозначают вид связи - связь по свойствам Relations и связь по определению и использованию терминов Terms.
753
Подробнее про термины можно прочитать в доках http://requality.org/ru/glossary.ru.html#glossary_term
754
755
756 28 Denis Kildishev
E1. 
757
Ошибка - проект не найден
758
<pre><code class="javascript">
759
{
760
  "success": false,
761
  "error": {
762
    "code": "project_not_found",
763
    "message": "Specified project does not exists",
764
    "extra": {}
765
  }
766
}
767
</code>
768
</pre>
769
770
E2. 
771
Ошибка - узел не найден
772
<pre><code class="javascript">
773
{
774
  "success": false,
775
  "error": {
776
    "code": "node_not_found",
777
    "message": "Specified node does not exists",
778
    "extra": {}
779
  }
780
}
781
</code>
782
</pre>