From 66b4dfb0cf8b0b482259009c89395a736ab74e3b Mon Sep 17 00:00:00 2001 From: calumbell Date: Thu, 19 Mar 2026 08:22:15 +0000 Subject: [PATCH 1/4] GameContentSerializer now inherits from ModelSerializer --- api_v2/serializers/abstracts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api_v2/serializers/abstracts.py b/api_v2/serializers/abstracts.py index d893e4b7..95810783 100644 --- a/api_v2/serializers/abstracts.py +++ b/api_v2/serializers/abstracts.py @@ -3,7 +3,7 @@ from api_v2 import models -class GameContentSerializer(serializers.HyperlinkedModelSerializer): +class GameContentSerializer(serializers.ModelSerializer): """ Much of the logic included in the GameContentSerializer is intended to From ca45d4e9ddeed840e7b138b2066d793125abf981 Mon Sep 17 00:00:00 2001 From: calumbell Date: Thu, 19 Mar 2026 08:24:50 +0000 Subject: [PATCH 2/4] removed 'url' from GameContent Meta->fields prop --- api_v2/serializers/ability.py | 2 +- api_v2/serializers/characterclass.py | 2 +- api_v2/serializers/condition.py | 4 ++-- api_v2/serializers/creature.py | 3 +-- api_v2/serializers/damagetype.py | 2 +- api_v2/serializers/document.py | 6 +++--- api_v2/serializers/environment.py | 2 +- api_v2/serializers/image.py | 2 +- api_v2/serializers/item.py | 13 +++++-------- api_v2/serializers/language.py | 2 +- api_v2/serializers/size.py | 2 +- api_v2/serializers/spell.py | 2 +- 12 files changed, 19 insertions(+), 23 deletions(-) diff --git a/api_v2/serializers/ability.py b/api_v2/serializers/ability.py index 034a31a8..348d0fd2 100644 --- a/api_v2/serializers/ability.py +++ b/api_v2/serializers/ability.py @@ -50,4 +50,4 @@ class AbilitySummarySerializer(GameContentSerializer): ''' class Meta: model = models.Ability - fields = ['name', 'url'] \ No newline at end of file + fields = ['name'] \ No newline at end of file diff --git a/api_v2/serializers/characterclass.py b/api_v2/serializers/characterclass.py index 09b39d59..7bef40ab 100644 --- a/api_v2/serializers/characterclass.py +++ b/api_v2/serializers/characterclass.py @@ -78,7 +78,7 @@ class CharacterClassSummarySerializer(GameContentSerializer): ''' class Meta: model = models.CharacterClass - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class CharacterClassSerializer(GameContentSerializer): key = serializers.ReadOnlyField() diff --git a/api_v2/serializers/condition.py b/api_v2/serializers/condition.py index f2b1d333..79c165c9 100644 --- a/api_v2/serializers/condition.py +++ b/api_v2/serializers/condition.py @@ -34,7 +34,7 @@ class ConditionSummarySerializer(GameContentSerializer): ''' class Meta: model = models.Condition - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class ConditionDetailSerializer(GameContentSerializer): @@ -50,5 +50,5 @@ def get_gamesystem_key(self, obj): class Meta: model = models.Condition - fields = ['name', 'key', 'url', 'document', 'gamesystem_key', 'icon'] + fields = ['name', 'key', 'document', 'gamesystem_key', 'icon'] diff --git a/api_v2/serializers/creature.py b/api_v2/serializers/creature.py index a4e0b5ad..175d0d7c 100644 --- a/api_v2/serializers/creature.py +++ b/api_v2/serializers/creature.py @@ -105,7 +105,7 @@ class CreatureTypeSummarySerializer(GameContentSerializer): ''' class Meta: model = models.CreatureType - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class CreatureTraitSerializer(GameContentSerializer): @@ -178,7 +178,6 @@ class Meta: '''Serializer meta options.''' model = models.Creature fields = [ - 'url', 'key', 'name', 'document', diff --git a/api_v2/serializers/damagetype.py b/api_v2/serializers/damagetype.py index 42cfe1b3..5faaab66 100644 --- a/api_v2/serializers/damagetype.py +++ b/api_v2/serializers/damagetype.py @@ -28,4 +28,4 @@ class DamageTypeSummarySerializer(GameContentSerializer): ''' class Meta: model = models.DamageType - fields = ['name', 'key', 'url'] \ No newline at end of file + fields = ['name', 'key'] \ No newline at end of file diff --git a/api_v2/serializers/document.py b/api_v2/serializers/document.py index 3d86e081..1fce8641 100644 --- a/api_v2/serializers/document.py +++ b/api_v2/serializers/document.py @@ -18,7 +18,7 @@ class GameSystemSummarySerializer(serializers.ModelSerializer): ''' class Meta: model = models.GameSystem - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class LicenseSerializer(GameContentSerializer): @@ -35,7 +35,7 @@ class LicenseSummarySerializer(GameContentSerializer): ''' class Meta: model = models.License - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class PublisherSerializer(GameContentSerializer): key = serializers.ReadOnlyField() @@ -51,7 +51,7 @@ class PublisherSummarySerializer(GameContentSerializer): ''' class Meta: model = models.Publisher - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class DocumentSerializer(GameContentSerializer): key = serializers.ReadOnlyField() diff --git a/api_v2/serializers/environment.py b/api_v2/serializers/environment.py index eaa332d2..b255b522 100644 --- a/api_v2/serializers/environment.py +++ b/api_v2/serializers/environment.py @@ -21,4 +21,4 @@ class EnvironmentSummarySerializer(GameContentSerializer): ''' class Meta: model = models.Environment - fields = ['name', 'key', 'url'] \ No newline at end of file + fields = ['name', 'key'] \ No newline at end of file diff --git a/api_v2/serializers/image.py b/api_v2/serializers/image.py index 11b49b93..bc2527e1 100644 --- a/api_v2/serializers/image.py +++ b/api_v2/serializers/image.py @@ -9,7 +9,7 @@ class ImageSummarySerializer(GameContentSerializer): class Meta: model = models.Image - fields = ['name', 'key', 'url', 'file_url', 'alt_text', 'attribution'] + fields = ['name', 'key', 'file_url', 'alt_text', 'attribution'] class ImageSerializer(GameContentSerializer): key = serializers.ReadOnlyField() diff --git a/api_v2/serializers/item.py b/api_v2/serializers/item.py index a1a7c706..44ceda2e 100644 --- a/api_v2/serializers/item.py +++ b/api_v2/serializers/item.py @@ -33,7 +33,6 @@ class Meta: fields = [ 'name', 'key', - 'url', 'category', 'ac_base', 'ac_display', @@ -46,12 +45,12 @@ class Meta: class WeaponPropertySerializer(GameContentSerializer): class Meta: model = models.WeaponProperty - fields = ['key', 'name', 'desc', 'document', 'url', 'type'] + fields = ['key', 'name', 'desc', 'document', 'type'] class WeaponPropertySummarySerializer(GameContentSerializer): class Meta: model = models.WeaponProperty - fields = ['name', 'type', 'url', 'desc'] + fields = ['name', 'type', 'desc'] class WeaponPropertyAssignmentSerializer(GameContentSerializer): property = WeaponPropertySummarySerializer() @@ -99,7 +98,6 @@ class Meta: fields = [ 'name', 'key', - 'url', 'damage_type', 'damage_dice', 'properties', @@ -117,7 +115,7 @@ def get_distance_unit(self, Weapon): class ItemRaritySerializer(GameContentSerializer): class Meta: model = models.ItemRarity - fields = ['name', 'url', 'key', 'rank'] + fields = ['name', 'key', 'rank'] class ItemCategorySerializer(GameContentSerializer): key = serializers.ReadOnlyField() @@ -129,7 +127,7 @@ class Meta: class ItemCategorySummarySerializer(GameContentSerializer): class Meta: model = models.ItemCategory - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class ItemSerializer(GameContentSerializer): key = serializers.ReadOnlyField() @@ -150,7 +148,6 @@ def get_weight_unit(self, item): class Meta: model = models.Item fields = [ - 'url', 'key', 'name', 'desc', @@ -171,7 +168,7 @@ class Meta: class ItemSummarySerializer(GameContentSerializer): class Meta: model = models.Item - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] diff --git a/api_v2/serializers/language.py b/api_v2/serializers/language.py index 38e3e7d0..553a7c45 100644 --- a/api_v2/serializers/language.py +++ b/api_v2/serializers/language.py @@ -23,4 +23,4 @@ class LanguageSummarySerializer(GameContentSerializer): key = serializers.ReadOnlyField() class Meta: model = models.Language - fields = ['name', 'key', 'url', 'desc'] \ No newline at end of file + fields = ['name', 'key', 'desc'] \ No newline at end of file diff --git a/api_v2/serializers/size.py b/api_v2/serializers/size.py index 900510f8..25968a97 100644 --- a/api_v2/serializers/size.py +++ b/api_v2/serializers/size.py @@ -32,4 +32,4 @@ class SizeSummarySerializer(GameContentSerializer): ''' class Meta: model = models.Size - fields = ['name', 'key', 'url'] \ No newline at end of file + fields = ['name', 'key'] \ No newline at end of file diff --git a/api_v2/serializers/spell.py b/api_v2/serializers/spell.py index c527b952..cd9fb197 100644 --- a/api_v2/serializers/spell.py +++ b/api_v2/serializers/spell.py @@ -24,7 +24,7 @@ class SpellSchoolSummarySerializer(GameContentSerializer): ''' class Meta: model = models.SpellSchool - fields = ['name', 'key', 'url'] + fields = ['name', 'key'] class SpellCastingOptionSerializer(serializers.ModelSerializer): class Meta: From 279289b8f5c68093931fd65b8db96818d34a9cca Mon Sep 17 00:00:00 2001 From: calumbell Date: Thu, 19 Mar 2026 11:32:05 +0000 Subject: [PATCH 3/4] updated v2 tests to reflect removal of URL from many responses --- ...Objects.test_ability_example.approved.json | 5 +- ...jects.test_alignment_example.approved.json | 6 +- ...stObjects.test_armor_example.approved.json | 9 +- ...ects.test_background_example.approved.json | 9 +- ...stObjects.test_class_example.approved.json | 15 +- ...est_creature_ancient_example.approved.json | 42 ++-- ...test_creature_goblin_example.approved.json | 66 ++--- ....test_creature_guard_example.approved.json | 45 ++-- ...cts.test_creatureset_example.approved.json | 236 ++++++------------ ...ts.test_creaturetype_example.approved.json | 5 +- ...ects.test_damagetype_example.approved.json | 5 +- ...bjects.test_document_example.approved.json | 13 +- ...cts.test_environment_example.approved.json | 5 +- ...stObjects.test_feats_example.approved.json | 9 +- ...ects.test_item_armor_example.approved.json | 16 +- ...s.test_item_category_example.approved.json | 9 +- ...estObjects.test_item_example.approved.json | 16 +- ...st_item_melee_weapon_example.approved.json | 25 +- ...t_item_ranged_weapon_example.approved.json | 25 +- ...bjects.test_item_set_example.approved.json | 20 +- ...ects.test_itemrarity_example.approved.json | 3 +- ...bjects.test_language_example.approved.json | 9 +- ...Objects.test_license_example.approved.json | 3 +- ...jects.test_publisher_example.approved.json | 3 +- ...estObjects.test_size_example.approved.json | 9 +- ...Objects.test_species_example.approved.json | 9 +- ...s.test_spell_cantrip_example.approved.json | 22 +- ...tObjects.test_spell_fireball.approved.json | 16 +- .../TestObjects.test_spell_wish.approved.json | 16 +- ...bjects.test_subclass_example.approved.json | 12 +- ...tObjects.test_weapon_example.approved.json | 18 +- ..._weapon_with_mastery_example.approved.json | 18 +- ...ponproperties_mastery_filter.approved.json | 15 +- ...onproperties_standard_filter.approved.json | 15 +- ...aponproperty_mastery_example.approved.json | 5 +- ...ponproperty_standard_example.approved.json | 5 +- 36 files changed, 258 insertions(+), 501 deletions(-) diff --git a/api_v2/tests/responses/TestObjects.test_ability_example.approved.json b/api_v2/tests/responses/TestObjects.test_ability_example.approved.json index ca381dcc..e4d8f391 100644 --- a/api_v2/tests/responses/TestObjects.test_ability_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_ability_example.approved.json @@ -16,7 +16,7 @@ "gamesystem": "5e-2024" } ], - "document": "http://localhost:8000/v2/documents/core/", + "document": "core", "key": "dex", "name": "Dexterity", "short_desc": "measuring agility", @@ -90,6 +90,5 @@ "key": "stealth", "name": "Stealth" } - ], - "url": "http://localhost:8000/v2/abilities/dex/" + ] } diff --git a/api_v2/tests/responses/TestObjects.test_alignment_example.approved.json b/api_v2/tests/responses/TestObjects.test_alignment_example.approved.json index 11178d70..3fe1bc88 100644 --- a/api_v2/tests/responses/TestObjects.test_alignment_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_alignment_example.approved.json @@ -15,16 +15,14 @@ "display_name": "5e Core", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "core", "name": "5e Core Concepts", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "open5e", - "name": "Open5e", - "url": "http://localhost:8000/v2/publishers/open5e/" + "name": "Open5e" }, "type": "MISC" }, diff --git a/api_v2/tests/responses/TestObjects.test_armor_example.approved.json b/api_v2/tests/responses/TestObjects.test_armor_example.approved.json index 208dd32d..2c4dc1d7 100644 --- a/api_v2/tests/responses/TestObjects.test_armor_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_armor_example.approved.json @@ -8,22 +8,19 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "grants_stealth_disadvantage": true, "key": "srd_splint", "name": "Splint", - "strength_score_required": 15, - "url": "http://localhost:8000/v2/armor/srd_splint/" + "strength_score_required": 15 } diff --git a/api_v2/tests/responses/TestObjects.test_background_example.approved.json b/api_v2/tests/responses/TestObjects.test_background_example.approved.json index b4b495de..51028610 100644 --- a/api_v2/tests/responses/TestObjects.test_background_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_background_example.approved.json @@ -31,20 +31,17 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "key": "srd_acolyte", - "name": "Acolyte", - "url": "http://localhost:8000/v2/backgrounds/srd_acolyte/" + "name": "Acolyte" } diff --git a/api_v2/tests/responses/TestObjects.test_class_example.approved.json b/api_v2/tests/responses/TestObjects.test_class_example.approved.json index a0df967d..efe45274 100644 --- a/api_v2/tests/responses/TestObjects.test_class_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_class_example.approved.json @@ -5,16 +5,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -521,14 +519,11 @@ "primary_abilities": [], "saving_throws": [ { - "name": "Constitution", - "url": "http://localhost:8000/v2/abilities/con/" + "name": "Constitution" }, { - "name": "Strength", - "url": "http://localhost:8000/v2/abilities/str/" + "name": "Strength" } ], - "subclass_of": null, - "url": "http://localhost:8000/v2/classes/srd_barbarian/" + "subclass_of": null } diff --git a/api_v2/tests/responses/TestObjects.test_creature_ancient_example.approved.json b/api_v2/tests/responses/TestObjects.test_creature_ancient_example.approved.json index eda964c8..caffc20a 100644 --- a/api_v2/tests/responses/TestObjects.test_creature_ancient_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_creature_ancient_example.approved.json @@ -18,8 +18,7 @@ "damage_die_type": "D10", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -27,8 +26,7 @@ "extra_damage_die_type": null, "extra_damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "long_range": null, "name": "Bite attack", @@ -55,8 +53,7 @@ "damage_die_type": "D6", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -131,8 +128,7 @@ "damage_die_type": "D8", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -188,29 +184,25 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "hills", - "name": "Hills", - "url": "http://localhost:8000/v2/environments/hills/" + "name": "Hills" }, { "key": "mountain", - "name": "Mountain", - "url": "http://localhost:8000/v2/environments/mountain/" + "name": "Mountain" } ], "experience_points": 62000, @@ -225,14 +217,12 @@ { "desc": "Typical speakers are Humans.", "key": "common", - "name": "Common", - "url": "http://localhost:8000/v2/languages/common/" + "name": "Common" }, { "desc": "Typical speakers include dragons and dragonborn.", "key": "draconic", - "name": "Draconic", - "url": "http://localhost:8000/v2/languages/draconic/" + "name": "Draconic" } ] }, @@ -254,8 +244,7 @@ "damage_immunities": [ { "key": "fire", - "name": "Fire", - "url": "http://localhost:8000/v2/damagetypes/fire/" + "name": "Fire" } ], "damage_immunities_display": "fire", @@ -280,8 +269,7 @@ }, "size": { "key": "gargantuan", - "name": "Gargantuan", - "url": "http://localhost:8000/v2/sizes/gargantuan/" + "name": "Gargantuan" }, "skill_bonuses": { "perception": 16, @@ -334,8 +322,6 @@ "truesight_range": null, "type": { "key": "dragon", - "name": "Dragon", - "url": "http://localhost:8000/v2/creaturetypes/dragon/" - }, - "url": "http://localhost:8000/v2/creatures/srd_ancient-red-dragon/" + "name": "Dragon" + } } diff --git a/api_v2/tests/responses/TestObjects.test_creature_goblin_example.approved.json b/api_v2/tests/responses/TestObjects.test_creature_goblin_example.approved.json index c7a12a73..56424d6b 100644 --- a/api_v2/tests/responses/TestObjects.test_creature_goblin_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_creature_goblin_example.approved.json @@ -18,8 +18,7 @@ "damage_die_type": "D6", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -51,8 +50,7 @@ "damage_die_type": "D6", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -88,84 +86,69 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "arctic", - "name": "Arctic or Tundra", - "url": "http://localhost:8000/v2/environments/arctic/" + "name": "Arctic or Tundra" }, { "key": "caves", - "name": "Caves", - "url": "http://localhost:8000/v2/environments/caves/" + "name": "Caves" }, { "key": "desert", - "name": "Desert", - "url": "http://localhost:8000/v2/environments/desert/" + "name": "Desert" }, { "key": "forest", - "name": "Forest or Jungle", - "url": "http://localhost:8000/v2/environments/forest/" + "name": "Forest or Jungle" }, { "key": "grassland", - "name": "Grassland or Plains", - "url": "http://localhost:8000/v2/environments/grassland/" + "name": "Grassland or Plains" }, { "key": "hills", - "name": "Hills", - "url": "http://localhost:8000/v2/environments/hills/" + "name": "Hills" }, { "key": "mountain", - "name": "Mountain", - "url": "http://localhost:8000/v2/environments/mountain/" + "name": "Mountain" }, { "key": "ruins", - "name": "Ruins", - "url": "http://localhost:8000/v2/environments/ruins/" + "name": "Ruins" }, { "key": "sewer", - "name": "Sewer", - "url": "http://localhost:8000/v2/environments/sewer/" + "name": "Sewer" }, { "key": "srd_feywild", - "name": "Feywild", - "url": "http://localhost:8000/v2/environments/srd_feywild/" + "name": "Feywild" }, { "key": "swamp", - "name": "Swamp or Marsh", - "url": "http://localhost:8000/v2/environments/swamp/" + "name": "Swamp or Marsh" }, { "key": "underworld", - "name": "Underworld", - "url": "http://localhost:8000/v2/environments/underworld/" + "name": "Underworld" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 50, @@ -180,14 +163,12 @@ { "desc": "Typical speakers are Humans.", "key": "common", - "name": "Common", - "url": "http://localhost:8000/v2/languages/common/" + "name": "Common" }, { "desc": "Typical speakers are goblinoids.", "key": "goblin", - "name": "Goblin", - "url": "http://localhost:8000/v2/languages/goblin/" + "name": "Goblin" } ] }, @@ -224,8 +205,7 @@ }, "size": { "key": "small", - "name": "Small", - "url": "http://localhost:8000/v2/sizes/small/" + "name": "Small" }, "skill_bonuses": { "stealth": 6 @@ -275,8 +255,6 @@ "truesight_range": null, "type": { "key": "humanoid", - "name": "Humanoid", - "url": "http://localhost:8000/v2/creaturetypes/humanoid/" - }, - "url": "http://localhost:8000/v2/creatures/srd_goblin/" + "name": "Humanoid" + } } diff --git a/api_v2/tests/responses/TestObjects.test_creature_guard_example.approved.json b/api_v2/tests/responses/TestObjects.test_creature_guard_example.approved.json index a9786a8d..7d654b28 100644 --- a/api_v2/tests/responses/TestObjects.test_creature_guard_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_creature_guard_example.approved.json @@ -18,8 +18,7 @@ "damage_die_type": "D8", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -40,8 +39,7 @@ "damage_die_type": "D6", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -77,54 +75,45 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "coast", - "name": "Coast", - "url": "http://localhost:8000/v2/environments/coast/" + "name": "Coast" }, { "key": "desert", - "name": "Desert", - "url": "http://localhost:8000/v2/environments/desert/" + "name": "Desert" }, { "key": "forest", - "name": "Forest or Jungle", - "url": "http://localhost:8000/v2/environments/forest/" + "name": "Forest or Jungle" }, { "key": "grassland", - "name": "Grassland or Plains", - "url": "http://localhost:8000/v2/environments/grassland/" + "name": "Grassland or Plains" }, { "key": "hills", - "name": "Hills", - "url": "http://localhost:8000/v2/environments/hills/" + "name": "Hills" }, { "key": "mountain", - "name": "Mountain", - "url": "http://localhost:8000/v2/environments/mountain/" + "name": "Mountain" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 25, @@ -139,8 +128,7 @@ { "desc": "Typical speakers are Humans.", "key": "common", - "name": "Common", - "url": "http://localhost:8000/v2/languages/common/" + "name": "Common" } ] }, @@ -177,8 +165,7 @@ }, "size": { "key": "medium", - "name": "Medium", - "url": "http://localhost:8000/v2/sizes/medium/" + "name": "Medium" }, "skill_bonuses": { "perception": 2 @@ -223,8 +210,6 @@ "truesight_range": null, "type": { "key": "humanoid", - "name": "Humanoid", - "url": "http://localhost:8000/v2/creaturetypes/humanoid/" - }, - "url": "http://localhost:8000/v2/creatures/srd_guard/" + "name": "Humanoid" + } } diff --git a/api_v2/tests/responses/TestObjects.test_creatureset_example.approved.json b/api_v2/tests/responses/TestObjects.test_creatureset_example.approved.json index f6b51688..109504a0 100644 --- a/api_v2/tests/responses/TestObjects.test_creatureset_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_creatureset_example.approved.json @@ -20,8 +20,7 @@ "damage_die_type": null, "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -52,36 +51,32 @@ "challenge_rating_decimal": "0.125", "challenge_rating_text": "1/8", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "desert", - "name": "Desert", - "url": "http://localhost:8000/v2/environments/desert/" + "name": "Desert" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 25, @@ -134,8 +129,7 @@ }, "size": { "key": "large", - "name": "Large", - "url": "http://localhost:8000/v2/sizes/large/" + "name": "Large" }, "skill_bonuses": { "acrobatics": 0, @@ -197,10 +191,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_camel/" + "name": "Beast" + } }, { "ability_scores": { @@ -220,23 +212,21 @@ "challenge_rating_decimal": "0.000", "challenge_rating_text": "0", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -291,8 +281,7 @@ }, "size": { "key": "medium", - "name": "Medium", - "url": "http://localhost:8000/v2/sizes/medium/" + "name": "Medium" }, "skill_bonuses": { "acrobatics": 0, @@ -354,10 +343,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_donkey/" + "name": "Beast" + } }, { "ability_scores": { @@ -379,8 +366,7 @@ "damage_die_type": "D4", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -411,31 +397,28 @@ "challenge_rating_decimal": "0.250", "challenge_rating_text": "1/4", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 50, @@ -488,8 +471,7 @@ }, "size": { "key": "large", - "name": "Large", - "url": "http://localhost:8000/v2/sizes/large/" + "name": "Large" }, "skill_bonuses": { "acrobatics": 0, @@ -551,10 +533,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_draft-horse/" + "name": "Beast" + } }, { "ability_scores": { @@ -576,8 +556,7 @@ "damage_die_type": "D8", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -609,8 +588,7 @@ "damage_die_type": "D10", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -641,41 +619,36 @@ "challenge_rating_decimal": "4.000", "challenge_rating_text": "4", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "desert", - "name": "Desert", - "url": "http://localhost:8000/v2/environments/desert/" + "name": "Desert" }, { "key": "forest", - "name": "Forest or Jungle", - "url": "http://localhost:8000/v2/environments/forest/" + "name": "Forest or Jungle" }, { "key": "grassland", - "name": "Grassland or Plains", - "url": "http://localhost:8000/v2/environments/grassland/" + "name": "Grassland or Plains" } ], "experience_points": 1100, @@ -728,8 +701,7 @@ }, "size": { "key": "huge", - "name": "Huge", - "url": "http://localhost:8000/v2/sizes/huge/" + "name": "Huge" }, "skill_bonuses": { "acrobatics": 0, @@ -796,10 +768,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_elephant/" + "name": "Beast" + } }, { "ability_scores": { @@ -821,8 +791,7 @@ "damage_die_type": "D6", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -853,41 +822,36 @@ "challenge_rating_decimal": "0.125", "challenge_rating_text": "1/8", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "forest", - "name": "Forest or Jungle", - "url": "http://localhost:8000/v2/environments/forest/" + "name": "Forest or Jungle" }, { "key": "hills", - "name": "Hills", - "url": "http://localhost:8000/v2/environments/hills/" + "name": "Hills" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 25, @@ -940,8 +904,7 @@ }, "size": { "key": "medium", - "name": "Medium", - "url": "http://localhost:8000/v2/sizes/medium/" + "name": "Medium" }, "skill_bonuses": { "acrobatics": 0, @@ -1008,10 +971,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_mastiff/" + "name": "Beast" + } }, { "ability_scores": { @@ -1033,8 +994,7 @@ "damage_die_type": "D4", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -1065,41 +1025,36 @@ "challenge_rating_decimal": "0.125", "challenge_rating_text": "1/8", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "grassland", - "name": "Grassland or Plains", - "url": "http://localhost:8000/v2/environments/grassland/" + "name": "Grassland or Plains" }, { "key": "hills", - "name": "Hills", - "url": "http://localhost:8000/v2/environments/hills/" + "name": "Hills" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 25, @@ -1152,8 +1107,7 @@ }, "size": { "key": "medium", - "name": "Medium", - "url": "http://localhost:8000/v2/sizes/medium/" + "name": "Medium" }, "skill_bonuses": { "acrobatics": 0, @@ -1224,10 +1178,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_mule/" + "name": "Beast" + } }, { "ability_scores": { @@ -1249,8 +1201,7 @@ "damage_die_type": "D4", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -1281,36 +1232,32 @@ "challenge_rating_decimal": "0.125", "challenge_rating_text": "1/8", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "mountain", - "name": "Mountain", - "url": "http://localhost:8000/v2/environments/mountain/" + "name": "Mountain" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 25, @@ -1363,8 +1310,7 @@ }, "size": { "key": "medium", - "name": "Medium", - "url": "http://localhost:8000/v2/sizes/medium/" + "name": "Medium" }, "skill_bonuses": { "acrobatics": 0, @@ -1426,10 +1372,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_pony/" + "name": "Beast" + } }, { "ability_scores": { @@ -1451,8 +1395,7 @@ "damage_die_type": "D4", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -1483,36 +1426,32 @@ "challenge_rating_decimal": "0.250", "challenge_rating_text": "1/4", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "grassland", - "name": "Grassland or Plains", - "url": "http://localhost:8000/v2/environments/grassland/" + "name": "Grassland or Plains" }, { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 50, @@ -1565,8 +1504,7 @@ }, "size": { "key": "large", - "name": "Large", - "url": "http://localhost:8000/v2/sizes/large/" + "name": "Large" }, "skill_bonuses": { "acrobatics": 0, @@ -1628,10 +1566,8 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_riding-horse/" + "name": "Beast" + } }, { "ability_scores": { @@ -1653,8 +1589,7 @@ "damage_die_type": "D6", "damage_type": { "key": "thunder", - "name": "Thunder", - "url": "http://localhost:8000/v2/damagetypes/thunder/" + "name": "Thunder" }, "distance_unit": "feet", "extra_damage_bonus": null, @@ -1685,31 +1620,28 @@ "challenge_rating_decimal": "0.500", "challenge_rating_text": "1/2", "creaturesets": [ - "http://localhost:8000/v2/creaturesets/common-mounts/" + "common-mounts" ], "darkvision_range": null, "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, "environments": [ { "key": "urban", - "name": "Urban", - "url": "http://localhost:8000/v2/environments/urban/" + "name": "Urban" } ], "experience_points": 100, @@ -1762,8 +1694,7 @@ }, "size": { "key": "large", - "name": "Large", - "url": "http://localhost:8000/v2/sizes/large/" + "name": "Large" }, "skill_bonuses": { "acrobatics": 0, @@ -1830,14 +1761,11 @@ "truesight_range": null, "type": { "key": "beast", - "name": "Beast", - "url": "http://localhost:8000/v2/creaturetypes/beast/" - }, - "url": "http://localhost:8000/v2/creatures/srd_warhorse/" + "name": "Beast" + } } ], - "document": "http://localhost:8000/v2/documents/srd-2014/", + "document": "srd-2014", "key": "common-mounts", - "name": "Common Mounts", - "url": "http://localhost:8000/v2/creaturesets/common-mounts/" + "name": "Common Mounts" } diff --git a/api_v2/tests/responses/TestObjects.test_creaturetype_example.approved.json b/api_v2/tests/responses/TestObjects.test_creaturetype_example.approved.json index 4da7dbd0..a8ee9323 100644 --- a/api_v2/tests/responses/TestObjects.test_creaturetype_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_creaturetype_example.approved.json @@ -16,8 +16,7 @@ "gamesystem": "5e-2024" } ], - "document": "http://localhost:8000/v2/documents/core/", + "document": "core", "key": "elemental", - "name": "Elemental", - "url": "http://localhost:8000/v2/creaturetypes/elemental/" + "name": "Elemental" } diff --git a/api_v2/tests/responses/TestObjects.test_damagetype_example.approved.json b/api_v2/tests/responses/TestObjects.test_damagetype_example.approved.json index e5a949ed..8178ac9a 100644 --- a/api_v2/tests/responses/TestObjects.test_damagetype_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_damagetype_example.approved.json @@ -11,8 +11,7 @@ "gamesystem": "5e-2024" } ], - "document": "http://localhost:8000/v2/documents/core/", + "document": "core", "key": "radiant", - "name": "Radiant", - "url": "http://localhost:8000/v2/damagetypes/radiant/" + "name": "Radiant" } diff --git a/api_v2/tests/responses/TestObjects.test_document_example.approved.json b/api_v2/tests/responses/TestObjects.test_document_example.approved.json index 2b7c3229..cfba2d02 100644 --- a/api_v2/tests/responses/TestObjects.test_document_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_document_example.approved.json @@ -5,20 +5,17 @@ "distance_unit": "feet", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "licenses": [ { "key": "cc-by-40", - "name": "Creative Commons Attribution 4.0", - "url": "http://localhost:8000/v2/licenses/cc-by-40/" + "name": "Creative Commons Attribution 4.0" }, { "key": "ogl-10a", - "name": "OPEN GAME LICENSE Version 1.0a", - "url": "http://localhost:8000/v2/licenses/ogl-10a/" + "name": "OPEN GAME LICENSE Version 1.0a" } ], "name": "System Reference Document 5.1", @@ -26,10 +23,8 @@ "publication_date": "2023-01-23T00:00:00", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE", - "url": "http://localhost:8000/v2/documents/srd-2014/", "weight_unit": "lb" } diff --git a/api_v2/tests/responses/TestObjects.test_environment_example.approved.json b/api_v2/tests/responses/TestObjects.test_environment_example.approved.json index ee45b619..8400cb5b 100644 --- a/api_v2/tests/responses/TestObjects.test_environment_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_environment_example.approved.json @@ -1,10 +1,9 @@ { "aquatic": false, "desc": "The **Astral Plane** is the realm of thought and dream, where visitors travel as disembodied souls to reach the planes of the divine and demonic. It is a great, silvery sea, the same above and below, with swirling wisps of white and gray streaking among motes of light resembling distant stars. Erratic whirlpools of color flicker in midair like spinning coins. Occasional bits of solid matter can be found here, but most of the Astral Plane is an endless, open domain.", - "document": "http://localhost:8000/v2/documents/srd-2014/", + "document": "srd-2014", "interior": false, "key": "srd_astral-plane", "name": "Astral Plane", - "planar": true, - "url": "http://localhost:8000/v2/environments/srd_astral-plane/" + "planar": true } diff --git a/api_v2/tests/responses/TestObjects.test_feats_example.approved.json b/api_v2/tests/responses/TestObjects.test_feats_example.approved.json index 1357b9fc..4eeb7fa9 100644 --- a/api_v2/tests/responses/TestObjects.test_feats_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_feats_example.approved.json @@ -12,16 +12,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -29,6 +27,5 @@ "key": "srd_grappler", "name": "Grappler", "prerequisite": "Strength 13 or higher", - "type": "GENERAL", - "url": "http://localhost:8000/v2/feats/srd_grappler/" + "type": "GENERAL" } diff --git a/api_v2/tests/responses/TestObjects.test_item_armor_example.approved.json b/api_v2/tests/responses/TestObjects.test_item_armor_example.approved.json index d9175d5c..4f96fe24 100644 --- a/api_v2/tests/responses/TestObjects.test_item_armor_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_item_armor_example.approved.json @@ -8,14 +8,12 @@ "grants_stealth_disadvantage": true, "key": "srd_splint", "name": "Splint", - "strength_score_required": 15, - "url": "http://localhost:8000/v2/armor/srd_splint/" + "strength_score_required": 15 }, "attunement_detail": null, "category": { "key": "armor", - "name": "Armor", - "url": "http://localhost:8000/v2/itemcategories/armor/" + "name": "Armor" }, "cost": "200.00", "desc": "This armor is made of narrow vertical strips of metal riveted to a backing of leather that is worn over cloth padding. Flexible chain mail protects the joints.", @@ -23,16 +21,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -43,10 +39,8 @@ "requires_attunement": false, "size": { "key": "tiny", - "name": "Tiny", - "url": "http://localhost:8000/v2/sizes/tiny/" + "name": "Tiny" }, - "url": "http://localhost:8000/v2/items/srd_splint-armor/", "weapon": null, "weight": "60.000", "weight_unit": "lb" diff --git a/api_v2/tests/responses/TestObjects.test_item_category_example.approved.json b/api_v2/tests/responses/TestObjects.test_item_category_example.approved.json index 2236c4ca..0619136b 100644 --- a/api_v2/tests/responses/TestObjects.test_item_category_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_item_category_example.approved.json @@ -3,20 +3,17 @@ "display_name": "5e Core", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "core", "name": "5e Core Concepts", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "open5e", - "name": "Open5e", - "url": "http://localhost:8000/v2/publishers/open5e/" + "name": "Open5e" }, "type": "MISC" }, "key": "weapon", - "name": "Weapon", - "url": "http://localhost:8000/v2/itemcategories/weapon/" + "name": "Weapon" } diff --git a/api_v2/tests/responses/TestObjects.test_item_example.approved.json b/api_v2/tests/responses/TestObjects.test_item_example.approved.json index 98a803a3..520e414f 100644 --- a/api_v2/tests/responses/TestObjects.test_item_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_item_example.approved.json @@ -3,8 +3,7 @@ "attunement_detail": null, "category": { "key": "wondrous-item", - "name": "Wondrous Item", - "url": "http://localhost:8000/v2/itemcategories/wondrous-item/" + "name": "Wondrous Item" }, "cost": "0.00", "desc": "This item first appears to be a Large sealed iron barrel weighing 500 pounds. The barrel has a hidden catch, which can be found with a successful DC 20 Intelligence (Investigation) check. Releasing the catch unlocks a hatch at one end of the barrel, allowing two Medium or smaller creatures to crawl inside. Ten levers are set in a row at the far end, each in a neutral position, able to move either up or down. When certain levers are used, the apparatus transforms to resemble a giant lobster.\r\n\r\nThe apparatus of the Crab is a Large object with the following statistics:\r\n\r\n**Armor Class:** 20\r\n\r\n**Hit Points:** 200\r\n\r\n**Speed:** 30 ft., swim 30 ft. (or 0 ft. for both if the legs and tail aren't extended)\r\n\r\n**Damage Immunities:** poison, psychic\r\n\r\nTo be used as a vehicle, the apparatus requires one pilot. While the apparatus's hatch is closed, the compartment is airtight and watertight. The compartment holds enough air for 10 hours of breathing, divided by the number of breathing creatures inside.\r\n\r\nThe apparatus floats on water. It can also go underwater to a depth of 900 feet. Below that, the vehicle takes 2d6 bludgeoning damage per minute from pressure.\r\n\r\nA creature in the compartment can use an action to move as many as two of the apparatus's levers up or down. After each use, a lever goes back to its neutral position. Each lever, from left to right, functions as shown in the Apparatus of the Crab Levers table.\r\n\r\n**Apparatus of the Crab Levers (table)**\r\n\r\n| Lever | Up | Down |\r\n|-------|----------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|\r\n| 1 | Legs and tail extend, allowing the apparatus to walk and swim. | Legs and tail retract, reducing the apparatus's speed to 0 and making it unable to benefit from bonuses to speed. |\r\n| 2 | Forward window shutter opens. | Forward window shutter closes. |\r\n| 3 | Side window shutters open (two per side). | Side window shutters close (two per side). |\r\n| 4 | Two claws extend from the front sides of the apparatus. | The claws retract. |\r\n| 5 | Each extended claw makes the following melee weapon attack: +8 to hit, reach 5 ft., one target. Hit: 7 (2d6) bludgeoning damage. | Each extended claw makes the following melee weapon attack: +8 to hit, reach 5 ft., one target. Hit: The target is grappled (escape DC 15). |\r\n| 6 | The apparatus walks or swims forward. | The apparatus walks or swims backward. |\r\n| 7 | The apparatus turns 90 degrees left. | The apparatus turns 90 degrees right. |\r\n| 8 | Eyelike fixtures emit bright light in a 30-foot radius and dim light for an additional 30 feet. | The light turns off. |\r\n| 9 | The apparatus sinks as much as 20 feet in liquid. | The apparatus rises up to 20 feet in liquid. |\r\n| 10 | The rear hatch unseals and opens. | The rear hatch closes and seals. |", @@ -12,16 +11,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -31,16 +28,13 @@ "rarity": { "key": "legendary", "name": "Legendary", - "rank": 5, - "url": "http://localhost:8000/v2/itemrarities/legendary/" + "rank": 5 }, "requires_attunement": false, "size": { "key": "tiny", - "name": "Tiny", - "url": "http://localhost:8000/v2/sizes/tiny/" + "name": "Tiny" }, - "url": "http://localhost:8000/v2/items/srd_apparatus-of-the-crab/", "weapon": null, "weight": "0.000", "weight_unit": "lb" diff --git a/api_v2/tests/responses/TestObjects.test_item_melee_weapon_example.approved.json b/api_v2/tests/responses/TestObjects.test_item_melee_weapon_example.approved.json index 89036ef5..0cea54ca 100644 --- a/api_v2/tests/responses/TestObjects.test_item_melee_weapon_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_item_melee_weapon_example.approved.json @@ -3,8 +3,7 @@ "attunement_detail": null, "category": { "key": "weapon", - "name": "Weapon", - "url": "http://localhost:8000/v2/itemcategories/weapon/" + "name": "Weapon" }, "cost": "10.00", "desc": "A short sword.", @@ -12,16 +11,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -32,16 +29,13 @@ "requires_attunement": false, "size": { "key": "tiny", - "name": "Tiny", - "url": "http://localhost:8000/v2/sizes/tiny/" + "name": "Tiny" }, - "url": "http://localhost:8000/v2/items/srd_shortsword/", "weapon": { "damage_dice": "1d6", "damage_type": { "key": "slashing", - "name": "Slashing", - "url": "http://localhost:8000/v2/damagetypes/slashing/" + "name": "Slashing" }, "distance_unit": "feet", "is_improvised": false, @@ -55,8 +49,7 @@ "property": { "desc": "When making an attack with a finesse weapon, you use your choice of your Strength or Dexterity modifier for the attack and damage rolls. You must use the same modifier for both rolls.", "name": "Finesse", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2014_finesse-wp/" + "type": null } }, { @@ -64,12 +57,10 @@ "property": { "desc": "A light weapon is small and easy to handle, making it ideal for use when fighting with two weapons.", "name": "Light", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2014_light-wp/" + "type": null } } - ], - "url": "http://localhost:8000/v2/weapons/srd_shortsword/" + ] }, "weight": "2.000", "weight_unit": "lb" diff --git a/api_v2/tests/responses/TestObjects.test_item_ranged_weapon_example.approved.json b/api_v2/tests/responses/TestObjects.test_item_ranged_weapon_example.approved.json index b478106d..e653c1d4 100644 --- a/api_v2/tests/responses/TestObjects.test_item_ranged_weapon_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_item_ranged_weapon_example.approved.json @@ -3,8 +3,7 @@ "attunement_detail": null, "category": { "key": "weapon", - "name": "Weapon", - "url": "http://localhost:8000/v2/itemcategories/weapon/" + "name": "Weapon" }, "cost": "50.00", "desc": "A longbow.", @@ -12,16 +11,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -32,16 +29,13 @@ "requires_attunement": false, "size": { "key": "tiny", - "name": "Tiny", - "url": "http://localhost:8000/v2/sizes/tiny/" + "name": "Tiny" }, - "url": "http://localhost:8000/v2/items/srd_longbow/", "weapon": { "damage_dice": "1d8", "damage_type": { "key": "piercing", - "name": "Piercing", - "url": "http://localhost:8000/v2/damagetypes/piercing/" + "name": "Piercing" }, "distance_unit": "feet", "is_improvised": false, @@ -55,8 +49,7 @@ "property": { "desc": "You can use a weapon that has the ammunition property to make a ranged attack only if you have ammunition to fire from the weapon. Each time you attack with the weapon, you expend one piece of ammunition. Drawing the ammunition from a quiver, case, or other container is part of the attack (you need a free hand to load a one-\u00ad\u2010\u2011handed weapon). At the end of the battle, you can recover half your expended ammunition by taking a minute to search the battlefield.\n\nIf you use a weapon that has the ammunition property to make a melee attack, you treat the weapon as an improvised weapon (see \u201cImprovised Weapons\u201d later in the section). A sling must be loaded to deal any damage when used in this way.", "name": "Ammunition", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2014_ammunition-wp/" + "type": null } }, { @@ -64,12 +57,10 @@ "property": { "desc": "This weapon requires two hands when you attack with it.", "name": "Two-Handed", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2014_two-handed-wp/" + "type": null } } - ], - "url": "http://localhost:8000/v2/weapons/srd_longbow/" + ] }, "weight": "2.000", "weight_unit": "lb" diff --git a/api_v2/tests/responses/TestObjects.test_item_set_example.approved.json b/api_v2/tests/responses/TestObjects.test_item_set_example.approved.json index 0fcbb847..7b8c1ed6 100644 --- a/api_v2/tests/responses/TestObjects.test_item_set_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_item_set_example.approved.json @@ -1,34 +1,28 @@ { "desc": "An arcane focus is a special item - an orb, a crystal, a rod, a specially constructed staff, a wand-\u00adlike length of wood, or some similar item designed to channel the power of arcane spells. A sorcerer, warlock, or wizard can use such an item as a spellcasting focus.", - "document": "http://localhost:8000/v2/documents/srd-2014/", + "document": "srd-2014", "items": [ { "key": "srd_crystal", - "name": "Crystal", - "url": "http://localhost:8000/v2/items/srd_crystal/" + "name": "Crystal" }, { "key": "srd_orb", - "name": "Orb", - "url": "http://localhost:8000/v2/items/srd_orb/" + "name": "Orb" }, { "key": "srd_rod", - "name": "Rod", - "url": "http://localhost:8000/v2/items/srd_rod/" + "name": "Rod" }, { "key": "srd_staff", - "name": "Staff", - "url": "http://localhost:8000/v2/items/srd_staff/" + "name": "Staff" }, { "key": "srd_wand", - "name": "Wand", - "url": "http://localhost:8000/v2/items/srd_wand/" + "name": "Wand" } ], "key": "arcane-focuses", - "name": "Arcane Focuses", - "url": "http://localhost:8000/v2/itemsets/arcane-focuses/" + "name": "Arcane Focuses" } diff --git a/api_v2/tests/responses/TestObjects.test_itemrarity_example.approved.json b/api_v2/tests/responses/TestObjects.test_itemrarity_example.approved.json index bcae41db..8788d829 100644 --- a/api_v2/tests/responses/TestObjects.test_itemrarity_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_itemrarity_example.approved.json @@ -1,6 +1,5 @@ { "key": "common", "name": "Common", - "rank": 1, - "url": "http://localhost:8000/v2/itemrarities/common/" + "rank": 1 } diff --git a/api_v2/tests/responses/TestObjects.test_language_example.approved.json b/api_v2/tests/responses/TestObjects.test_language_example.approved.json index b649902b..3e500609 100644 --- a/api_v2/tests/responses/TestObjects.test_language_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_language_example.approved.json @@ -4,16 +4,14 @@ "display_name": "5e Core", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "core", "name": "5e Core Concepts", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "open5e", - "name": "Open5e", - "url": "http://localhost:8000/v2/publishers/open5e/" + "name": "Open5e" }, "type": "MISC" }, @@ -21,6 +19,5 @@ "is_secret": false, "key": "abyssal", "name": "Abyssal", - "script_language": "http://localhost:8000/v2/languages/infernal/", - "url": "http://localhost:8000/v2/languages/abyssal/" + "script_language": "infernal" } diff --git a/api_v2/tests/responses/TestObjects.test_license_example.approved.json b/api_v2/tests/responses/TestObjects.test_license_example.approved.json index 32a67c2f..050026c1 100644 --- a/api_v2/tests/responses/TestObjects.test_license_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_license_example.approved.json @@ -1,6 +1,5 @@ { "desc": "The following text is the property of Wizards of the Coast, Inc. and is Copyright 2000 Wizards of the Coast, Inc (\"Wizards\"). All Rights Reserved.\r\n1. Definitions: (a)\"Contributors\" means the copyright and/or trademark owners who have contributed Open Game Content; (b)\"Derivative Material\" means copyrighted material including derivative works and translations (including into other computer languages), potation, modification, correction, addition, extension, upgrade, improvement, compilation, abridgment or other form in which an existing work may be recast, transformed or adapted; (c) \"Distribute\" means to reproduce, license, rent, lease, sell, broadcast, publicly display, transmit or otherwise distribute; (d)\"Open Game Content\" means the game mechanic and includes the methods, procedures, processes and routines to the extent such content does not embody the Product Identity and is an enhancement over the prior art and any additional content clearly identified as Open Game Content by the Contributor, and means any work covered by this License, including translations and derivative works under copyright law, but specifically excludes Product Identity. (e) \"Product Identity\" means product and product line names, logos and identifying marks including trade dress; artifacts; creatures characters; stories, storylines, plots, thematic elements, dialogue, incidents, language, artwork, symbols, designs, depictions, likenesses, formats, poses, concepts, themes and graphic, photographic and other visual or audio representations; names and descriptions of characters, spells, enchantments, personalities, teams, personas, likenesses and special abilities; places, locations, environments, creatures, equipment, magical or supernatural abilities or effects, logos, symbols, or graphic designs; and any other trademark or registered trademark clearly identified as Product identity by the owner of the Product Identity, and which specifically excludes the Open Game Content; (f) \"Trademark\" means the logos, names, mark, sign, motto, designs that are used by a Contributor to identify itself or its products or the associated products contributed to the Open Game License by the Contributor (g) \"Use\", \"Used\" or \"Using\" means to use, Distribute, copy, edit, format, modify, translate and otherwise create Derivative Material of Open Game Content. (h) \"You\" or \"Your\" means the licensee in terms of this agreement.\r\n2. The License: This License applies to any Open Game Content that contains a notice indicating that the Open Game Content may only be Used under and in terms of this License. You must affix such a notice to any Open Game Content that you Use. No terms may be added to or subtracted from this License except as described by the License itself. No other terms or conditions may be applied to any Open Game Content distributed using this License.\r\n3. Offer and Acceptance: By Using the Open Game Content You indicate Your acceptance of the terms of this License.\r\n4. Grant and Consideration: In consideration for agreeing to use this License, the Contributors grant You a perpetual, worldwide, royalty-free, non-exclusive license with the exact terms of this License to Use, the Open Game Content.\r\n5.Representation of Authority to Contribute: If You are contributing original material as Open Game Content, You represent that Your Contributions are Your original creation and/or You have sufficient rights to grant the rights conveyed by this License.\r\n6.Notice of License Copyright: You must update the COPYRIGHT NOTICE portion of this License to include the exact text of the COPYRIGHT NOTICE of any Open Game Content You are copying, modifying or distributing, and You must add the title, the copyright date, and the copyright holder's name to the COPYRIGHT NOTICE of any original Open Game Content you Distribute.\r\n7. Use of Product Identity: You agree not to Use any Product Identity, including as an indication as to compatibility, except as expressly licensed in another, independent Agreement with the owner of each element of that Product Identity. You agree not to indicate compatibility or co-adaptability with any Trademark or Registered Trademark in conjunction with a work containing Open Game Content except as expressly licensed in another, independent Agreement with the owner of such Trademark or Registered Trademark. The use of any Product Identity in Open Game Content does not constitute a challenge to the ownership of that Product Identity. The owner of any Product Identity used in Open Game Content shall retain all rights, title and interest in and to that Product Identity.\r\n8. Identification: If you distribute Open Game Content You must clearly indicate which portions of the work that you are distributing are Open Game Content.\r\n9. Updating the License: Wizards or its designated Agents may publish updated versions of this License. You may use any authorized version of this License to copy, modify and distribute any Open Game Content originally distributed under any version of this License.\r\n10. Copy of this License: You MUST include a copy of this License with every copy of the Open Game Content You Distribute.\r\n11. Use of Contributor Credits: You may not market or advertise the Open Game Content using the name of any Contributor unless You have written permission from the Contributor to do so.\r\n12. Inability to Comply: If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Open Game Content due to statute, judicial order, or governmental regulation then You may not Use any Open Game Material so affected.\r\n13. Termination: This License will terminate automatically if You fail to comply with all terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses shall survive the termination of this License.\r\n14. Reformation: If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.\r\n15. COPYRIGHT NOTICE Open Game License v 1.0a Copyright 2000, Wizards of the Coast, Inc.\r\nSystem Reference Document Copyright 2000-2003, Wizards of the Coast, Inc.; Authors Jonathan Tweet, Monte Cook, Skip Williams, Rich Baker, Andy Collins, David Noonan, Rich Redman, Bruce R. Cordell, John D. Rateliff, Thomas Reid, James Wyatt, based on original material by E. Gary Gygax and Dave Arneson.\r\nEND OF LICENSE", "key": "ogl-10a", - "name": "OPEN GAME LICENSE Version 1.0a", - "url": "http://localhost:8000/v2/licenses/ogl-10a/" + "name": "OPEN GAME LICENSE Version 1.0a" } diff --git a/api_v2/tests/responses/TestObjects.test_publisher_example.approved.json b/api_v2/tests/responses/TestObjects.test_publisher_example.approved.json index dc32379e..6c62f2bf 100644 --- a/api_v2/tests/responses/TestObjects.test_publisher_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_publisher_example.approved.json @@ -1,5 +1,4 @@ { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" } diff --git a/api_v2/tests/responses/TestObjects.test_size_example.approved.json b/api_v2/tests/responses/TestObjects.test_size_example.approved.json index 94d00cd4..1dfbc09e 100644 --- a/api_v2/tests/responses/TestObjects.test_size_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_size_example.approved.json @@ -4,16 +4,14 @@ "display_name": "5e Core", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "core", "name": "5e Core Concepts", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "open5e", - "name": "Open5e", - "url": "http://localhost:8000/v2/publishers/open5e/" + "name": "Open5e" }, "type": "MISC" }, @@ -21,6 +19,5 @@ "name": "Huge", "rank": 5, "space_diameter": 15, - "suggested_hit_dice": "d12", - "url": "http://localhost:8000/v2/sizes/huge/" + "suggested_hit_dice": "d12" } diff --git a/api_v2/tests/responses/TestObjects.test_species_example.approved.json b/api_v2/tests/responses/TestObjects.test_species_example.approved.json index a55d12f3..9a85dc67 100644 --- a/api_v2/tests/responses/TestObjects.test_species_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_species_example.approved.json @@ -4,16 +4,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -76,6 +74,5 @@ "order": null, "type": null } - ], - "url": "http://localhost:8000/v2/species/srd_halfling/" + ] } diff --git a/api_v2/tests/responses/TestObjects.test_spell_cantrip_example.approved.json b/api_v2/tests/responses/TestObjects.test_spell_cantrip_example.approved.json index 01aa10ff..e4506ae7 100644 --- a/api_v2/tests/responses/TestObjects.test_spell_cantrip_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_spell_cantrip_example.approved.json @@ -16,23 +16,19 @@ "classes": [ { "key": "srd_bard", - "name": "Bard", - "url": "http://localhost:8000/v2/classes/srd_bard/" + "name": "Bard" }, { "key": "srd_sorcerer", - "name": "Sorcerer", - "url": "http://localhost:8000/v2/classes/srd_sorcerer/" + "name": "Sorcerer" }, { "key": "srd_warlock", - "name": "Warlock", - "url": "http://localhost:8000/v2/classes/srd_warlock/" + "name": "Warlock" }, { "key": "srd_wizard", - "name": "Wizard", - "url": "http://localhost:8000/v2/classes/srd_wizard/" + "name": "Wizard" } ], "concentration": false, @@ -43,16 +39,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -73,8 +67,7 @@ "saving_throw_ability": "", "school": { "key": "transmutation", - "name": "Transmutation", - "url": "http://localhost:8000/v2/spellschools/transmutation/" + "name": "Transmutation" }, "shape_size": null, "shape_size_unit": "feet", @@ -82,6 +75,5 @@ "somatic": true, "target_count": 1, "target_type": "object", - "url": "http://localhost:8000/v2/spells/srd_prestidigitation/", "verbal": true } diff --git a/api_v2/tests/responses/TestObjects.test_spell_fireball.approved.json b/api_v2/tests/responses/TestObjects.test_spell_fireball.approved.json index 1592933e..cb527bf3 100644 --- a/api_v2/tests/responses/TestObjects.test_spell_fireball.approved.json +++ b/api_v2/tests/responses/TestObjects.test_spell_fireball.approved.json @@ -76,13 +76,11 @@ "classes": [ { "key": "srd_sorcerer", - "name": "Sorcerer", - "url": "http://localhost:8000/v2/classes/srd_sorcerer/" + "name": "Sorcerer" }, { "key": "srd_wizard", - "name": "Wizard", - "url": "http://localhost:8000/v2/classes/srd_wizard/" + "name": "Wizard" } ], "concentration": false, @@ -95,16 +93,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -125,8 +121,7 @@ "saving_throw_ability": "dexterity", "school": { "key": "evocation", - "name": "Evocation", - "url": "http://localhost:8000/v2/spellschools/evocation/" + "name": "Evocation" }, "shape_size": 20, "shape_size_unit": "feet", @@ -134,6 +129,5 @@ "somatic": true, "target_count": 1, "target_type": "point", - "url": "http://localhost:8000/v2/spells/srd_fireball/", "verbal": true } diff --git a/api_v2/tests/responses/TestObjects.test_spell_wish.approved.json b/api_v2/tests/responses/TestObjects.test_spell_wish.approved.json index 3a98a464..f41a8779 100644 --- a/api_v2/tests/responses/TestObjects.test_spell_wish.approved.json +++ b/api_v2/tests/responses/TestObjects.test_spell_wish.approved.json @@ -16,13 +16,11 @@ "classes": [ { "key": "srd_sorcerer", - "name": "Sorcerer", - "url": "http://localhost:8000/v2/classes/srd_sorcerer/" + "name": "Sorcerer" }, { "key": "srd_wizard", - "name": "Wizard", - "url": "http://localhost:8000/v2/classes/srd_wizard/" + "name": "Wizard" } ], "concentration": false, @@ -33,16 +31,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -63,8 +59,7 @@ "saving_throw_ability": "", "school": { "key": "conjuration", - "name": "Conjuration", - "url": "http://localhost:8000/v2/spellschools/conjuration/" + "name": "Conjuration" }, "shape_size": null, "shape_size_unit": "feet", @@ -72,6 +67,5 @@ "somatic": false, "target_count": 1, "target_type": "creature", - "url": "http://localhost:8000/v2/spells/srd_wish/", "verbal": true } diff --git a/api_v2/tests/responses/TestObjects.test_subclass_example.approved.json b/api_v2/tests/responses/TestObjects.test_subclass_example.approved.json index 990e04d5..21f9a86c 100644 --- a/api_v2/tests/responses/TestObjects.test_subclass_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_subclass_example.approved.json @@ -5,16 +5,14 @@ "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -92,8 +90,6 @@ "saving_throws": [], "subclass_of": { "key": "srd_rogue", - "name": "Rogue", - "url": "http://localhost:8000/v2/classes/srd_rogue/" - }, - "url": "http://localhost:8000/v2/classes/srd_thief/" + "name": "Rogue" + } } diff --git a/api_v2/tests/responses/TestObjects.test_weapon_example.approved.json b/api_v2/tests/responses/TestObjects.test_weapon_example.approved.json index 2f027abe..c0bbfa92 100644 --- a/api_v2/tests/responses/TestObjects.test_weapon_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_weapon_example.approved.json @@ -2,24 +2,21 @@ "damage_dice": "1d6", "damage_type": { "key": "slashing", - "name": "Slashing", - "url": "http://localhost:8000/v2/damagetypes/slashing/" + "name": "Slashing" }, "distance_unit": "feet", "document": { "display_name": "5e 2014 Rules", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "srd-2014", "name": "System Reference Document 5.1", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -34,8 +31,7 @@ "property": { "desc": "When making an attack with a finesse weapon, you use your choice of your Strength or Dexterity modifier for the attack and damage rolls. You must use the same modifier for both rolls.", "name": "Finesse", - "type": null, - "url": "/v2/weaponproperties/srd-2014_finesse-wp/" + "type": null } }, { @@ -43,11 +39,9 @@ "property": { "desc": "A light weapon is small and easy to handle, making it ideal for use when fighting with two weapons.", "name": "Light", - "type": null, - "url": "/v2/weaponproperties/srd-2014_light-wp/" + "type": null } } ], - "range": 0, - "url": "http://localhost:8000/v2/weapons/srd_shortsword/" + "range": 0 } diff --git a/api_v2/tests/responses/TestObjects.test_weapon_with_mastery_example.approved.json b/api_v2/tests/responses/TestObjects.test_weapon_with_mastery_example.approved.json index 15d20357..cd0201b9 100644 --- a/api_v2/tests/responses/TestObjects.test_weapon_with_mastery_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_weapon_with_mastery_example.approved.json @@ -2,24 +2,21 @@ "damage_dice": "1d8", "damage_type": { "key": "slashing", - "name": "Slashing", - "url": "http://localhost:8000/v2/damagetypes/slashing/" + "name": "Slashing" }, "distance_unit": "feet", "document": { "display_name": "5e 2024 Rules", "gamesystem": { "key": "5e-2024", - "name": "5th Edition 2024", - "url": "http://localhost:8000/v2/gamesystems/5e-2024/" + "name": "5th Edition 2024" }, "key": "srd-2024", "name": "System Reference Document 5.2", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "wizards-of-the-coast", - "name": "Wizards of the Coast", - "url": "http://localhost:8000/v2/publishers/wizards-of-the-coast/" + "name": "Wizards of the Coast" }, "type": "SOURCE" }, @@ -34,8 +31,7 @@ "property": { "desc": "If you hit a creature with this weapon, that creature has Disadvantage on its next attack roll before the start of your next turn.", "name": "Sap", - "type": "Mastery", - "url": "/v2/weaponproperties/srd-2024_sap-mastery/" + "type": "Mastery" } }, { @@ -43,11 +39,9 @@ "property": { "desc": "A Versatile weapon can be used with one or two hands. A damage value in parentheses appears with the property. The weapon deals that damage when used with two hands to make a melee attack.", "name": "Versatile", - "type": null, - "url": "/v2/weaponproperties/srd-2024_versatile-wp/" + "type": null } } ], - "range": 0, - "url": "http://localhost:8000/v2/weapons/srd-2024_longsword/" + "range": 0 } diff --git a/api_v2/tests/responses/TestObjects.test_weaponproperties_mastery_filter.approved.json b/api_v2/tests/responses/TestObjects.test_weaponproperties_mastery_filter.approved.json index 7c3791ad..6ea12bd1 100644 --- a/api_v2/tests/responses/TestObjects.test_weaponproperties_mastery_filter.approved.json +++ b/api_v2/tests/responses/TestObjects.test_weaponproperties_mastery_filter.approved.json @@ -5,27 +5,24 @@ "results": [ { "desc": "If you hit a creature with a melee attack roll using this weapon, you can make a melee attack roll with the weapon against a second creature within 5 feet of the first that is also within your reach. On a hit, the second creature takes the weapon's damage, but don't add your ability modifier to that damage unless that modifier is negative. You can make this extra attack only once per turn.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_cleave-mastery", "name": "Cleave", - "type": "Mastery", - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_cleave-mastery/" + "type": "Mastery" }, { "desc": "If your attack roll with this weapon misses a creature, you can deal damage to that creature equal to the ability modifier you used to make the attack roll. This damage is the same type dealt by the weapon, and the damage can be increased only by increasing the ability modifier.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_graze-mastery", "name": "Graze", - "type": "Mastery", - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_graze-mastery/" + "type": "Mastery" }, { "desc": "When you make the extra attack of the Light property, you can make it as part of the Attack action instead of as a Bonus Action. You can make this extra attack only once per turn.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_nick-mastery", "name": "Nick", - "type": "Mastery", - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_nick-mastery/" + "type": "Mastery" } ] } diff --git a/api_v2/tests/responses/TestObjects.test_weaponproperties_standard_filter.approved.json b/api_v2/tests/responses/TestObjects.test_weaponproperties_standard_filter.approved.json index 9f99c63e..4de1b12e 100644 --- a/api_v2/tests/responses/TestObjects.test_weaponproperties_standard_filter.approved.json +++ b/api_v2/tests/responses/TestObjects.test_weaponproperties_standard_filter.approved.json @@ -5,27 +5,24 @@ "results": [ { "desc": "You can use a weapon that has the Ammunition property to make a ranged attack only if you have ammunition to fire from it. The type of ammunition required is specified with the weapon's range. Each attack expends one piece of ammunition. Drawing the ammunition is part of the attack (you need a free hand to load a one-handed weapon). After a fight, you can spend 1 minute to recover half the ammunition (round down) you used in the fight; the rest is lost.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_ammunition-wp", "name": "Ammunition", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_ammunition-wp/" + "type": null }, { "desc": "When making an attack with a Finesse weapon, use your choice of your Strength or Dexterity modifier for the attack and damage rolls. You must use the same modifier for both rolls.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_finesse-wp", "name": "Finesse", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_finesse-wp/" + "type": null }, { "desc": "You have Disadvantage on attack rolls with a Heavy weapon if it's a Melee weapon and your Strength score isn't at least 13 or if it's a Ranged weapon and your Dexterity score isn't at least 13.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_heavy-wp", "name": "Heavy", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_heavy-wp/" + "type": null } ] } diff --git a/api_v2/tests/responses/TestObjects.test_weaponproperty_mastery_example.approved.json b/api_v2/tests/responses/TestObjects.test_weaponproperty_mastery_example.approved.json index fb87c91c..ad31dc81 100644 --- a/api_v2/tests/responses/TestObjects.test_weaponproperty_mastery_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_weaponproperty_mastery_example.approved.json @@ -1,8 +1,7 @@ { "desc": "If you hit a creature with a melee attack roll using this weapon, you can make a melee attack roll with the weapon against a second creature within 5 feet of the first that is also within your reach. On a hit, the second creature takes the weapon's damage, but don't add your ability modifier to that damage unless that modifier is negative. You can make this extra attack only once per turn.", - "document": "http://localhost:8000/v2/documents/srd-2024/", + "document": "srd-2024", "key": "srd-2024_cleave-mastery", "name": "Cleave", - "type": "Mastery", - "url": "http://localhost:8000/v2/weaponproperties/srd-2024_cleave-mastery/" + "type": "Mastery" } diff --git a/api_v2/tests/responses/TestObjects.test_weaponproperty_standard_example.approved.json b/api_v2/tests/responses/TestObjects.test_weaponproperty_standard_example.approved.json index ecfeaac8..e74dc1ca 100644 --- a/api_v2/tests/responses/TestObjects.test_weaponproperty_standard_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_weaponproperty_standard_example.approved.json @@ -1,8 +1,7 @@ { "desc": "When making an attack with a finesse weapon, you use your choice of your Strength or Dexterity modifier for the attack and damage rolls. You must use the same modifier for both rolls.", - "document": "http://localhost:8000/v2/documents/srd-2014/", + "document": "srd-2014", "key": "srd-2014_finesse-wp", "name": "Finesse", - "type": null, - "url": "http://localhost:8000/v2/weaponproperties/srd-2014_finesse-wp/" + "type": null } From dde761585df8a3bc2e286bc50ccd2d181b4014da Mon Sep 17 00:00:00 2001 From: calumbell Date: Fri, 20 Mar 2026 09:44:59 +0000 Subject: [PATCH 4/4] fixed failing test --- .../TestObjects.test_condition_example.approved.json | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/api_v2/tests/responses/TestObjects.test_condition_example.approved.json b/api_v2/tests/responses/TestObjects.test_condition_example.approved.json index 15c8a21f..9d1a9c79 100644 --- a/api_v2/tests/responses/TestObjects.test_condition_example.approved.json +++ b/api_v2/tests/responses/TestObjects.test_condition_example.approved.json @@ -20,16 +20,14 @@ "display_name": "5e Core", "gamesystem": { "key": "5e-2014", - "name": "5th Edition 2014", - "url": "http://localhost:8000/v2/gamesystems/5e-2014/" + "name": "5th Edition 2014" }, "key": "core", "name": "5e Core Concepts", "permalink": "https://dnd.wizards.com/resources/systems-reference-document", "publisher": { "key": "open5e", - "name": "Open5e", - "url": "http://localhost:8000/v2/publishers/open5e/" + "name": "Open5e" }, "type": "MISC" }, @@ -38,10 +36,8 @@ "attribution": "Designed with love by Anaislalovi (@anaislalovi) for Elderberry Inn.", "file_url": "/static/img/object_icons/elderberry-inn-icons/conditions/stunned.svg", "key": "elderberry_stunned", - "name": "Stunned", - "url": "http://localhost:8000/v2/images/elderberry_stunned/" + "name": "Stunned" }, "key": "stunned", - "name": "Stunned", - "url": "http://localhost:8000/v2/conditions/stunned/" + "name": "Stunned" }