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.restore: 370 put: 371 summary: Restore a VM from a snapshot. 372 requestBody: 373 description: The restore configuration 374 content: 375 application/json: 376 schema: 377 $ref: '#/components/schemas/RestoreConfig' 378 required: true 379 responses: 380 204: 381 description: The VM instance was successfully restored. 382 404: 383 description: The VM instance could not be restored because it is already created. 384 385 /vm.receive-migration: 386 put: 387 summary: Receive a VM migration from URL 388 requestBody: 389 description: The URL for the reception of migration state 390 content: 391 application/json: 392 schema: 393 $ref: '#/components/schemas/ReceiveMigrationData' 394 required: true 395 responses: 396 204: 397 description: The VM migration was successfully received. 398 500: 399 description: The VM migration could not be received. 400 401 /vm.send-migration: 402 put: 403 summary: Send a VM migration to URL 404 requestBody: 405 description: The URL for sending the migration state 406 content: 407 application/json: 408 schema: 409 $ref: '#/components/schemas/SendMigrationData' 410 required: true 411 responses: 412 204: 413 description: The VM migration was successfully sent. 414 500: 415 description: The VM migration could not be sent. 416 417components: 418 schemas: 419 420 VmmPingResponse: 421 required: 422 - version 423 type: object 424 properties: 425 version: 426 type: string 427 description: Virtual Machine Monitor information 428 429 VmInfo: 430 required: 431 - config 432 - state 433 type: object 434 properties: 435 config: 436 $ref: '#/components/schemas/VmConfig' 437 state: 438 type: string 439 enum: [Created, Running, Shutdown, Paused] 440 memory_actual_size: 441 type: integer 442 format: int64 443 device_tree: 444 type: object 445 additionalProperties: 446 $ref: '#/components/schemas/DeviceNode' 447 description: Virtual Machine information 448 449 DeviceNode: 450 type: object 451 properties: 452 id: 453 type: string 454 resources: 455 type: array 456 items: 457 # Rust enum type (with data) which can't be better represented here 458 type: object 459 children: 460 type: array 461 items: 462 type: string 463 pci_bdf: 464 type: string 465 466 VmCounters: 467 type: object 468 additionalProperties: 469 type: object 470 additionalProperties: 471 type: integer 472 format: int64 473 474 PciDeviceInfo: 475 required: 476 - id 477 - bdf 478 type: object 479 properties: 480 id: 481 type: string 482 bdf: 483 type: string 484 description: Information about a PCI device 485 486 VmConfig: 487 required: 488 - kernel 489 type: object 490 properties: 491 cpus: 492 $ref: '#/components/schemas/CpusConfig' 493 memory: 494 $ref: '#/components/schemas/MemoryConfig' 495 kernel: 496 $ref: '#/components/schemas/KernelConfig' 497 initramfs: 498 $ref: '#/components/schemas/InitramfsConfig' 499 cmdline: 500 $ref: '#/components/schemas/CmdLineConfig' 501 disks: 502 type: array 503 items: 504 $ref: '#/components/schemas/DiskConfig' 505 net: 506 type: array 507 items: 508 $ref: '#/components/schemas/NetConfig' 509 rng: 510 $ref: '#/components/schemas/RngConfig' 511 balloon: 512 $ref: '#/components/schemas/BalloonConfig' 513 fs: 514 type: array 515 items: 516 $ref: '#/components/schemas/FsConfig' 517 pmem: 518 type: array 519 items: 520 $ref: '#/components/schemas/PmemConfig' 521 serial: 522 $ref: '#/components/schemas/ConsoleConfig' 523 console: 524 $ref: '#/components/schemas/ConsoleConfig' 525 devices: 526 type: array 527 items: 528 $ref: '#/components/schemas/DeviceConfig' 529 vdpa: 530 type: array 531 items: 532 $ref: '#/components/schemas/VdpaConfig' 533 vsock: 534 $ref: '#/components/schemas/VsockConfig' 535 sgx_epc: 536 type: array 537 items: 538 $ref: '#/components/schemas/SgxEpcConfig' 539 tdx: 540 $ref: '#/components/schemas/TdxConfig' 541 numa: 542 type: array 543 items: 544 $ref: '#/components/schemas/NumaConfig' 545 iommu: 546 type: boolean 547 default: false 548 watchdog: 549 type: boolean 550 default: false 551 platform: 552 $ref: '#/components/schemas/PlatformConfig' 553 description: Virtual machine configuration 554 555 CpuAffinity: 556 type: object 557 properties: 558 vcpu: 559 type: integer 560 host_cpus: 561 type: array 562 items: 563 type: integer 564 565 CpuFeatures: 566 type: object 567 properties: 568 amx: 569 type: boolean 570 571 CpuTopology: 572 type: object 573 properties: 574 threads_per_core: 575 type: integer 576 cores_per_die: 577 type: integer 578 dies_per_package: 579 type: integer 580 packages: 581 type: integer 582 583 CpusConfig: 584 required: 585 - boot_vcpus 586 - max_vcpus 587 type: object 588 properties: 589 boot_vcpus: 590 minimum: 1 591 default: 1 592 type: integer 593 max_vcpus: 594 minimum: 1 595 default: 1 596 type: integer 597 topology: 598 $ref: '#/components/schemas/CpuTopology' 599 max_phys_bits: 600 type: integer 601 affinity: 602 type: array 603 items: 604 $ref: '#/components/schemas/CpuAffinity' 605 features: 606 $ref: '#/components/schemas/CpuFeatures' 607 608 PlatformConfig: 609 type: object 610 properties: 611 num_pci_segments: 612 type: integer 613 format: int16 614 iommu_segments: 615 type: array 616 items: 617 type: integer 618 format: int16 619 620 MemoryZoneConfig: 621 required: 622 - id 623 - size 624 type: object 625 properties: 626 id: 627 type: string 628 size: 629 type: integer 630 format: int64 631 default: 512 MB 632 file: 633 type: string 634 mergeable: 635 type: boolean 636 default: false 637 shared: 638 type: boolean 639 default: false 640 hugepages: 641 type: boolean 642 default: false 643 hugepage_size: 644 type: integer 645 format: int64 646 host_numa_node: 647 type: integer 648 format: int32 649 hotplug_size: 650 type: integer 651 format: int64 652 hotplugged_size: 653 type: integer 654 format: int64 655 prefault: 656 type: boolean 657 default: false 658 659 MemoryConfig: 660 required: 661 - size 662 type: object 663 properties: 664 size: 665 type: integer 666 format: int64 667 default: 512 MB 668 hotplug_size: 669 type: integer 670 format: int64 671 hotplugged_size: 672 type: integer 673 format: int64 674 mergeable: 675 type: boolean 676 default: false 677 hotplug_method: 678 type: string 679 default: "Acpi" 680 shared: 681 type: boolean 682 default: false 683 hugepages: 684 type: boolean 685 default: false 686 hugepage_size: 687 type: integer 688 format: int64 689 prefault: 690 type: boolean 691 default: false 692 zones: 693 type: array 694 items: 695 $ref: '#/components/schemas/MemoryZoneConfig' 696 697 KernelConfig: 698 required: 699 - path 700 type: object 701 properties: 702 path: 703 type: string 704 705 InitramfsConfig: 706 nullable: true 707 required: 708 - path 709 type: object 710 properties: 711 path: 712 type: string 713 714 CmdLineConfig: 715 required: 716 - args 717 type: object 718 properties: 719 args: 720 type: string 721 722 TokenBucket: 723 required: 724 - size 725 - refill_time 726 type: object 727 properties: 728 size: 729 type: integer 730 format: int64 731 minimum: 0 732 description: The total number of tokens this bucket can hold. 733 one_time_burst: 734 type: integer 735 format: int64 736 minimum: 0 737 description: The initial size of a token bucket. 738 refill_time: 739 type: integer 740 format: int64 741 minimum: 0 742 description: The amount of milliseconds it takes for the bucket to refill. 743 description: 744 Defines a token bucket with a maximum capacity (_size_), an initial burst size 745 (_one_time_burst_) and an interval for refilling purposes (_refill_time_). 746 The refill-rate is derived from _size_ and _refill_time_, and it is the constant 747 rate at which the tokens replenish. The refill process only starts happening after 748 the initial burst budget is consumed. 749 Consumption from the token bucket is unbounded in speed which allows for bursts 750 bound in size by the amount of tokens available. 751 Once the token bucket is empty, consumption speed is bound by the refill-rate. 752 753 RateLimiterConfig: 754 type: object 755 properties: 756 bandwidth: 757 $ref: '#/components/schemas/TokenBucket' 758 ops: 759 $ref: '#/components/schemas/TokenBucket' 760 description: 761 Defines an IO rate limiter with independent bytes/s and ops/s limits. 762 Limits are defined by configuring each of the _bandwidth_ and _ops_ token buckets. 763 764 DiskConfig: 765 required: 766 - path 767 type: object 768 properties: 769 path: 770 type: string 771 readonly: 772 type: boolean 773 default: false 774 direct: 775 type: boolean 776 default: false 777 iommu: 778 type: boolean 779 default: false 780 num_queues: 781 type: integer 782 default: 1 783 queue_size: 784 type: integer 785 default: 128 786 vhost_user: 787 type: boolean 788 default: false 789 vhost_socket: 790 type: string 791 poll_queue: 792 type: boolean 793 default: true 794 rate_limiter_config: 795 $ref: '#/components/schemas/RateLimiterConfig' 796 pci_segment: 797 type: integer 798 format: int16 799 id: 800 type: string 801 802 NetConfig: 803 type: object 804 properties: 805 tap: 806 type: string 807 ip: 808 type: string 809 default: "192.168.249.1" 810 mask: 811 type: string 812 default: "255.255.255.0" 813 mac: 814 type: string 815 iommu: 816 type: boolean 817 default: false 818 num_queues: 819 type: integer 820 default: 2 821 queue_size: 822 type: integer 823 default: 256 824 vhost_user: 825 type: boolean 826 default: false 827 vhost_socket: 828 type: string 829 vhost_mode: 830 type: string 831 default: "Client" 832 id: 833 type: string 834 pci_segment: 835 type: integer 836 format: int16 837 rate_limiter_config: 838 $ref: '#/components/schemas/RateLimiterConfig' 839 840 RngConfig: 841 required: 842 - src 843 type: object 844 properties: 845 src: 846 type: string 847 default: "/dev/urandom" 848 iommu: 849 type: boolean 850 default: false 851 852 BalloonConfig: 853 required: 854 - size 855 type: object 856 properties: 857 size: 858 type: integer 859 format: int64 860 deflate_on_oom: 861 type: boolean 862 default: false 863 description: Deflate balloon when the guest is under memory pressure. 864 free_page_reporting: 865 type: boolean 866 default: false 867 description: Enable guest to report free pages. 868 869 FsConfig: 870 required: 871 - cache_size 872 - dax 873 - num_queues 874 - queue_size 875 - socket 876 - tag 877 type: object 878 properties: 879 tag: 880 type: string 881 socket: 882 type: string 883 num_queues: 884 type: integer 885 default: 1 886 queue_size: 887 type: integer 888 default: 1024 889 dax: 890 type: boolean 891 default: true 892 cache_size: 893 type: integer 894 format: int64 895 default: 8589934592 896 pci_segment: 897 type: integer 898 format: int16 899 id: 900 type: string 901 902 PmemConfig: 903 required: 904 - file 905 type: object 906 properties: 907 file: 908 type: string 909 size: 910 type: integer 911 format: int64 912 iommu: 913 type: boolean 914 default: false 915 mergeable: 916 type: boolean 917 default: false 918 discard_writes: 919 type: boolean 920 default: false 921 pci_segment: 922 type: integer 923 format: int16 924 id: 925 type: string 926 927 ConsoleConfig: 928 required: 929 - mode 930 type: object 931 properties: 932 file: 933 type: string 934 mode: 935 type: string 936 enum: [Off, Pty, Tty, File, Null] 937 iommu: 938 type: boolean 939 default: false 940 941 DeviceConfig: 942 required: 943 - path 944 type: object 945 properties: 946 path: 947 type: string 948 iommu: 949 type: boolean 950 default: false 951 pci_segment: 952 type: integer 953 format: int16 954 id: 955 type: string 956 957 VdpaConfig: 958 required: 959 - path 960 - num_queues 961 type: object 962 properties: 963 path: 964 type: string 965 num_queues: 966 type: integer 967 default: 1 968 iommu: 969 type: boolean 970 default: false 971 pci_segment: 972 type: integer 973 format: int16 974 id: 975 type: string 976 977 VsockConfig: 978 required: 979 - cid 980 - socket 981 type: object 982 properties: 983 cid: 984 type: integer 985 format: int64 986 minimum: 3 987 description: Guest Vsock CID 988 socket: 989 type: string 990 description: Path to UNIX domain socket, used to proxy vsock connections. 991 iommu: 992 type: boolean 993 default: false 994 pci_segment: 995 type: integer 996 format: int16 997 id: 998 type: string 999 1000 SgxEpcConfig: 1001 required: 1002 - id 1003 - size 1004 type: object 1005 properties: 1006 id: 1007 type: string 1008 size: 1009 type: integer 1010 format: int64 1011 prefault: 1012 type: boolean 1013 default: false 1014 1015 TdxConfig: 1016 required: 1017 - firmware 1018 type: object 1019 properties: 1020 firmware: 1021 type: string 1022 description: Path to the firmware that will be used to boot the TDx guest up. 1023 1024 NumaDistance: 1025 required: 1026 - destination 1027 - distance 1028 type: object 1029 properties: 1030 destination: 1031 type: integer 1032 format: int32 1033 distance: 1034 type: integer 1035 format: int32 1036 1037 NumaConfig: 1038 required: 1039 - guest_numa_id 1040 type: object 1041 properties: 1042 guest_numa_id: 1043 type: integer 1044 format: int32 1045 cpus: 1046 type: array 1047 items: 1048 type: integer 1049 format: int32 1050 distances: 1051 type: array 1052 items: 1053 $ref: '#/components/schemas/NumaDistance' 1054 memory_zones: 1055 type: array 1056 items: 1057 type: string 1058 sgx_epc_sections: 1059 type: array 1060 items: 1061 type: string 1062 1063 VmResize: 1064 type: object 1065 properties: 1066 desired_vcpus: 1067 minimum: 1 1068 type: integer 1069 desired_ram: 1070 description: desired memory ram in bytes 1071 type: integer 1072 format: int64 1073 desired_balloon: 1074 description: desired balloon size in bytes 1075 type: integer 1076 format: int64 1077 1078 VmResizeZone: 1079 type: object 1080 properties: 1081 id: 1082 type: string 1083 desired_ram: 1084 description: desired memory zone size in bytes 1085 type: integer 1086 format: int64 1087 1088 VmAddDevice: 1089 type: object 1090 properties: 1091 path: 1092 type: string 1093 iommu: 1094 type: boolean 1095 default: false 1096 id: 1097 type: string 1098 1099 VmRemoveDevice: 1100 type: object 1101 properties: 1102 id: 1103 type: string 1104 1105 VmSnapshotConfig: 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