xref: /cloud-hypervisor/vmm/src/api/openapi/cloud-hypervisor.yaml (revision eea9bcea38e0c5649f444c829f3a4f9c22aa486c)
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/VmAddDevice"
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        kernel:
506          type: string
507        cmdline:
508          type: string
509        initramfs:
510          type: string
511      description: Payloads to boot in guest
512
513    VmConfig:
514      required:
515        - payload
516      type: object
517      properties:
518        cpus:
519          $ref: "#/components/schemas/CpusConfig"
520        memory:
521          $ref: "#/components/schemas/MemoryConfig"
522        payload:
523          $ref: "#/components/schemas/PayloadConfig"
524        disks:
525          type: array
526          items:
527            $ref: "#/components/schemas/DiskConfig"
528        net:
529          type: array
530          items:
531            $ref: "#/components/schemas/NetConfig"
532        rng:
533          $ref: "#/components/schemas/RngConfig"
534        balloon:
535          $ref: "#/components/schemas/BalloonConfig"
536        fs:
537          type: array
538          items:
539            $ref: "#/components/schemas/FsConfig"
540        pmem:
541          type: array
542          items:
543            $ref: "#/components/schemas/PmemConfig"
544        serial:
545          $ref: "#/components/schemas/ConsoleConfig"
546        console:
547          $ref: "#/components/schemas/ConsoleConfig"
548        devices:
549          type: array
550          items:
551            $ref: "#/components/schemas/DeviceConfig"
552        vdpa:
553          type: array
554          items:
555            $ref: "#/components/schemas/VdpaConfig"
556        vsock:
557          $ref: "#/components/schemas/VsockConfig"
558        sgx_epc:
559          type: array
560          items:
561            $ref: "#/components/schemas/SgxEpcConfig"
562        numa:
563          type: array
564          items:
565            $ref: "#/components/schemas/NumaConfig"
566        iommu:
567          type: boolean
568          default: false
569        watchdog:
570          type: boolean
571          default: false
572        platform:
573          $ref: "#/components/schemas/PlatformConfig"
574      description: Virtual machine configuration
575
576    CpuAffinity:
577      type: object
578      properties:
579        vcpu:
580          type: integer
581        host_cpus:
582          type: array
583          items:
584            type: integer
585
586    CpuFeatures:
587      type: object
588      properties:
589        amx:
590          type: boolean
591
592    CpuTopology:
593      type: object
594      properties:
595        threads_per_core:
596          type: integer
597        cores_per_die:
598          type: integer
599        dies_per_package:
600          type: integer
601        packages:
602          type: integer
603
604    CpusConfig:
605      required:
606        - boot_vcpus
607        - max_vcpus
608      type: object
609      properties:
610        boot_vcpus:
611          minimum: 1
612          default: 1
613          type: integer
614        max_vcpus:
615          minimum: 1
616          default: 1
617          type: integer
618        topology:
619          $ref: "#/components/schemas/CpuTopology"
620        kvm_hyperv:
621          type: boolean
622          default: false
623        max_phys_bits:
624          type: integer
625        affinity:
626          type: array
627          items:
628            $ref: "#/components/schemas/CpuAffinity"
629        features:
630          $ref: "#/components/schemas/CpuFeatures"
631
632    PlatformConfig:
633      type: object
634      properties:
635        num_pci_segments:
636          type: integer
637          format: int16
638        iommu_segments:
639          type: array
640          items:
641            type: integer
642            format: int16
643        serial_number:
644          type: string
645        uuid:
646          type: string
647        oem_strings:
648          type: array
649          items:
650            type: string
651        tdx:
652          type: boolean
653          default: false
654
655    MemoryZoneConfig:
656      required:
657        - id
658        - size
659      type: object
660      properties:
661        id:
662          type: string
663        size:
664          type: integer
665          format: int64
666          default: 512 MB
667        file:
668          type: string
669        mergeable:
670          type: boolean
671          default: false
672        shared:
673          type: boolean
674          default: false
675        hugepages:
676          type: boolean
677          default: false
678        hugepage_size:
679          type: integer
680          format: int64
681        host_numa_node:
682          type: integer
683          format: int32
684        hotplug_size:
685          type: integer
686          format: int64
687        hotplugged_size:
688          type: integer
689          format: int64
690        prefault:
691          type: boolean
692          default: false
693
694    MemoryConfig:
695      required:
696        - size
697      type: object
698      properties:
699        size:
700          type: integer
701          format: int64
702          default: 512 MB
703        hotplug_size:
704          type: integer
705          format: int64
706        hotplugged_size:
707          type: integer
708          format: int64
709        mergeable:
710          type: boolean
711          default: false
712        hotplug_method:
713          type: string
714          default: "Acpi"
715        shared:
716          type: boolean
717          default: false
718        hugepages:
719          type: boolean
720          default: false
721        hugepage_size:
722          type: integer
723          format: int64
724        prefault:
725          type: boolean
726          default: false
727        zones:
728          type: array
729          items:
730            $ref: "#/components/schemas/MemoryZoneConfig"
731
732    TokenBucket:
733      required:
734        - size
735        - refill_time
736      type: object
737      properties:
738        size:
739          type: integer
740          format: int64
741          minimum: 0
742          description: The total number of tokens this bucket can hold.
743        one_time_burst:
744          type: integer
745          format: int64
746          minimum: 0
747          description: The initial size of a token bucket.
748        refill_time:
749          type: integer
750          format: int64
751          minimum: 0
752          description: The amount of milliseconds it takes for the bucket to refill.
753      description:
754        Defines a token bucket with a maximum capacity (_size_), an initial burst size
755        (_one_time_burst_) and an interval for refilling purposes (_refill_time_).
756        The refill-rate is derived from _size_ and _refill_time_, and it is the constant
757        rate at which the tokens replenish. The refill process only starts happening after
758        the initial burst budget is consumed.
759        Consumption from the token bucket is unbounded in speed which allows for bursts
760        bound in size by the amount of tokens available.
761        Once the token bucket is empty, consumption speed is bound by the refill-rate.
762
763    RateLimiterConfig:
764      type: object
765      properties:
766        bandwidth:
767          $ref: "#/components/schemas/TokenBucket"
768        ops:
769          $ref: "#/components/schemas/TokenBucket"
770      description:
771        Defines an IO rate limiter with independent bytes/s and ops/s limits.
772        Limits are defined by configuring each of the _bandwidth_ and _ops_ token buckets.
773
774    DiskConfig:
775      required:
776        - path
777      type: object
778      properties:
779        path:
780          type: string
781        readonly:
782          type: boolean
783          default: false
784        direct:
785          type: boolean
786          default: false
787        iommu:
788          type: boolean
789          default: false
790        num_queues:
791          type: integer
792          default: 1
793        queue_size:
794          type: integer
795          default: 128
796        vhost_user:
797          type: boolean
798          default: false
799        vhost_socket:
800          type: string
801        rate_limiter_config:
802          $ref: "#/components/schemas/RateLimiterConfig"
803        pci_segment:
804          type: integer
805          format: int16
806        id:
807          type: string
808
809    NetConfig:
810      type: object
811      properties:
812        tap:
813          type: string
814        ip:
815          type: string
816          default: "192.168.249.1"
817        mask:
818          type: string
819          default: "255.255.255.0"
820        mac:
821          type: string
822        host_mac:
823          type: string
824        mtu:
825          type: integer
826        iommu:
827          type: boolean
828          default: false
829        num_queues:
830          type: integer
831          default: 2
832        queue_size:
833          type: integer
834          default: 256
835        vhost_user:
836          type: boolean
837          default: false
838        vhost_socket:
839          type: string
840        vhost_mode:
841          type: string
842          default: "Client"
843        id:
844          type: string
845        pci_segment:
846          type: integer
847          format: int16
848        rate_limiter_config:
849          $ref: "#/components/schemas/RateLimiterConfig"
850
851    RngConfig:
852      required:
853        - src
854      type: object
855      properties:
856        src:
857          type: string
858          default: "/dev/urandom"
859        iommu:
860          type: boolean
861          default: false
862
863    BalloonConfig:
864      required:
865        - size
866      type: object
867      properties:
868        size:
869          type: integer
870          format: int64
871        deflate_on_oom:
872          type: boolean
873          default: false
874          description: Deflate balloon when the guest is under memory pressure.
875        free_page_reporting:
876          type: boolean
877          default: false
878          description: Enable guest to report free pages.
879
880    FsConfig:
881      required:
882        - num_queues
883        - queue_size
884        - socket
885        - tag
886      type: object
887      properties:
888        tag:
889          type: string
890        socket:
891          type: string
892        num_queues:
893          type: integer
894          default: 1
895        queue_size:
896          type: integer
897          default: 1024
898        pci_segment:
899          type: integer
900          format: int16
901        id:
902          type: string
903
904    PmemConfig:
905      required:
906        - file
907      type: object
908      properties:
909        file:
910          type: string
911        size:
912          type: integer
913          format: int64
914        iommu:
915          type: boolean
916          default: false
917        discard_writes:
918          type: boolean
919          default: false
920        pci_segment:
921          type: integer
922          format: int16
923        id:
924          type: string
925
926    ConsoleConfig:
927      required:
928        - mode
929      type: object
930      properties:
931        file:
932          type: string
933        mode:
934          type: string
935          enum: [Off, Pty, Tty, File, Null]
936        iommu:
937          type: boolean
938          default: false
939
940    DeviceConfig:
941      required:
942        - path
943      type: object
944      properties:
945        path:
946          type: string
947        iommu:
948          type: boolean
949          default: false
950        pci_segment:
951          type: integer
952          format: int16
953        id:
954          type: string
955
956    VdpaConfig:
957      required:
958        - path
959        - num_queues
960      type: object
961      properties:
962        path:
963          type: string
964        num_queues:
965          type: integer
966          default: 1
967        iommu:
968          type: boolean
969          default: false
970        pci_segment:
971          type: integer
972          format: int16
973        id:
974          type: string
975
976    VsockConfig:
977      required:
978        - cid
979        - socket
980      type: object
981      properties:
982        cid:
983          type: integer
984          format: int64
985          minimum: 3
986          description: Guest Vsock CID
987        socket:
988          type: string
989          description: Path to UNIX domain socket, used to proxy vsock connections.
990        iommu:
991          type: boolean
992          default: false
993        pci_segment:
994          type: integer
995          format: int16
996        id:
997          type: string
998
999    SgxEpcConfig:
1000      required:
1001        - id
1002        - size
1003      type: object
1004      properties:
1005        id:
1006          type: string
1007        size:
1008          type: integer
1009          format: int64
1010        prefault:
1011          type: boolean
1012          default: false
1013
1014    NumaDistance:
1015      required:
1016        - destination
1017        - distance
1018      type: object
1019      properties:
1020        destination:
1021          type: integer
1022          format: int32
1023        distance:
1024          type: integer
1025          format: int32
1026
1027    NumaConfig:
1028      required:
1029        - guest_numa_id
1030      type: object
1031      properties:
1032        guest_numa_id:
1033          type: integer
1034          format: int32
1035        cpus:
1036          type: array
1037          items:
1038            type: integer
1039            format: int32
1040        distances:
1041          type: array
1042          items:
1043            $ref: "#/components/schemas/NumaDistance"
1044        memory_zones:
1045          type: array
1046          items:
1047            type: string
1048        sgx_epc_sections:
1049          type: array
1050          items:
1051            type: string
1052
1053    VmResize:
1054      type: object
1055      properties:
1056        desired_vcpus:
1057          minimum: 1
1058          type: integer
1059        desired_ram:
1060          description: desired memory ram in bytes
1061          type: integer
1062          format: int64
1063        desired_balloon:
1064          description: desired balloon size in bytes
1065          type: integer
1066          format: int64
1067
1068    VmResizeZone:
1069      type: object
1070      properties:
1071        id:
1072          type: string
1073        desired_ram:
1074          description: desired memory zone size in bytes
1075          type: integer
1076          format: int64
1077
1078    VmAddDevice:
1079      type: object
1080      properties:
1081        path:
1082          type: string
1083        iommu:
1084          type: boolean
1085          default: false
1086        id:
1087          type: string
1088
1089    VmRemoveDevice:
1090      type: object
1091      properties:
1092        id:
1093          type: string
1094
1095    VmSnapshotConfig:
1096      type: object
1097      properties:
1098        destination_url:
1099          type: string
1100
1101    VmCoredumpData:
1102      type: object
1103      properties:
1104        destination_url:
1105          type: string
1106
1107    RestoreConfig:
1108      required:
1109        - source_url
1110      type: object
1111      properties:
1112        source_url:
1113          type: string
1114        prefault:
1115          type: boolean
1116
1117    ReceiveMigrationData:
1118      required:
1119        - receiver_url
1120      type: object
1121      properties:
1122        receiver_url:
1123          type: string
1124
1125    SendMigrationData:
1126      required:
1127        - destination_url
1128      type: object
1129      properties:
1130        destination_url:
1131          type: string
1132        local:
1133          type: boolean
1134