-
-
Notifications
You must be signed in to change notification settings - Fork 408
Description
I've analysed the race and subrace data and found that the properties race.starting_proficiencies, race.starting_proficiency_options, subrace.starting_proficiencies, and subrace.language_options can be considered redundant for all races and subraces in the SRD. The data that these properties hold can be found on corresponding traits that are linked to the races/ subraces. You can find the analyses in this gist (races) and this gist (subraces).
Some examples:
- Elves get the Keen Senses trait, which grants proficiency in the perception skill.
- Half-Elves get the Skill Versatility trait, which grants a proficiency in two skills of their choice.
- Rock Gnomes get the Tinker trait, which grants proficiency in Tinker's Tools.
- High Elves get the Extra Language trait, which grants them one known language of their choice.
The data of all of the above examples is available as structured data on the race/ subrace AND on the corresponding traits, which are also linked to the race and subrace using the race.traits and subrace.racial_traits properties or using the /api/2014/traits/:index endpoint.
This means that the properties race.starting_proficiencies, race.starting_proficiency_options, subrace.starting_proficiencies, and subrace.language_options can safely be removed from the race and subrace model without losing any data. Consumers of the API can instead fetch the traits linked to the race/ subrace to get the same data. Removing these properties from the race and subrace models would reduce the response sizes (only get the data that you need), and would also reduce the complexity of the model (do Half-Elves get 2 skill proficiencies (the data of which is present on the race and on the trait), or do they get 2 from the race and 2 from the trait?).
My suggestion if the following:
Remove these properties from the race and subrace models to remove redundancy and reduce confusion for the API consumer about which properties to use to get the correct data. This way the consumer does not have to choose which property to use and can not accidentally use both properties (making it seem like the race/ subrace gets multiple of the same proficiencies/ proficiency choices/ language choices).