ESI Ship traits

I was building a client-side-only tool to look at ships/fittings/characters and noticed that with ESI alone, you can’t acquire ship traits. You can get most of the other tabs of Show Info on a ship, but not Traits. I know you cat get those via the SDE, but I much rather be able to query ESI for that information. Is there any chance for that to get added?

You can see the current results of that tool at https://fittings.spreadsheets-in.space

By traits, I assume you mean like the built in hull bonuses of some ships?

Yes, the Ship bonuses, like for the Nergal:

Assault Frigates bonuses (per skill level):
7.5% bonus to Light Entropic Disintegrator maximum range
20% bonus to Light Entropic Disintegrator maximum damage multiplier bonus

Precursor Frigate bonuses (per skill level):
5% bonus to Light Entropic Disintegrator damage
4% bonus to all armor resistances

Role Bonus:
50% reduction in Microwarpdrive signature radius penalty
• Can fit Assault Damage Controls
50% reduced Energy Neutralizer capacitor need
50% reduced Remote Armor Repairer capacitor need
50% reduced Smart Bomb capacitor need
100% bonus to Remote Armor Repairer range

It’s not in the dynamic databases, but in the full SDE set that is available at:
https://www.fuzzwork.co.uk/dump/latest/?C=N;O=A

The traits are held in “InvTraits.csv”, the item database is in “typeids.csv”.
So, for example, trait 1 applies to item 582 (a Bantam).

Now, sitting in that SDE download, and ESI has to be a linkage from this to the skills/features that you can automate. I’m not familiar enough with it and don’t have the time to dig at it.

Hope that helps.

I’m pretty sure these values are a part of the ship’s dogma_attributes array when fetching an item via /universe/types/{type_id}/. For example:

https://esi.evetech.net/latest/universe/types/52250/

https://esi.evetech.net/latest/dogma/attributes/673/ has a value of 20, which probably matches up to the 2nd AF bonus and https://esi.evetech.net/latest/dogma/attributes/675/ has a value of 7.5, which probably matches up to the 1st AF bonus while https://esi.evetech.net/latest/dogma/attributes/2298/ is the ship’s role bonus which has a value of 100 and probably maps to the rr range bonus.

The values might be there, but the name of attribute 673 is: eliteBonusGunship1. How do I find out that is “bonus to Light Entropic Disintegrator maximum damage multiplier bonus”?

As an example, here is all the attributes of an Avatar. Where in this does it say it can fit Doomsdays?

[
    {
        "attribute_id": 3,
        "value": 0,
        "name": "damage"
    },
    {
        "attribute_id": 4,
        "value": 2400000000,
        "name": "mass"
    },
    {
        "attribute_id": 9,
        "value": 390000,
        "name": "hp"
    },
    {
        "attribute_id": 11,
        "value": 1250000,
        "name": "powerOutput"
    },
    {
        "attribute_id": 12,
        "value": 8,
        "name": "lowSlots"
    },
    {
        "attribute_id": 13,
        "value": 5,
        "name": "medSlots"
    },
    {
        "attribute_id": 14,
        "value": 8,
        "name": "hiSlots"
    },
    {
        "attribute_id": 15,
        "value": 0,
        "name": "powerLoad"
    },
    {
        "attribute_id": 18,
        "value": 0,
        "name": "charge"
    },
    {
        "attribute_id": 19,
        "value": 1,
        "name": "powerToSpeed"
    },
    {
        "attribute_id": 21,
        "value": 0,
        "name": "warpFactor"
    },
    {
        "attribute_id": 37,
        "value": 60,
        "name": "maxVelocity"
    },
    {
        "attribute_id": 38,
        "value": 11250,
        "name": "capacity"
    },
    {
        "attribute_id": 552,
        "value": 22760,
        "name": "signatureRadius"
    },
    {
        "attribute_id": 48,
        "value": 815,
        "name": "cpuOutput"
    },
    {
        "attribute_id": 49,
        "value": 0,
        "name": "cpuLoad"
    },
    {
        "attribute_id": 564,
        "value": 70,
        "name": "scanResolution"
    },
    {
        "attribute_id": 55,
        "value": 7500000,
        "name": "rechargeRate"
    },
    {
        "attribute_id": 63,
        "value": 1,
        "name": "accuracyBonus"
    },
    {
        "attribute_id": 2112,
        "value": 0.2,
        "name": "sensorDampenerResistance"
    },
    {
        "attribute_id": 2113,
        "value": 0.2,
        "name": "weaponDisruptionResistance"
    },
    {
        "attribute_id": 2114,
        "value": 1,
        "name": "targetPainterResistance"
    },
    {
        "attribute_id": 1547,
        "value": 4,
        "name": "rigSize"
    },
    {
        "attribute_id": 2116,
        "value": 1,
        "name": "remoteRepairImpedance"
    },
    {
        "attribute_id": 70,
        "value": 0.034,
        "name": "agility"
    },
    {
        "attribute_id": 524,
        "value": 0.75,
        "name": "armorUniformity"
    },
    {
        "attribute_id": 76,
        "value": 250000,
        "name": "maxTargetRange"
    },
    {
        "attribute_id": 525,
        "value": 1,
        "name": "structureUniformity"
    },
    {
        "attribute_id": 2574,
        "value": 200,
        "name": "roleBonusCommandBurstAoERange"
    },
    {
        "attribute_id": 2135,
        "value": 0.2,
        "name": "remoteAssistanceImpedance"
    },
    {
        "attribute_id": 600,
        "value": 1.37,
        "name": "warpSpeedMultiplier"
    },
    {
        "attribute_id": 101,
        "value": 0,
        "name": "launcherSlotsLeft"
    },
    {
        "attribute_id": 102,
        "value": 6,
        "name": "turretSlotsLeft"
    },
    {
        "attribute_id": 104,
        "value": 0,
        "name": "warpScrambleStatus"
    },
    {
        "attribute_id": 1132,
        "value": 400,
        "name": "upgradeCapacity"
    },
    {
        "attribute_id": 109,
        "value": 0.67,
        "name": "kineticDamageResonance"
    },
    {
        "attribute_id": 110,
        "value": 0.67,
        "name": "thermalDamageResonance"
    },
    {
        "attribute_id": 111,
        "value": 0.67,
        "name": "explosiveDamageResonance"
    },
    {
        "attribute_id": 1137,
        "value": 3,
        "name": "rigSlots"
    },
    {
        "attribute_id": 1555,
        "value": 14000,
        "name": "fwLpKill"
    },
    {
        "attribute_id": 633,
        "value": 0,
        "name": "metaLevelOld"
    },
    {
        "attribute_id": 129,
        "value": 150,
        "name": "maxPassengers"
    },
    {
        "attribute_id": 1154,
        "value": 3,
        "name": "upgradeSlotsLeft"
    },
    {
        "attribute_id": 136,
        "value": 1,
        "name": "uniformity"
    },
    {
        "attribute_id": 153,
        "value": 1.38e-8,
        "name": "warpCapacitorNeed"
    },
    {
        "attribute_id": 1178,
        "value": 100,
        "name": "heatCapacityHi"
    },
    {
        "attribute_id": 1179,
        "value": 0.01,
        "name": "heatDissipationRateHi"
    },
    {
        "attribute_id": 161,
        "value": 155000000,
        "name": "volume"
    },
    {
        "attribute_id": 162,
        "value": 6800,
        "name": "radius"
    },
    {
        "attribute_id": 113,
        "value": 0.67,
        "name": "emDamageResonance"
    },
    {
        "attribute_id": 1196,
        "value": 0.01,
        "name": "heatDissipationRateMed"
    },
    {
        "attribute_id": 1198,
        "value": 0.01,
        "name": "heatDissipationRateLow"
    },
    {
        "attribute_id": 1199,
        "value": 100,
        "name": "heatCapacityMed"
    },
    {
        "attribute_id": 1200,
        "value": 100,
        "name": "heatCapacityLow"
    },
    {
        "attribute_id": 182,
        "value": 20533,
        "name": "requiredSkill1"
    },
    {
        "attribute_id": 183,
        "value": 3347,
        "name": "requiredSkill2"
    },
    {
        "attribute_id": 192,
        "value": 8,
        "name": "maxLockedTargets"
    },
    {
        "attribute_id": 2754,
        "value": 0.00001,
        "name": "entosisAssistanceImpedanceMultiplier"
    },
    {
        "attribute_id": 2244,
        "value": 1,
        "name": "fighterAbilityAntiCapitalMissileResistance"
    },
    {
        "attribute_id": 1224,
        "value": 0.25,
        "name": "heatGenerationMultiplier"
    },
    {
        "attribute_id": 715,
        "value": 5000,
        "name": "maxOperationalDistance"
    },
    {
        "attribute_id": 716,
        "value": 2,
        "name": "maxOperationalUsers"
    },
    {
        "attribute_id": 208,
        "value": 225,
        "name": "scanRadarStrength"
    },
    {
        "attribute_id": 209,
        "value": 0,
        "name": "scanLadarStrength"
    },
    {
        "attribute_id": 210,
        "value": 0,
        "name": "scanMagnetometricStrength"
    },
    {
        "attribute_id": 211,
        "value": 0,
        "name": "scanGravimetricStrength"
    },
    {
        "attribute_id": 217,
        "value": 394,
        "name": "propulsionGraphicID"
    },
    {
        "attribute_id": 1253,
        "value": -5,
        "name": "jumpHarmonics"
    },
    {
        "attribute_id": 1768,
        "value": 11313,
        "name": "typeColorScheme"
    },
    {
        "attribute_id": 1259,
        "value": 0.82,
        "name": "heatAttenuationHi"
    },
    {
        "attribute_id": 1261,
        "value": 0.71,
        "name": "heatAttenuationMed"
    },
    {
        "attribute_id": 1262,
        "value": 0.82,
        "name": "heatAttenuationLow"
    },
    {
        "attribute_id": 246,
        "value": 394,
        "name": "gfxBoosterID"
    },
    {
        "attribute_id": 1271,
        "value": 0,
        "name": "droneBandwidth"
    },
    {
        "attribute_id": 1785,
        "value": 1,
        "name": "isCapitalSize"
    },
    {
        "attribute_id": 2298,
        "value": 2,
        "name": "shipBonusRole1"
    },
    {
        "attribute_id": 2299,
        "value": 300,
        "name": "shipBonusRole2"
    },
    {
        "attribute_id": 1281,
        "value": 1,
        "name": "baseWarpSpeed"
    },
    {
        "attribute_id": 263,
        "value": 260000,
        "name": "shieldCapacity"
    },
    {
        "attribute_id": 264,
        "value": 0,
        "name": "shieldCharge"
    },
    {
        "attribute_id": 265,
        "value": 630000,
        "name": "armorHP"
    },
    {
        "attribute_id": 267,
        "value": 0.5,
        "name": "armorEmDamageResonance"
    },
    {
        "attribute_id": 268,
        "value": 0.8,
        "name": "armorExplosiveDamageResonance"
    },
    {
        "attribute_id": 269,
        "value": 0.75,
        "name": "armorKineticDamageResonance"
    },
    {
        "attribute_id": 270,
        "value": 0.65,
        "name": "armorThermalDamageResonance"
    },
    {
        "attribute_id": 271,
        "value": 1,
        "name": "shieldEmDamageResonance"
    },
    {
        "attribute_id": 272,
        "value": 0.5,
        "name": "shieldExplosiveDamageResonance"
    },
    {
        "attribute_id": 273,
        "value": 0.6,
        "name": "shieldKineticDamageResonance"
    },
    {
        "attribute_id": 274,
        "value": 0.8,
        "name": "shieldThermalDamageResonance"
    },
    {
        "attribute_id": 277,
        "value": 5,
        "name": "requiredSkill1Level"
    },
    {
        "attribute_id": 278,
        "value": 1,
        "name": "requiredSkill2Level"
    },
    {
        "attribute_id": 283,
        "value": 0,
        "name": "droneCapacity"
    },
    {
        "attribute_id": 1336,
        "value": 0,
        "name": "jumpClonesLeft"
    },
    {
        "attribute_id": 853,
        "value": 1,
        "name": "advancedAgility"
    },
    {
        "attribute_id": 861,
        "value": 1,
        "name": "canJump"
    },
    {
        "attribute_id": 866,
        "value": 16274,
        "name": "jumpDriveConsumptionType"
    },
    {
        "attribute_id": 867,
        "value": 3,
        "name": "jumpDriveRange"
    },
    {
        "attribute_id": 868,
        "value": 3000,
        "name": "jumpDriveConsumptionAmount"
    },
    {
        "attribute_id": 869,
        "value": 300000,
        "name": "jumpDriveDuration"
    },
    {
        "attribute_id": 2406,
        "value": 180,
        "name": "shipBonusTitanA1"
    },
    {
        "attribute_id": 2407,
        "value": -10,
        "name": "shipBonusTitanA2"
    },
    {
        "attribute_id": 2408,
        "value": -10,
        "name": "shipBonusTitanA3"
    },
    {
        "attribute_id": 874,
        "value": 1,
        "name": "advancedCapitalAgility"
    },
    {
        "attribute_id": 2433,
        "value": 1,
        "name": "fighterAbilityKamikazeResistance"
    },
    {
        "attribute_id": 898,
        "value": 0.95,
        "name": "jumpDriveCapacitorNeed"
    },
    {
        "attribute_id": 907,
        "value": 1,
        "name": "hasShipMaintenanceBay"
    },
    {
        "attribute_id": 908,
        "value": 5000000,
        "name": "shipMaintenanceBayCapacity"
    },
    {
        "attribute_id": 911,
        "value": 1,
        "name": "hasFleetHangars"
    },
    {
        "attribute_id": 912,
        "value": 100000,
        "name": "fleetHangarCapacity"
    },
    {
        "attribute_id": 2115,
        "value": 0.2,
        "name": "stasisWebifierResistance"
    },
    {
        "attribute_id": 422,
        "value": 1,
        "name": "techLevel"
    },
    {
        "attribute_id": 1970,
        "value": 1,
        "name": "disallowInHighSec"
    },
    {
        "attribute_id": 1973,
        "value": 0,
        "name": "gateScrambleStatus"
    },
    {
        "attribute_id": 1549,
        "value": 60000,
        "name": "specialFuelBayCapacity"
    },
    {
        "attribute_id": 979,
        "value": 75,
        "name": "maxJumpClones"
    },
    {
        "attribute_id": 982,
        "value": 1,
        "name": "canReceiveCloneJumps"
    },
    {
        "attribute_id": 479,
        "value": 20000000,
        "name": "shieldRechargeRate"
    },
    {
        "attribute_id": 482,
        "value": 135000,
        "name": "capacitorCapacity"
    },
    {
        "attribute_id": 484,
        "value": 0.5,
        "name": "shieldUniformity"
    },
    {
        "attribute_id": 2021,
        "value": 5,
        "name": "entosisDurationMultiplier"
    },
    {
        "attribute_id": 1001,
        "value": 1e-9,
        "name": "jumpPortalConsumptionMassFactor"
    },
    {
        "attribute_id": 1002,
        "value": 300000,
        "name": "jumpPortalDuration"
    },
    {
        "attribute_id": 1005,
        "value": 25000,
        "name": "jumpPortalCapacitorNeed"
    },
    {
        "attribute_id": 2045,
        "value": 1,
        "name": "energyWarfareResistance"
    }
]

Yea I think that’s the catch. There’s not really a good way to do that AFAIK via ESI. I’m not too familiar with what it looks like in the SDE, but I imagine it’s a bit easier to decipher?

I understand its available in the SDE, but I am looking to build something entirely client-side. So I could build a whole separate application to provide the SDE via API calls, but that seems pretty dumb to need to do when ESI exists.

Don’t quote me but I think in that case it would be a dogma effect on the Doomsday itself. Specially https://esi.evetech.net/latest/dogma/effects/4489/ that one. However I’m not 100% on that, so someone correct me if I’m wrong.

Fetch the SQLite dump from fuzzworks, it will save you a lot of trouble.
You will still need to cache ESI calls locally.

less than ideal, but: https://www.fuzzwork.co.uk/api/traits.php?typeid=587