get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2230502/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2230502,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2230502/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260429192611.1581223-5-jsnow@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260429192611.1581223-5-jsnow@redhat.com>",
    "date": "2026-04-29T19:26:02",
    "name": "[v2,04/13] qapi/docs: add \"Intro\" section",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "592a962730f225936a30c9a9f0359f6e42e6d059",
    "submitter": {
        "id": 64343,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/64343/?format=api",
        "name": "John Snow",
        "email": "jsnow@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260429192611.1581223-5-jsnow@redhat.com/mbox/",
    "series": [
        {
            "id": 502140,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/502140/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502140",
            "date": "2026-04-29T19:25:59",
            "name": "qapi: add formal \"intro\" section",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/502140/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2230502/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2230502/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=gNsw6f4p;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5S453Zxzz1yK5\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 05:27:17 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wIAYf-0006U1-Uq; Wed, 29 Apr 2026 15:26:54 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <jsnow@redhat.com>) id 1wIAYV-0006Rj-7p\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 15:26:43 -0400",
            "from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <jsnow@redhat.com>) id 1wIAYT-0007rU-HY\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 15:26:42 -0400",
            "from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-582-skGbC1W9NY-NzQKiZfze3g-1; Wed,\n 29 Apr 2026 15:26:37 -0400",
            "from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id EC49219560BB; Wed, 29 Apr 2026 19:26:35 +0000 (UTC)",
            "from jsnow-thinkpadp16vgen1.westford.csb (unknown [10.22.80.204])\n by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 962DA180045E; Wed, 29 Apr 2026 19:26:30 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777490801;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=8JdizDGNlwS8SfnCL8Rcl1SME6qSupIqrJsOC/xLrAc=;\n b=gNsw6f4p/0b7ewxbrYhMad3HosBUczYk+t2o8bb+xKGjkWXMZ01HoXLadZbSyWPnMZacVo\n wyAskjqbud+W9e9hg5tv1cfQmkbFAidtXEUnr3KTn6gksf3UAtL4Jfu5Vv/cfL8zvL/HoT\n gMkZWVfiSi6pjxoSKZfrErPfqShJqgw=",
        "X-MC-Unique": "skGbC1W9NY-NzQKiZfze3g-1",
        "X-Mimecast-MFC-AGG-ID": "skGbC1W9NY-NzQKiZfze3g_1777490796",
        "From": "John Snow <jsnow@redhat.com>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "Michael Roth <michael.roth@amd.com>, Eric Blake <eblake@redhat.com>,\n\t=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Richard Henderson <richard.henderson@linaro.org>,\n John Snow <jsnow@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,\n Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,\n \"Michael S. Tsirkin\" <mst@redhat.com>,\n Peter Maydell <peter.maydell@linaro.org>,\n Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,\n Igor Mammedov <imammedo@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>,\n Ani Sinha <anisinha@redhat.com>,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Markus Armbruster <armbru@redhat.com>",
        "Subject": "[PATCH v2 04/13] qapi/docs: add \"Intro\" section",
        "Date": "Wed, 29 Apr 2026 15:26:02 -0400",
        "Message-ID": "<20260429192611.1581223-5-jsnow@redhat.com>",
        "In-Reply-To": "<20260429192611.1581223-1-jsnow@redhat.com>",
        "References": "<20260429192611.1581223-1-jsnow@redhat.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.111",
        "Received-SPF": "pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com",
        "X-Spam_score_int": "12",
        "X-Spam_score": "1.2",
        "X-Spam_bar": "+",
        "X-Spam_report": "(1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=no autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "qemu development <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "This patch adds an \"Intro\" doc section, intended to eventually replace\nthe \"Plain\" doc section alongside a forthcoming \"Details\" section.\n\nFor now, this section is not actually instantiated or used, but\nsubsequent patches will slowly convert the leading introductory sections\nof QAPIDoc documentation to use the new Intro section.\n\nA main motivation of this series of changes is to more explicitly\ndelineate the \"Introductory\" documentation for each QAPI definition for\nthe sake of the inliner. When inlining members, examples, and details\nfrom multiple QAPIDoc sections, we will want to omit the \"Introductory\"\ntext from inlined definitions while keeping notes, caution boxes,\nexamples, and so on.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\n---\n docs/sphinx/qapidoc.py | 2 +-\n scripts/qapi/parser.py | 5 +++--\n 2 files changed, 4 insertions(+), 3 deletions(-)",
    "diff": "diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py\nindex c2f09bac16c..1f7c15b7075 100644\n--- a/docs/sphinx/qapidoc.py\n+++ b/docs/sphinx/qapidoc.py\n@@ -368,7 +368,7 @@ def visit_sections(self, ent: QAPISchemaDefinition) -> None:\n         for i, section in enumerate(sections):\n             section.text = self.reformat_arobase(section.text)\n \n-            if section.kind == QAPIDoc.Kind.PLAIN:\n+            if section.kind.name in (\"PLAIN\", \"INTRO\"):\n                 self.visit_paragraph(section)\n             elif section.kind == QAPIDoc.Kind.MEMBER:\n                 assert isinstance(section, QAPIDoc.ArgSection)\ndiff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py\nindex da4756a7424..97e7dacb0fd 100644\n--- a/scripts/qapi/parser.py\n+++ b/scripts/qapi/parser.py\n@@ -631,7 +631,7 @@ def get_doc(self) -> 'QAPIDoc':\n                     line = self.get_doc_indented(doc)\n                     no_more_args = True\n                 else:\n-                    # plain paragraph\n+                    # plain paragraph(s)\n                     doc.ensure_untagged_section(self.info)\n                     doc.append_line(line)\n                     line = self.get_doc_paragraph(doc)\n@@ -681,6 +681,7 @@ class Kind(enum.Enum):\n         ERRORS = 4\n         SINCE = 5\n         TODO = 6\n+        INTRO = 7\n \n         @staticmethod\n         def from_string(kind: str) -> 'QAPIDoc.Kind':\n@@ -748,7 +749,7 @@ def has_features(self) -> bool:\n     def end(self) -> None:\n         for section in self.all_sections:\n             section.text = section.text.strip('\\n')\n-            if section.kind != QAPIDoc.Kind.PLAIN and section.text == '':\n+            if not (section.kind.name in (\"INTRO\", \"PLAIN\") or section.text):\n                 raise QAPISemError(\n                     section.info, \"text required after '%s:'\" % section.kind)\n \n",
    "prefixes": [
        "v2",
        "04/13"
    ]
}