{
  "id": "LC-ALREADY-CONVERTED-SC",
  "name": "Re-converting a converted Lead surfaces SF-native ALREADY_CONVERTED statusCode",
  "description": "W1 regression: when FailAlreadyConverted customError fires, the response's errors[0].statusCode must be 'ALREADY_CONVERTED' (SF-reserved code) — NOT the generic 'FLOW_ERROR' sentinel. Clients that pattern-match on statusCode (including any Salesforce-compatible SDK) depend on this.",
  "object": "LeadConvert",
  "method": "POST",
  "endpoint": "/services/data/v63.0/actions/standard/convertLead",
  "setup": {
    "method": "POST",
    "endpoint": "/services/data/v63.0/actions/standard/convertLead",
    "payload": {
      "inputs": [
        {
          "leadId": "{seed_Lead_0}",
          "convertedStatus": "Converted",
          "accountId": "",
          "doNotCreateOpportunity": true
        }
      ]
    }
  },
  "payload": {
    "inputs": [
      {
        "leadId": "{seed_Lead_0}",
        "convertedStatus": "Converted",
        "accountId": "",
        "doNotCreateOpportunity": true
      }
    ]
  },
  "expects": {
    "status_code": 200
  },
  "response_assertions": [
    {"field": "0.isSuccess", "operator": "eq", "value": false},
    {"field": "0.errors.0.statusCode", "operator": "eq", "value": "ALREADY_CONVERTED"},
    {"field": "0.errors.0.message", "operator": "contains", "value": "already converted"},
    {"field": "0.errors.0.message", "operator": "not_contains", "value": "internal error"},
    {"field": "0.errors.0.message", "operator": "not_contains", "value": "FailAlreadyConverted"}
  ],
  "priority": "P0",
  "scene": "lead_convert"
}
