Converting UNIX Time from Parsed JSON results in integer limit

Thanks everyone for their advice and options and I've been tying them all day, but to no avail. Here is what I tried and the results:

    JsonObject& timestamp = root["timestamp"];
    
    const char* timestamp_lifts = timestamp["lifts"];

    long timestamp_lifts_ll = atoll(timestamp_lifts);
    unsigned long timestamp_lifts_atoll = atoll(timestamp_lifts);
    long timestamp_lifts_atol = atol(timestamp_lifts);
    unsigned long timestamp_lifts_atoi = atoi(timestamp_lifts);
    unsigned long timestamp_lifts_strtoul = strtoul(timestamp_lifts, NULL, 20);
                
    Serial.println(timestamp_lifts);
    Serial.println(timestamp_lifts_atoll);
    Serial.println(timestamp_lifts_atol);
    Serial.println(timestamp_lifts_atoi);
    Serial.println(timestamp_lifts_strtoul);

Serial Results:
 1522116884359
 1698461575
 2147483647
 2147483647
 4294967295

The correct string is the top one (1522116884359). I'll try to clip the far right digits, which are the unix time down to milliseconds and see what happens. Thanks again for everyone's suggestions!