source: admin/WebConsole/rest/opengnsys-api.yml @ 4dea2be

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 4dea2be was 23a72c0, checked in by ramon <ramongomez@…>, 9 years ago

#761: Integrar rutas /status y /ous/:ouid/groups en version 1.1 y documentar ruta /status.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5088 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 26.2 KB
Line 
1swagger: '2.0'
2
3info:
4  version: "1.1.0"
5  title: OpenGnsys REST API definition
6  description: |
7    Information about the OpenGnsys REST API functions (including Server and
8    Repository Manager).
9  contact:
10    name: OpenGnsys Project
11    url: http://opengnsys.es/
12  license:
13    name: Creative Commons 4.0 International
14    url: http://creativecommons.org/licenses/by/4.0/
15basePath: /opengnsys/rest
16schemes:
17  - https
18consumes:
19  - application/json
20produces:
21  - application/json
22securityDefinitions:
23  apikey:
24    type: apiKey
25    name: Authorization
26    in: header
27# Paths description.
28paths:
29  /login:
30    post:
31      description: Check user login and returns his/her API key.
32      parameters:
33        - in: body
34          name: authdata
35          description: JSON authentication data
36          required: true
37          schema:
38            type: object
39            properties:
40              username:
41                type: string
42              password:
43                type: string
44                format: password
45      responses:
46        "200":
47          description: Successful login
48          schema:
49            type: object
50            properties:
51              userid:
52                type: integer
53                description: user identificator
54                format: int32
55              apikey:
56                description: API key to include in ``Authorization`` header
57                type: string
58        "400":
59          description: Missing parameters
60        "500":
61          description: Authentication error
62      tags:
63        - server
64        - user
65  /status:
66    get:
67      description: Gets OpenGnsys Server status information
68      responses:
69        "200":
70          description: Successful response
71          schema:
72            type: object
73            properties:
74              memInfo:
75                description: Memory information
76                $ref: '#/definitions/meminfo'
77              cpu:
78                description: CPU information
79                $ref: '#/definitions/cpu'
80      tags:
81        - server
82  /ous:
83    get:
84      description: Gets all `OU` objects.
85      responses:
86        "200":
87          description: Successful response
88          schema:
89            type: array
90            items:
91              type: object
92              properties:
93                id:
94                  type: integer
95                  description: Organization Unit identificator
96                  format: int32
97                  minimum: 1
98                name:
99                  type: string
100                  description: Organization Unit name
101      tags:
102        - server
103        - ou
104  /ous/{ouid}:
105    get:
106      description: Get an `OU` object.
107      parameters:
108        - name: ouid
109          in: path
110          description: Organization Unit identificator
111          required: true
112          type: integer
113      responses:
114        "200":
115          description: Successful response
116          schema:
117            type: object
118            properties:
119              id:
120                type: integer
121                description: OU identificator
122              name:
123                type: string
124                description: OU name
125              description:
126                type: string
127                description: OU description
128      security:
129        - apikey: []
130      tags:
131        - server
132        - ou
133#  /ous/{ouid}/groups:
134#    get:
135#      description: Get all group of labs defined in an `OU` object.
136#      parameters:
137#        - name: ouid
138#          in: path
139#          description: Organization Unit identificator
140#          required: true
141#          type: integer
142#      responses:
143#        "200":
144#          description: Successful response
145#          schema:
146#          ...
147#      security:
148#        - apikey: []
149#      tags:
150#        - server
151#        - ou
152  /ous/{ouid}/labs:
153    get:
154      description: Get all `lab` objects defined in an `OU`.
155      parameters:
156        - name: ouid
157          in: path
158          description: OU identificator
159          required: true
160          type: integer
161      responses:
162        "200":
163          description: Successful response
164          schema:
165            type: array
166            items:
167              type: object
168              properties:
169                id:
170                  type: integer
171                  description: laboratory identificator
172                  format: int32
173                name:
174                  type: string
175                  description: laboratory name
176                inremotepc:
177                  type: boolean
178                  description: laboratory usable in Remote PC Project flag
179                ou:
180                  type: object
181                  properties:
182                    id:
183                      type: integer
184                      description: OU identificator
185                      format: int32
186      security:
187        - apikey: []
188      tags:
189        - server
190        - lab
191  /ous/{ouid}/labs/{labid}:
192    get:
193      description: Get a `lab` object.
194      parameters:
195        - name: ouid
196          in: path
197          description: OU identificator
198          required: true
199          type: integer
200        - name: labid
201          in: path
202          description: laboratory identificator
203          required: true
204          type: integer
205      responses:
206        "200":
207          description: Successful response
208          schema:
209            type: object
210            properties:
211              id:
212                description: laboratory identificator
213                type: integer
214                format: int32
215              name:
216                description: laboratory name
217                type: string
218              location:
219                description: laboratory location
220                type: string
221              description:
222                description: laboratory description
223                type: string
224              inremotepc:
225                description: check if this lab can be included in Remote PC Project
226                type: boolean
227              capacity:
228                description: maximum number of people in the lab
229                type: integer
230                format: int32
231              defclients:
232                description: number of defined clients in the lab
233                type: integer
234                format: int32
235              projector:
236                description: check if this lab has a projector
237                type: boolean
238              board:
239                description: check if this lab has an electronic board
240                type: boolean
241              routerip:
242                description: lab router IP address
243                type: string
244              netmask:
245                description: network mask to use in the lab
246                type: string
247              ntp:
248                description: NTP server IP address
249                type: string
250              dns:
251                description: DNS server IP address
252                type: string
253              proxyurl:
254                description: Proxy server URL
255                type: string
256              mcastmode:
257                description: Multicast protocol mode (full-duplex, half-duplex).
258                type: string
259                enum: [ "full-duplex", "half-duplex" ]
260                default: "full-duplex"
261              mcastip:
262                description: Multicast IP address
263                type: string
264              mcastport:
265                description: Multicast port
266                type: integer
267                format: int32
268              mcastspeed:
269                description: Multicast speed (in Mbps)
270                type: integer
271                format: int32
272              p2pmode:
273                description: Bittorrent connection type ("peer", "leecher". "seeder").
274                type: string
275              p2ptime:
276                description: Bittorrent connection extra time (in s.)
277                type: integer
278                format: int32
279              image:
280                description: Lab's picture file
281                type: string
282      security:
283        - apikey: []
284      tags:
285        - server
286        - lab
287  /ous/{ouid}/labs/{labid}/clients:
288    get:
289      description: Get all `client` objects defined in an `lab`.
290      parameters:
291        - name: ouid
292          in: path
293          description: OU identificator
294          required: true
295          type: integer
296        - name: labid
297          in: path
298          description: Lab identificator
299          required: true
300          type: integer
301      responses:
302        "200":
303          description: Successful response
304          schema:
305            type: array
306            items:
307              type: object
308              properties:
309                id:
310                  type: integer
311                  format: int32
312                name:
313                  type: string
314                ou:
315                  type: object
316                  properties:
317                    id:
318                      type: integer
319                      format: int32
320                lab:
321                  type: object
322                  properties:
323                    id:
324                      type: integer
325                      format: int32
326      security:
327        - apikey: []
328      tags:
329        - server
330        - client
331  /ous/{ouid}/labs/{labid}/clients/{clientid}:
332    get:
333      description: Get a `client` object.
334      parameters:
335        - name: ouid
336          in: path
337          description: OU identificator
338          required: true
339          type: integer
340        - name: labid
341          in: path
342          description: Lab identificator
343          required: true
344          type: integer
345        - name: clientid
346          in: path
347          description: Client identificator
348          required: true
349          type: integer
350      responses:
351        "200":
352          description: Successful response
353          schema:
354            type: object
355            properties:
356              id:
357                description: client id
358                type: integer
359                format: int32
360              name:
361                description: client name
362                type: string
363              serialno:
364                description: client serial number
365                type: string
366              netiface:
367                description: main network interface
368                type: string
369              netdriver:
370                description: client MAC address (kernel module)
371                type: string
372              mac:
373                description: client MAC address
374                type: string
375              ip:
376                description: client IP address
377                type: string
378              netmask:
379                description: subnet mask address
380                type: string
381              routerip:
382                description: network router IP address
383                type: string
384              repo:
385                description: repository identification
386                type: object
387                properties:
388                  id:
389                    type: integer
390                    format: int32
391              validation:
392                description: boot validation flag
393                type: boolean
394              boottype:
395                description: boot template type
396                type: string
397              image:
398                description: client's picture file
399                type: string
400      security:
401        - apikey: []
402      tags:
403        - server
404        - client
405  /ous/{ouid}/labs/{labid}/clients/{clientid}/hardware:
406    get:
407      description: Get the hardware definition of a `client` object.
408      parameters:
409        - name: ouid
410          in: path
411          description: OU identificator
412          required: true
413          type: integer
414        - name: labid
415          in: path
416          description: Lab identificator
417          required: true
418          type: integer
419        - name: clientid
420          in: path
421          description: Client identificator
422          required: true
423          type: integer
424      responses:
425        "200":
426          description: Successful response
427          schema:
428            type: object
429            properties:
430              id:
431                description: client id
432                type: integer
433                format: int32
434              name:
435                description: client name
436                type: string
437              hardware:
438                description: hardware components
439                type: array
440                items:
441                  type: object
442                  properties:
443                    type:
444                      description: hardware component type
445                      type: string
446                    description:
447                      description: hardware component description
448                      type: string
449      tags:
450        - server
451        - client
452  /ous/{ouid}/labs/{labid}/clients/{clientid}/diskcfg:
453    get:
454      description: Get disks configuration of a `client`
455      parameters:
456        - name: ouid
457          in: path
458          description: OU identificator
459          required: true
460          type: integer
461        - name: labid
462          in: path
463          description: Lab identificator
464          required: true
465          type: integer
466        - name: clientid
467          in: path
468          description: Client identificator
469          required: true
470          type: integer
471      responses:
472        "200":
473          description: Successful response
474          schema:
475            type: object
476            properties:
477              id:
478                description: client id
479                type: integer
480                format: int32
481              name:
482                description: client name
483                type: string
484              diskcfg:
485                description: |
486                  array of disk configuration data, including general disk information and
487                  partition/filesystem information (if not specified in paratmeter
488                  description, it is only valid in partition configuration).
489                type: array
490                items:
491                  type: object
492                  properties:
493                    disk:
494                      description: disk number (only for disks configurations)
495                      type: integer
496                      format: int32
497                    parttable:
498                      description: partition table type (only for disks configurations)
499                      type: string
500                      enum: [ "MSDOS", "GPT", "LVM", "ZVOL" ]
501                    partition:
502                      description: partition number
503                      type: integer
504                      format: int32
505                      minimum: 1
506                    parttype:
507                      description: partition type
508                      type: string
509                    size:
510                      description: disk size (used in both, disk and partition configuration)
511                      type: integer
512                      format: int64
513                    filesystem:
514                      description: filesystem type
515                      type: string
516                    usage:
517                      description: data usage percentage in a formated filesystem
518                      type: integer
519                      format: int32
520                    os:
521                      description: installed operating system
522                      type: string
523                    image:
524                      description: restaured image data (if needed)
525                      type: object
526                      properties:
527                        id:
528                          type: integer
529                          format: int32
530                        deploydate:
531                          description: image restauration/deploying date
532                          type: string
533                          format: date-time
534                        updated:
535                          description: flag to check if the restaured image is updated
536                          type: boolean
537      tags:
538        - server
539        - client
540  /ous/{ouid}/labs/{labid}/clients/{clientid}/status:
541    get:
542      description: Get execution status of a `client`
543      parameters:
544        - name: ouid
545          in: path
546          description: OU identificator
547          required: true
548          type: integer
549        - name: labid
550          in: path
551          description: Lab identificator
552          required: true
553          type: integer
554        - name: clientid
555          in: path
556          description: Client identificator
557          required: true
558          type: integer
559      responses:
560        "200":
561          description: Successful response
562          schema:
563            type: object
564            properties:
565              id:
566                description: client id
567                type: integer
568                format: int32
569              ip:
570                description: client IP address
571                type: string
572              status:
573                description: execution status
574                type: string
575                enum: [ "nodata", "off", "ogclient", "busy", "linux", "windows", "unknown" ]
576              loggedin:
577                description: flag to check if an user is logged in
578                type: boolean
579      tags:
580        - server
581        - client
582  /ous/{ouid}/repos:
583    get:
584      description: Get all `repo` objects defined in an `OU`.
585      parameters:
586        - name: ouid
587          in: path
588          description: OU identificator
589          required: true
590          type: integer
591      responses:
592        "200":
593          description: Successful response
594          schema:
595            type: array
596            items:
597              type: object
598              properties:
599                id:
600                  type: integer
601                  format: int32
602                name:
603                  type: string
604                ou:
605                  type: object
606                  properties:
607                    id:
608                      type: integer
609                      format: int32
610      security:
611        - apikey: []
612      tags:
613        - server
614        - repo
615  /ous/{ouid}/repos/{repoid}:
616    get:
617      description: Get a `repo` object.
618      parameters:
619        - name: ouid
620          in: path
621          description: OU identificator
622          required: true
623          type: integer
624        - name: repoid
625          in: path
626          description: repository identificator
627          required: true
628          type: integer
629      responses:
630        "200":
631          description: Successful response
632          schema:
633            type: object
634            properties:
635              id:
636                description: repository id
637                type: integer
638                format: int32
639              name:
640                description: repository name
641                type: string
642              description:
643                description: repository description
644                type: string
645              ip:
646                description: repository IP address
647                type: string
648      security:
649        - apikey: []
650      tags:
651        - server
652        - repo
653  /ous/{ouid}/images:
654    get:
655      description: Get all `image` objects defined in an `OU`.
656      parameters:
657        - name: ouid
658          in: path
659          description: OU identificator
660          required: true
661          type: integer
662      responses:
663        "200":
664          description: Successful response
665          schema:
666            type: array
667            items:
668              type: object
669              properties:
670                id:
671                  type: integer
672                  format: int32
673                name:
674                  type: string
675                inremotepc:
676                  type: boolean
677                ou:
678                  type: object
679                  properties:
680                    id:
681                      type: integer
682                      format: int32
683      security:
684        - apikey: []
685      tags:
686        - server
687        - image
688  /ous/{ouid}/images/{imageid}:
689    get:
690      description: Get an `image` object.
691      parameters:
692        - name: ouid
693          in: path
694          description: OU identificator
695          required: true
696          type: integer
697        - name: imageid
698          in: path
699          description: image definition identificator
700          required: true
701          type: integer
702      responses:
703        "200":
704          description: Successful response
705          schema:
706            type: object
707            properties:
708              id:
709                description: image id
710                type: integer
711                format: int32
712              name:
713                description: image name
714                type: string
715              description:
716                description: image description
717                type: string
718              inremotepc:
719                description: image usable in Remote PC Project flag
720                type: boolean
721              type:
722                description: image type (``monolithic``, ``basic``, ``incremental``)
723                type: string
724              baseimg:
725                description: base image for an incremental image (if ``type`` is ``incremental``)
726                type: string
727              path:
728                description: image path (if ``type`` is ``incremental``)
729                type: string
730              repo:
731                description: repository identification
732                type: object
733                properties:
734                  id:
735                    type: integer
736                    format: int32
737              client:
738                description: model client's data
739                type: object
740                properties:
741                  id:
742                    description: model client's id.
743                    type: integer
744                    format: int32
745                  disk:
746                    description: source disk number
747                    type: integer
748                    format: int32
749                  partition:
750                    description: source partition number
751                    type: integer
752                    format: int32
753              creationdate:
754                description: image creation date
755                type: string
756                format: date-time
757              release:
758                description: image creation release
759                type: string
760      security:
761        - apikey: []
762      tags:
763        - server
764        - image
765  /ous/{ouid}/images/{imageid}/software:
766    get:
767      description: Get software inventory store into an `image`
768      parameters:
769        - name: ouid
770          in: path
771          description: OU identificator
772          required: true
773          type: integer
774        - name: imageid
775          in: path
776          description: image definition identificator
777          required: true
778          type: integer
779      responses:
780        "200":
781          description: Successful response
782          schema:
783            type: object
784            properties:
785              id:
786                description: image id
787                type: integer
788                format: int32
789              name:
790                description: image name
791                type: string
792              os:
793                description: installed operating system
794                type: string
795              software:
796                description: array of installed applications
797                type: array
798                items:
799                  type: object
800                  properties:
801                    application:
802                      description: application name and version
803                      type: string
804      security:
805        - apikey: []
806      tags:
807        - server
808        - image
809  #/ous/{ouid}/images/{imageid}/boot:
810  #/repository/images
811  #/repository/poweron
812  /ogagent/started:
813    post:
814      description: Process push notification when OGAgent is started
815      parameters:
816        - in: body
817          name: data
818          description: Operation data
819          required: true
820          schema:
821            type: object
822            properties:
823              ip:
824                type: string
825              mac:
826                type: string
827              ostype:
828                type: string
829              osversion:
830                type: string
831              secret:
832                type: string
833      responses:
834        "200":
835          description: Successful operation
836        "400":
837          description: An error has occurred
838      tags:
839        - server
840        - agent
841  /ogagent/stopped:
842    post:
843      description: Process push notification when OGAgent is stopped
844      parameters:
845        - in: body
846          name: data
847          description: Operation data
848          required: true
849          schema:
850            type: object
851            properties:
852              ip:
853                type: string
854              mac:
855                type: string
856              ostype:
857                type: string
858              osversion:
859                type: string
860      responses:
861        "200":
862          description: Successful operation
863        "400":
864          description: An error has occurred
865      tags:
866        - server
867        - agent
868  /ogagent/loggedin:
869    post:
870      description: Process push notification when an user logged in
871      parameters:
872        - in: body
873          name: data
874          description: Operation data
875          required: true
876          schema:
877            type: object
878            properties:
879              ip:
880                type: string
881              user:
882                type: string
883      responses:
884        "200":
885          description: Successful operation
886        "400":
887          description: An error has occurred
888      tags:
889        - server
890        - agent
891  /ogagent/loggedout:
892    post:
893      description: Process push notification when an user is logged in
894      parameters:
895        - in: body
896          name: data
897          description: Operation data
898          required: true
899          schema:
900            type: object
901            properties:
902              ip:
903                type: string
904              user:
905                type: string
906      responses:
907        "200":
908          description: Successful operation
909        "400":
910          description: An error has occurred
911      tags:
912        - server
913        - agent
914definitions:
915  meminfo:
916    properties:
917      total:
918        description: Total amount of memory
919        type: integer
920        format: int64
921      used:
922        description: Amount of used memory
923        type: integer
924        format: int64
925  cpu:
926    properties:
927      model:
928        description: Processor model
929        type: string
930      usage:
931        description: Average of processor load
932        type: float
Note: See TracBrowser for help on using the repository browser.