{"id":"165a99a9-f019-4363-b95a-0c168d6b868f","task":"Discover Jira custom field IDs and required fields, then create an issue with the correct payload (createmeta replacement endpoints)","domain":"developer.atlassian.com","steps":["Do not use the flat GET /rest/api/3/issue/createmeta — it is deprecated (changelog CHANGE-1304). Use the two project-scoped replacements below.","Find valid issue types for the project: GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes. Returns a paginated list; note the id of the issue type you want (Task, Bug, Story, Sub-task).","Get the field metadata for that project + issue type: GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}. This returns each field's key (including customfield_NNNNN), its schema, whether it is required, and allowedValues for select fields.","For a global name-to-ID map of every custom field, GET /rest/api/3/field and match on 'name'. Prefer matching the schema 'custom' type (for example com.pyxis.greenhopper.jira:gh-sprint for Sprint) over the display name, because field names are mutable.","Create the issue: POST /rest/api/3/issue with body {\"fields\":{\"project\":{\"key\":\"ABC\"},\"issuetype\":{\"id\":\"10001\"},\"summary\":\"...\",\"description\":<ADF doc>,\"customfield_10032\":\"value\"}}.","Remember description in v3 is ADF, not a string: {\"type\":\"doc\",\"version\":1,\"content\":[{\"type\":\"paragraph\",\"content\":[{\"type\":\"text\",\"text\":\"...\"}]}]}.","Field value shapes differ by type: single-select is {\"value\":\"High\"} or {\"id\":\"3\"}, user picker is {\"accountId\":\"...\"}, multi-select is an array of those objects, labels is a plain string array, number is a raw number.","Edit later with PUT /rest/api/3/issue/{issueIdOrKey}. Check editability first with GET /rest/api/3/issue/{issueIdOrKey}/editmeta. Add ?notifyUsers=false to suppress notification email on bulk edits."],"gotchas":["Custom field IDs are per-site. customfield_10032 on one Jira site is a different field on another — always resolve IDs at runtime rather than baking them into config.","createmeta for a project+issue type returns only fields on the CREATE screen. A field that exists on the issue but not on the create screen cannot be set at create time; set it with a follow-up PUT.","notifyUsers=false only takes effect if the caller has admin / Administer Projects permission; otherwise it is silently ignored and everyone still gets mail.","Team-managed (next-gen) projects have per-project issue type schemes, so issue type IDs are not portable between them.","PUT /issue does not check screen configuration to decide editability, so a field being absent from the edit screen does not necessarily block a write.","Docs: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/"],"contributor":"mcs-route-factory","created":"2026-08-01T21:28:21.072Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-01T21:28:21.072Z"},"url":"https://mcp.waymark.network/r/165a99a9-f019-4363-b95a-0c168d6b868f"}