summaryrefslogtreecommitdiff
path: root/qapi/qapi-schema.json
blob: db61bfd6886c27b9c9c67d16e2e088c31b78fdc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# -*- Mode: Python -*-
##
# = Introduction
#
# This document describes all commands currently supported by QMP.
#
# Most of the time their usage is exactly the same as in the user Monitor, this
# means that any other document which also describe commands (the manpage,
# QEMU's manual, etc) can and should be consulted.
#
# QMP has two types of commands: regular and query commands. Regular commands
# usually change the Virtual Machine's state someway, while query commands just
# return information. The sections below are divided accordingly.
#
# It's important to observe that all communication examples are formatted in
# a reader-friendly way, so that they're easier to understand. However, in real
# protocol usage, they're emitted as a single line.
#
# Also, the following notation is used to denote data flow:
#
# Example:
#
# | -> data issued by the Client
# | <- Server data response
#
# Please, refer to the QMP specification (docs/interop/qmp-spec.txt) for
# detailed information on the Server command and response formats.
#
# = Stability Considerations
#
# The current QMP command set (described in this file) may be useful for a
# number of use cases, however it's limited and several commands have bad
# defined semantics, specially with regard to command completion.
#
# These problems are going to be solved incrementally in the next QEMU releases
# and we're going to establish a deprecation policy for badly defined commands.
#
# If you're planning to adopt QMP, please observe the following:
#
#     1. The deprecation policy will take effect and be documented soon, please
#        check the documentation of each used command as soon as a new release of
#        QEMU is available
#
#     2. DO NOT rely on anything which is not explicit documented
#
#     3. Errors, in special, are not documented. Applications should NOT check
#        for specific errors classes or data (it's strongly recommended to only
#        check for the "error" key)
#
##

{ 'pragma': { 'doc-required': true } }

# Whitelists to permit QAPI rule violations; think twice before you
# add to them!
{ 'pragma': {
    # Commands allowed to return a non-dictionary:
    'returns-whitelist': [
        'human-monitor-command',
        'qom-get',
        'query-migrate-cache-size',
        'query-tpm-models',
        'query-tpm-types',
        'ringbuf-read' ],
    'name-case-whitelist': [
        'ACPISlotType',             # DIMM, visible through query-acpi-ospm-status
        'CpuInfoMIPS',              # PC, visible through query-cpu
        'CpuInfoTricore',           # PC, visible through query-cpu
        'BlockdevVmdkSubformat',    # all members, to match VMDK spec spellings
        'BlockdevVmdkAdapterType',  # legacyESX, to match VMDK spec spellings
        'QapiErrorClass',           # all members, visible through errors
        'UuidInfo',                 # UUID, visible through query-uuid
        'X86CPURegister32',         # all members, visible indirectly through qom-get
        'q_obj_CpuInfo-base'        # CPU, visible through query-cpu
    ] } }

# Documentation generated with qapi-gen.py is in source order, with
# included sub-schemas inserted at the first include directive
# (subsequent include directives have no effect).  To get a sane and
# stable order, it's best to include each sub-schema just once, or
# include it first right here.

{ 'include': 'common.json' }
{ 'include': 'sockets.json' }
{ 'include': 'run-state.json' }
{ 'include': 'crypto.json' }
{ 'include': 'block.json' }
{ 'include': 'char.json' }
{ 'include': 'job.json' }
{ 'include': 'net.json' }
{ 'include': 'rdma.json' }
{ 'include': 'rocker.json' }
{ 'include': 'tpm.json' }
{ 'include': 'ui.json' }
{ 'include': 'migration.json' }
{ 'include': 'transaction.json' }
{ 'include': 'trace.json' }
{ 'include': 'introspect.json' }
{ 'include': 'misc.json' }
{ 'include': 'target.json' }