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