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