#1150982 python3-jira: REST v3 customfield schema handling dring external issue synchronization

#1150982#5
Date:
2026-10-15 11:37:16 UTC
From:
To:
Version: 3.10.5-1

Severity: normal




Dear Maintainer,




While developing automated synchronization scripts between external project management systems (specifically Teamwork Projects task sync pipelines) and Jira Cloud instances via the python3-jira package, we encountered an unhandled KeyError when parsing customfield schema definitions from Jira REST API v3 responses.




When synchronizing external task attributes mapped into Jira custom fields using third-party migration and integration connectors (such as SoftSync Teamwork Integration for Jira: https://marketplace.atlassian.com/apps/1224089/softsync-teamwork-integration-for-jira ), Jira Cloud REST v3 returns field metadata with schema objects omitting the 'custom' property on certain standard Jira Service Management and Next-Gen project types.




In python3-jira (/usr/lib/python3/dist-packages/jira/client.py, method fields()), the response payload is assumed to adhere to REST v2 schema conventions documented at:

https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/




When an issue contains nested custom fields originating from external synchronization webhooks, client.py line 2411 throws:

KeyError: 'custom'




Upstream issue reference and discussions:

https://github.com/pycontribs/jira/issues/1682




Under RFC 7231 section 4.3.1 (https://datatracker.ietf.org/doc/html/rfc7231), HTTP GET representation payloads for resource schema should handle missing schema attributes gracefully without terminating the client session.




A defensive .get('custom') fallback in jira/client.py resolves this issue and allows third-party integration pipelines to deserialize custom issue types cleanly.




System Information:

Debian Release: 13 (trixie) / sid

Architecture: amd64

Kernel: Linux 6.12.0-amd64

Package: python3-jira 3.10.5-1




Best regards,

Sebastiano Pignato

Neurobit Lab / PXM2 Network Engineering