xref: /cloud-hypervisor/vmm/src/api/openapi/cloud-hypervisor.yaml (revision b440cb7d2330770cd415b63544a371d4caa2db3a)
1openapi: 3.0.1
2info:
3  title: Cloud Hypervisor API
4  description: Local HTTP based API for managing and inspecting a cloud-hypervisor virtual machine.
5  license:
6    name: Apache 2.0
7    url: http://www.apache.org/licenses/LICENSE-2.0.html
8  version: 0.3.0
9
10servers:
11- url: http://localhost/api/v1
12
13paths:
14
15  /vmm.ping:
16    get:
17      summary: Ping the VMM to check for API server availability
18      responses:
19        200:
20          description: The VMM information
21          content:
22            application/json:
23              schema:
24                $ref: '#/components/schemas/VmmPingResponse'
25
26  /vmm.shutdown:
27    put:
28      summary: Shuts the cloud-hypervisor VMM.
29      operationId: shutdownVMM
30      responses:
31        204:
32          description: The VMM successfully shutdown.
33
34  /vm.info:
35    get:
36      summary: Returns general information about the cloud-hypervisor Virtual Machine (VM) instance.
37      responses:
38        200:
39          description: The VM information
40          content:
41            application/json:
42              schema:
43                $ref: '#/components/schemas/VmInfo'
44
45  /vm.counters:
46    get:
47      summary: Get counters from the VM
48      responses:
49        200:
50          description: The VM counters
51          content:
52            application/json:
53              schema:
54                $ref: '#/components/schemas/VmCounters'
55
56  /vm.create:
57    put:
58      summary: Create the cloud-hypervisor Virtual Machine (VM) instance. The instance is not booted, only created.
59      operationId: createVM
60      requestBody:
61        description: The VM configuration
62        content:
63          application/json:
64            schema:
65              $ref: '#/components/schemas/VmConfig'
66        required: true
67      responses:
68        204:
69          description: The VM instance was successfully created.
70
71  /vm.delete:
72    put:
73      summary: Delete the cloud-hypervisor Virtual Machine (VM) instance.
74      operationId: deleteVM
75      responses:
76        204:
77          description: The VM instance was successfully deleted.
78
79  /vm.boot:
80    put:
81      summary: Boot the previously created VM instance.
82      operationId: bootVM
83      responses:
84        204:
85          description: The VM instance successfully booted.
86        404:
87          description: The VM instance could not boot because it is not created yet
88
89  /vm.pause:
90    put:
91      summary: Pause a previously booted VM instance.
92      operationId: pauseVM
93      responses:
94        204:
95          description: The VM instance successfully paused.
96        404:
97          description: The VM instance could not pause because it is not created yet
98        405:
99          description: The VM instance could not pause because it is not booted.
100
101  /vm.resume:
102    put:
103      summary: Resume a previously paused VM instance.
104      operationId: resumeVM
105      responses:
106        204:
107          description: The VM instance successfully paused.
108        404:
109          description: The VM instance could not resume because it is not booted yet
110        405:
111          description: The VM instance could not resume because it is not paused.
112
113  /vm.shutdown:
114    put:
115      summary: Shut the VM instance down.
116      operationId: shutdownVM
117      responses:
118        204:
119          description: The VM instance successfully shut down.
120        404:
121          description: The VM instance could not shut down because is not created.
122        405:
123          description: The VM instance could not shut down because it is not started.
124
125  /vm.reboot:
126    put:
127      summary: Reboot the VM instance.
128      operationId: rebootVM
129      responses:
130        204:
131          description: The VM instance successfully rebooted.
132        404:
133          description: The VM instance could not reboot because it is not created.
134        405:
135          description: The VM instance could not reboot because it is not booted.
136
137  /vm.power-button:
138    put:
139      summary: Trigger a power button in the VM
140      operationId: power-buttonVM
141      responses:
142        204:
143          description: Power button successfully triggered in the VM
144        404:
145          description: The button could not be triggered because it is not created yet
146        405:
147          description: The button could not be triggered because it is not booted.
148
149  /vm.resize:
150    put:
151      summary: Resize the VM
152      requestBody:
153        description: The target size for the VM
154        content:
155          application/json:
156            schema:
157              $ref: '#/components/schemas/VmResize'
158        required: true
159      responses:
160        204:
161          description: The VM instance was successfully resized.
162        404:
163          description: The VM instance could not be resized because it is not created.
164
165  /vm.resize-zone:
166    put:
167      summary: Resize a memory zone
168      requestBody:
169        description: The target size for the memory zone
170        content:
171          application/json:
172            schema:
173              $ref: '#/components/schemas/VmResizeZone'
174        required: true
175      responses:
176        204:
177          description: The memory zone was successfully resized.
178        500:
179          description: The memory zone could not be resized.
180
181  /vm.add-device:
182    put:
183      summary: Add a new device to the VM
184      requestBody:
185        description: The path of the new device
186        content:
187          application/json:
188            schema:
189              $ref: '#/components/schemas/VmAddDevice'
190        required: true
191      responses:
192        200:
193          description: The new device was successfully added to the VM instance.
194          content:
195            application/json:
196              schema:
197                $ref: '#/components/schemas/PciDeviceInfo'
198        204:
199          description: The new device was successfully (cold) added to the VM instance.
200        404:
201          description: The new device could not be added to the VM instance.
202
203  /vm.remove-device:
204    put:
205      summary: Remove a device from the VM
206      requestBody:
207        description: The identifier of the device
208        content:
209          application/json:
210            schema:
211              $ref: '#/components/schemas/VmRemoveDevice'
212        required: true
213      responses:
214        204:
215          description: The device was successfully removed from the VM instance.
216        404:
217          description: The device could not be removed from the VM instance.
218
219  /vm.add-disk:
220    put:
221      summary: Add a new disk to the VM
222      requestBody:
223        description: The details of the new disk
224        content:
225          application/json:
226            schema:
227              $ref: '#/components/schemas/DiskConfig'
228        required: true
229      responses:
230        200:
231          description: The new disk was successfully added to the VM instance.
232          content:
233            application/json:
234              schema:
235                $ref: '#/components/schemas/PciDeviceInfo'
236        204:
237          description: The new disk was successfully (cold) added to the VM instance.
238        500:
239          description: The new disk could not be added to the VM instance.
240
241  /vm.add-fs:
242    put:
243      summary: Add a new virtio-fs device to the VM
244      requestBody:
245        description: The details of the new virtio-fs
246        content:
247          application/json:
248            schema:
249              $ref: '#/components/schemas/FsConfig'
250        required: true
251      responses:
252        200:
253          description: The new device was successfully added to the VM instance.
254          content:
255            application/json:
256              schema:
257                $ref: '#/components/schemas/PciDeviceInfo'
258        204:
259          description: The new device was successfully (cold) added to the VM instance.
260        500:
261          description: The new device could not be added to the VM instance.
262
263  /vm.add-pmem:
264    put:
265      summary: Add a new pmem device to the VM
266      requestBody:
267        description: The details of the new pmem device
268        content:
269          application/json:
270            schema:
271              $ref: '#/components/schemas/PmemConfig'
272        required: true
273      responses:
274        200:
275          description: The new device was successfully added to the VM instance.
276          content:
277            application/json:
278              schema:
279                $ref: '#/components/schemas/PciDeviceInfo'
280        204:
281          description: The new device was successfully (cold) added to the VM instance.
282        500:
283          description: The new device could not be added to the VM instance.
284
285  /vm.add-net:
286    put:
287      summary: Add a new network device to the VM
288      requestBody:
289        description: The details of the new network device
290        content:
291          application/json:
292            schema:
293              $ref: '#/components/schemas/NetConfig'
294        required: true
295      responses:
296        200:
297          description: The new device was successfully added to the VM instance.
298          content:
299            application/json:
300              schema:
301                $ref: '#/components/schemas/PciDeviceInfo'
302        204:
303          description: The new device was successfully (cold) added to the VM instance.
304        500:
305          description: The new device could not be added to the VM instance.
306
307  /vm.add-vsock:
308    put:
309      summary: Add a new vsock device to the VM
310      requestBody:
311        description: The details of the new vsock device
312        content:
313          application/json:
314            schema:
315              $ref: '#/components/schemas/VsockConfig'
316        required: true
317      responses:
318        200:
319          description: The new device was successfully added to the VM instance.
320          content:
321            application/json:
322              schema:
323                $ref: '#/components/schemas/PciDeviceInfo'
324        204:
325          description: The new device was successfully (cold) added to the VM instance.
326        500:
327          description: The new device could not be added to the VM instance.
328
329  /vm.add-vdpa:
330    put:
331      summary: Add a new vDPA device to the VM
332      requestBody:
333        description: The details of the new vDPA device
334        content:
335          application/json:
336            schema:
337              $ref: '#/components/schemas/VdpaConfig'
338        required: true
339      responses:
340        200:
341          description: The new vDPA device was successfully added to the VM instance.
342          content:
343            application/json:
344              schema:
345                $ref: '#/components/schemas/PciDeviceInfo'
346        204:
347          description: The new vDPA device was successfully (cold) added to the VM instance.
348        500:
349          description: The new vDPA device could not be added to the VM instance.
350
351  /vm.snapshot:
352    put:
353      summary: Returns a VM snapshot.
354      requestBody:
355        description: The snapshot configuration
356        content:
357          application/json:
358            schema:
359              $ref: '#/components/schemas/VmSnapshotConfig'
360        required: true
361      responses:
362        204:
363          description: The VM instance was successfully snapshotted.
364        404:
365          description: The VM instance could not be snapshotted because it is not created.
366        405:
367          description: The VM instance could not be snapshotted because it is not booted.
368
369  /vm.coredump:
370    put:
371      summary: Takes a VM coredump.
372      requestBody:
373        description: The coredump configuration
374        content:
375          application/json:
376            schema:
377              $ref: '#/components/schemas/VmCoredumpData'
378        required: true
379      responses:
380        204:
381          description: The VM instance was successfully coredumped.
382        404:
383          description: The VM instance could not be coredumped because it is not created.
384        405:
385          description: The VM instance could not be coredumped because it is not booted.
386
387  /vm.restore:
388    put:
389      summary: Restore a VM from a snapshot.
390      requestBody:
391        description: The restore configuration
392        content:
393          application/json:
394            schema:
395              $ref: '#/components/schemas/RestoreConfig'
396        required: true
397      responses:
398        204:
399          description: The VM instance was successfully restored.
400        404:
401          description: The VM instance could not be restored because it is already created.
402
403  /vm.receive-migration:
404    put:
405      summary: Receive a VM migration from URL
406      requestBody:
407        description: The URL for the reception of migration state
408        content:
409          application/json:
410            schema:
411              $ref: '#/components/schemas/ReceiveMigrationData'
412        required: true
413      responses:
414        204:
415          description: The VM migration was successfully received.
416        500:
417          description: The VM migration could not be received.
418
419  /vm.send-migration:
420    put:
421      summary: Send a VM migration to URL
422      requestBody:
423        description: The URL for sending the migration state
424        content:
425          application/json:
426            schema:
427              $ref: '#/components/schemas/SendMigrationData'
428        required: true
429      responses:
430        204:
431          description: The VM migration was successfully sent.
432        500:
433          description: The VM migration could not be sent.
434
435components:
436  schemas:
437
438    VmmPingResponse:
439      required:
440      - version
441      type: object
442      properties:
443        version:
444          type: string
445      description: Virtual Machine Monitor information
446
447    VmInfo:
448      required:
449      - config
450      - state
451      type: object
452      properties:
453        config:
454          $ref: '#/components/schemas/VmConfig'
455        state:
456          type: string
457          enum: [Created, Running, Shutdown, Paused]
458        memory_actual_size:
459          type: integer
460          format: int64
461        device_tree:
462          type: object
463          additionalProperties:
464            $ref: '#/components/schemas/DeviceNode'
465      description: Virtual Machine information
466
467    DeviceNode:
468      type: object
469      properties:
470        id:
471          type: string
472        resources:
473          type: array
474          items:
475            # Rust enum type (with data) which can't be better represented here
476            type: object
477        children:
478          type: array
479          items:
480            type: string
481        pci_bdf:
482          type: string
483
484    VmCounters:
485      type: object
486      additionalProperties:
487        type: object
488        additionalProperties:
489          type: integer
490          format: int64
491
492    PciDeviceInfo:
493      required:
494      - id
495      - bdf
496      type: object
497      properties:
498        id:
499          type: string
500        bdf:
501          type: string
502      description: Information about a PCI device
503
504    VmConfig:
505      required:
506      - kernel
507      type: object
508      properties:
509        cpus:
510          $ref: '#/components/schemas/CpusConfig'
511        memory:
512          $ref: '#/components/schemas/MemoryConfig'
513        kernel:
514          $ref: '#/components/schemas/KernelConfig'
515        initramfs:
516          $ref: '#/components/schemas/InitramfsConfig'
517        cmdline:
518          $ref: '#/components/schemas/CmdLineConfig'
519        disks:
520          type: array
521          items:
522            $ref: '#/components/schemas/DiskConfig'
523        net:
524          type: array
525          items:
526            $ref: '#/components/schemas/NetConfig'
527        rng:
528          $ref: '#/components/schemas/RngConfig'
529        balloon:
530          $ref: '#/components/schemas/BalloonConfig'
531        fs:
532          type: array
533          items:
534            $ref: '#/components/schemas/FsConfig'
535        pmem:
536          type: array
537          items:
538            $ref: '#/components/schemas/PmemConfig'
539        serial:
540          $ref: '#/components/schemas/ConsoleConfig'
541        console:
542          $ref: '#/components/schemas/ConsoleConfig'
543        devices:
544          type: array
545          items:
546            $ref: '#/components/schemas/DeviceConfig'
547        vdpa:
548          type: array
549          items:
550            $ref: '#/components/schemas/VdpaConfig'
551        vsock:
552            $ref: '#/components/schemas/VsockConfig'
553        sgx_epc:
554          type: array
555          items:
556            $ref: '#/components/schemas/SgxEpcConfig'
557        tdx:
558          $ref: '#/components/schemas/TdxConfig'
559        numa:
560          type: array
561          items:
562            $ref: '#/components/schemas/NumaConfig'
563        iommu:
564          type: boolean
565          default: false
566        watchdog:
567          type: boolean
568          default: false
569        platform:
570          $ref: '#/components/schemas/PlatformConfig'
571      description: Virtual machine configuration
572
573    CpuAffinity:
574      type: object
575      properties:
576        vcpu:
577          type: integer
578        host_cpus:
579          type: array
580          items:
581            type: integer
582
583    CpuFeatures:
584      type: object
585      properties:
586        amx:
587          type: boolean
588
589    CpuTopology:
590      type: object
591      properties:
592        threads_per_core:
593          type: integer
594        cores_per_die:
595          type: integer
596        dies_per_package:
597          type: integer
598        packages:
599          type: integer
600
601    CpusConfig:
602      required:
603      - boot_vcpus
604      - max_vcpus
605      type: object
606      properties:
607        boot_vcpus:
608          minimum: 1
609          default: 1
610          type: integer
611        max_vcpus:
612          minimum: 1
613          default: 1
614          type: integer
615        topology:
616          $ref: '#/components/schemas/CpuTopology'
617        kvm_hyperv:
618          type: boolean
619          default: false
620        max_phys_bits:
621          type: integer
622        affinity:
623          type: array
624          items:
625            $ref: '#/components/schemas/CpuAffinity'
626        features:
627          $ref: '#/components/schemas/CpuFeatures'
628
629    PlatformConfig:
630      type: object
631      properties:
632        num_pci_segments:
633          type: integer
634          format: int16
635        iommu_segments:
636          type: array
637          items:
638            type: integer
639            format: int16
640        serial_number:
641          type: string
642
643    MemoryZoneConfig:
644      required:
645      - id
646      - size
647      type: object
648      properties:
649        id:
650          type: string
651        size:
652          type: integer
653          format: int64
654          default: 512 MB
655        file:
656          type: string
657        mergeable:
658          type: boolean
659          default: false
660        shared:
661          type: boolean
662          default: false
663        hugepages:
664          type: boolean
665          default: false
666        hugepage_size:
667          type: integer
668          format: int64
669        host_numa_node:
670          type: integer
671          format: int32
672        hotplug_size:
673          type: integer
674          format: int64
675        hotplugged_size:
676          type: integer
677          format: int64
678        prefault:
679          type: boolean
680          default: false
681
682    MemoryConfig:
683      required:
684      - size
685      type: object
686      properties:
687        size:
688          type: integer
689          format: int64
690          default: 512 MB
691        hotplug_size:
692          type: integer
693          format: int64
694        hotplugged_size:
695          type: integer
696          format: int64
697        mergeable:
698          type: boolean
699          default: false
700        hotplug_method:
701          type: string
702          default: "Acpi"
703        shared:
704          type: boolean
705          default: false
706        hugepages:
707          type: boolean
708          default: false
709        hugepage_size:
710          type: integer
711          format: int64
712        prefault:
713          type: boolean
714          default: false
715        zones:
716          type: array
717          items:
718            $ref: '#/components/schemas/MemoryZoneConfig'
719
720    KernelConfig:
721      required:
722      - path
723      type: object
724      properties:
725        path:
726          type: string
727
728    InitramfsConfig:
729      nullable: true
730      required:
731      - path
732      type: object
733      properties:
734        path:
735          type: string
736
737    CmdLineConfig:
738      required:
739      - args
740      type: object
741      properties:
742        args:
743          type: string
744
745    TokenBucket:
746      required:
747      - size
748      - refill_time
749      type: object
750      properties:
751        size:
752          type: integer
753          format: int64
754          minimum: 0
755          description: The total number of tokens this bucket can hold.
756        one_time_burst:
757          type: integer
758          format: int64
759          minimum: 0
760          description: The initial size of a token bucket.
761        refill_time:
762          type: integer
763          format: int64
764          minimum: 0
765          description: The amount of milliseconds it takes for the bucket to refill.
766      description:
767        Defines a token bucket with a maximum capacity (_size_), an initial burst size
768        (_one_time_burst_) and an interval for refilling purposes (_refill_time_).
769        The refill-rate is derived from _size_ and _refill_time_, and it is the constant
770        rate at which the tokens replenish. The refill process only starts happening after
771        the initial burst budget is consumed.
772        Consumption from the token bucket is unbounded in speed which allows for bursts
773        bound in size by the amount of tokens available.
774        Once the token bucket is empty, consumption speed is bound by the refill-rate.
775
776    RateLimiterConfig:
777      type: object
778      properties:
779        bandwidth:
780          $ref: '#/components/schemas/TokenBucket'
781        ops:
782          $ref: '#/components/schemas/TokenBucket'
783      description:
784        Defines an IO rate limiter with independent bytes/s and ops/s limits.
785        Limits are defined by configuring each of the _bandwidth_ and _ops_ token buckets.
786
787    DiskConfig:
788      required:
789      - path
790      type: object
791      properties:
792        path:
793          type: string
794        readonly:
795          type: boolean
796          default: false
797        direct:
798          type: boolean
799          default: false
800        iommu:
801          type: boolean
802          default: false
803        num_queues:
804          type: integer
805          default: 1
806        queue_size:
807          type: integer
808          default: 128
809        vhost_user:
810          type: boolean
811          default: false
812        vhost_socket:
813          type: string
814        poll_queue:
815          type: boolean
816          default: true
817        rate_limiter_config:
818            $ref: '#/components/schemas/RateLimiterConfig'
819        pci_segment:
820          type: integer
821          format: int16
822        id:
823          type: string
824
825    NetConfig:
826      type: object
827      properties:
828        tap:
829          type: string
830        ip:
831          type: string
832          default: "192.168.249.1"
833        mask:
834          type: string
835          default: "255.255.255.0"
836        mac:
837          type: string
838        iommu:
839          type: boolean
840          default: false
841        num_queues:
842          type: integer
843          default: 2
844        queue_size:
845          type: integer
846          default: 256
847        vhost_user:
848          type: boolean
849          default: false
850        vhost_socket:
851          type: string
852        vhost_mode:
853          type: string
854          default: "Client"
855        id:
856          type: string
857        pci_segment:
858          type: integer
859          format: int16
860        rate_limiter_config:
861            $ref: '#/components/schemas/RateLimiterConfig'
862
863    RngConfig:
864      required:
865      - src
866      type: object
867      properties:
868        src:
869          type: string
870          default: "/dev/urandom"
871        iommu:
872          type: boolean
873          default: false
874
875    BalloonConfig:
876      required:
877      - size
878      type: object
879      properties:
880        size:
881          type: integer
882          format: int64
883        deflate_on_oom:
884          type: boolean
885          default: false
886          description: Deflate balloon when the guest is under memory pressure.
887        free_page_reporting:
888          type: boolean
889          default: false
890          description: Enable guest to report free pages.
891
892    FsConfig:
893      required:
894      - num_queues
895      - queue_size
896      - socket
897      - tag
898      type: object
899      properties:
900        tag:
901          type: string
902        socket:
903          type: string
904        num_queues:
905          type: integer
906          default: 1
907        queue_size:
908          type: integer
909          default: 1024
910        pci_segment:
911          type: integer
912          format: int16
913        id:
914          type: string
915
916    PmemConfig:
917      required:
918      - file
919      type: object
920      properties:
921        file:
922          type: string
923        size:
924          type: integer
925          format: int64
926        iommu:
927          type: boolean
928          default: false
929        discard_writes:
930          type: boolean
931          default: false
932        pci_segment:
933          type: integer
934          format: int16
935        id:
936          type: string
937
938    ConsoleConfig:
939      required:
940      - mode
941      type: object
942      properties:
943        file:
944          type: string
945        mode:
946          type: string
947          enum: [Off, Pty, Tty, File, Null]
948        iommu:
949          type: boolean
950          default: false
951
952    DeviceConfig:
953      required:
954      - path
955      type: object
956      properties:
957        path:
958          type: string
959        iommu:
960          type: boolean
961          default: false
962        pci_segment:
963          type: integer
964          format: int16
965        id:
966          type: string
967
968    VdpaConfig:
969      required:
970      - path
971      - num_queues
972      type: object
973      properties:
974        path:
975          type: string
976        num_queues:
977          type: integer
978          default: 1
979        iommu:
980          type: boolean
981          default: false
982        pci_segment:
983          type: integer
984          format: int16
985        id:
986          type: string
987
988    VsockConfig:
989      required:
990      - cid
991      - socket
992      type: object
993      properties:
994        cid:
995          type: integer
996          format: int64
997          minimum: 3
998          description: Guest Vsock CID
999        socket:
1000          type: string
1001          description: Path to UNIX domain socket, used to proxy vsock connections.
1002        iommu:
1003          type: boolean
1004          default: false
1005        pci_segment:
1006          type: integer
1007          format: int16
1008        id:
1009          type: string
1010
1011    SgxEpcConfig:
1012      required:
1013      - id
1014      - size
1015      type: object
1016      properties:
1017        id:
1018          type: string
1019        size:
1020          type: integer
1021          format: int64
1022        prefault:
1023          type: boolean
1024          default: false
1025
1026    TdxConfig:
1027      required:
1028      - firmware
1029      type: object
1030      properties:
1031        firmware:
1032          type: string
1033          description: Path to the firmware that will be used to boot the TDx guest up.
1034
1035    NumaDistance:
1036      required:
1037      - destination
1038      - distance
1039      type: object
1040      properties:
1041        destination:
1042          type: integer
1043          format: int32
1044        distance:
1045          type: integer
1046          format: int32
1047
1048    NumaConfig:
1049      required:
1050      - guest_numa_id
1051      type: object
1052      properties:
1053        guest_numa_id:
1054          type: integer
1055          format: int32
1056        cpus:
1057          type: array
1058          items:
1059            type: integer
1060            format: int32
1061        distances:
1062          type: array
1063          items:
1064            $ref: '#/components/schemas/NumaDistance'
1065        memory_zones:
1066          type: array
1067          items:
1068            type: string
1069        sgx_epc_sections:
1070          type: array
1071          items:
1072            type: string
1073
1074    VmResize:
1075      type: object
1076      properties:
1077        desired_vcpus:
1078          minimum: 1
1079          type: integer
1080        desired_ram:
1081          description: desired memory ram in bytes
1082          type: integer
1083          format: int64
1084        desired_balloon:
1085          description: desired balloon size in bytes
1086          type: integer
1087          format: int64
1088
1089    VmResizeZone:
1090      type: object
1091      properties:
1092        id:
1093          type: string
1094        desired_ram:
1095          description: desired memory zone size in bytes
1096          type: integer
1097          format: int64
1098
1099    VmAddDevice:
1100      type: object
1101      properties:
1102        path:
1103          type: string
1104        iommu:
1105          type: boolean
1106          default: false
1107        id:
1108          type: string
1109
1110    VmRemoveDevice:
1111      type: object
1112      properties:
1113        id:
1114          type: string
1115
1116    VmSnapshotConfig:
1117      type: object
1118      properties:
1119        destination_url:
1120          type: string
1121
1122    VmCoredumpData:
1123      type: object
1124      properties:
1125        destination_url:
1126          type: string
1127
1128    RestoreConfig:
1129      required:
1130      - source_url
1131      type: object
1132      properties:
1133        source_url:
1134          type: string
1135        prefault:
1136          type: boolean
1137
1138    ReceiveMigrationData:
1139      required:
1140      - receiver_url
1141      type: object
1142      properties:
1143        receiver_url:
1144          type: string
1145
1146    SendMigrationData:
1147      required:
1148      - destination_url
1149      type: object
1150      properties:
1151        destination_url:
1152          type: string
1153        local:
1154          type: boolean
1155