@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Nookipedia
@base https://api.nookipedia.com/
@version 1.7.0
@auth ApiKey X-API-KEY in header
@common_fields {X-API-KEY: str(uuid), Accept-Version: str}
@endpoints 32
@hint download_for_search
@toc villagers(1), nh(31)

@group villagers
@endpoint GET /villagers
@optional {name: str, species: str(alligator/anteater/bear/bear cub/bird/bull/cat/cub/chicken/cow/deer/dog/duck/eagle/elephant/frog/goat/gorilla/hamster/hippo/horse/koala/kangaroo/lion/monkey/mouse/octopus/ostrich/penguin/pig/rabbit/rhino/rhinoceros/sheep/squirrel/tiger/wolf), personality: str(big sister/cranky/jock/lazy/normal/peppy/sisterly/smug/snooty), game: [str], birthmonth: str, birthday: str, nhdetails: str, excludedetails: str, thumbsize: int}
@returns(200)
@errors {400, 401, 500}

@endgroup

@group nh
@endpoint GET /nh/fish
@optional {month: str, excludedetails: str, thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/fish/{fish}
@required {fish: str}
@optional {thumbsize: int}
@returns(200) {url: str, name: str, number: int, image_url: str, render_url: str, location: str, shadow_size: str, rarity: str, total_catch: int, sell_nook: int, sell_cj: int, tank_width: num(float), tank_length: num(float), catchphrases: [str], north: map{availability_array: [map], times_by_month: map{1: str, 2: str, 3: str, 4: str, 5: str, 6: str, 7: str, 8: str, 9: str, 10: str, 11: str, 12: str}, months: str, months_array: [int]}, south: map{availability_array: [map], times_by_month: map{1: str, 4: str, 5: str, 6: str, 7: str, 8: str, 9: str, 10: str, 11: str, 12: str, 2': str, 3': str}, months: str, months_array: [int]}}
@errors {401, 404, 500}

@endpoint GET /nh/bugs
@optional {month: str, excludedetails: str, thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/bugs/{bug}
@required {bug: str}
@optional {thumbsize: int}
@returns(200) {url: str, name: str, number: int, image_url: str, render_url: str, location: str, weather: str, rarity: str, total_catch: int, sell_nook: int, sell_flick: int, tank_width: num(float), tank_length: num(float), catchphrases: [str], north: map{availability_array: [map], times_by_month: map{1: str, 2: str, 3: str, 4: str, 5: str, 6: str, 7: str, 8: str, 9: str, 10: str, 11: str, 12: str}, months: str, months_array: [int]}, south: map{availability_array: [map], times_by_month: map{1: str, 2: str, 3: str, 4: str, 5: str, 6: str, 7: str, 8: str, 9: str, 10: str, 11: str, 12: str}, months: str, months_array: [int]}}
@errors {401, 404, 500}

@endpoint GET /nh/sea
@optional {month: str, excludedetails: str, thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/sea/{sea_creature}
@required {sea_creature: str}
@optional {thumbsize: int}
@returns(200) {url: str, name: str, number: int, image_url: str, render_url: str, shadow_size: str, shadow_movement: str, rarity: str, total_catch: int, sell_nook: int, tank_width: num(float), tank_length: num(float), catchphrases: [str], north: map{availability_array: [map], times_by_month: map{1: str, 2: str, 3: str, 4: str, 5: str, 6: str, 7: str, 8: str, 9: str, 10: str, 11: str, 12: str}, months: str, months_array: [int]}, south: map{availability_array: [map], times_by_month: map{1: str, 2: str, 3: str, 4: str, 5: str, 6: str, 7: str, 8: str, 9: str, 10: str, 11: str, 12: str}, months: str, months_array: [int]}}
@errors {401, 404, 500}

@endpoint GET /nh/events
@optional {date: str, year: str, month: str, day: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/art
@optional {hasfake: str, excludedetails: str, thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/art/{artwork}
@required {artwork: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, has_fake: bool, art_name: str, art_type: str, author: str, year: str, art_style: str, buy: int, sell: int, availability: str, width: num(float), length: num(float), real_info: map{image_url: str, texture_url: str, description: str}, fake_info: map{image_url: str, texture_url: str, description: str}}
@errors {401, 500}

@endpoint GET /nh/furniture
@optional {category: str(Housewares/Miscellaneous/Wall-mounted/Ceiling decor), color: [str], excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/furniture/{furniture}
@required {furniture: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, category: str, item_series: str, item_set: str, themes: [str], hha_category: str, hha_base: int, tag: str, lucky: bool, lucky_season: str, buy: [map], sell: int, variation_total: int, pattern_total: int, customizable: bool, custom_kits: int, custom_kit_type: str, custom_body_part: str, custom_pattern_part: str, grid_width: num(float), grid_length: num(float), height: num(float), door_decor: bool, version_added: str, unlocked: bool, functions: [str], availability: [map], variations: [map], notes: str}
@errors {401, 500}

@endpoint GET /nh/clothing
@optional {category: str(Tops/Bottoms/Dress-up/Headwear/Accessories/Socks/Shoes/Bags/Umbrellas), color: [str], style: [str], labeltheme: str(Comfy/Everyday/Fairy tale/Formal/Goth/Outdoorsy/Party/Sporty/Theatrical/Vacation/Work), excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/clothing/{clothing}
@required {clothing: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, category: str, sell: int, variation_total: int, vill_equip: bool, seasonality: str, version_added: str, unlocked: bool, notes: str, label_themes: [str], styles: [str], availability: [map], buy: [map], variations: [map]}
@errors {401, 500}

@endpoint GET /nh/interior
@optional {category: str(Rugs/Wallpaper/Floors), color: [str], excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/interior/{item}
@required {item: str}
@optional {color: [str], thumbsize: int}
@returns(200) {name: str, url: str, image_url: str, category: str, item_series: str, item_set: str, themes: [str], hha_category: str, hha_base: int, tag: str, sell: int, version_added: str, unlocked: bool, notes: str, grid_width: num(float), grid_length: num(float), colors: str, availability: [map], buy: [map]}
@errors {401, 500}

@endpoint GET /nh/tools
@optional {excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/tools/{tool}
@required {tool: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, uses: int, hha_base: int, sell: int, customizable: bool, custom_kits: int, custom_body_part: str, version_added: str, unlocked: bool, notes: str, availability: [map], buy: [map], variations: [map]}
@errors {401, 500}

@endpoint GET /nh/photos
@optional {excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/photos/{item}
@required {item: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, category: str, sell: int, customizable: bool, custom_kits: int, custom_body_part: str, interactable: bool, version_added: str, unlocked: bool, grid_width: num(float), grid_length: num(float), availability: [map], buy: [map], variations: [map]}
@errors {401, 500}

@endpoint GET /nh/items
@optional {excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/items/{item}
@required {item: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, image_url: str, stack: int, hha_base: int, sell: int, is_fence: bool, material_type: str, material_seasonality: str, material_sort: int, material_name_sort: int, material_seasonality_sort: int, edible: bool, plant_type: str, version_added: str, unlocked: bool, notes: str, availability: [map], buy: [map]}
@errors {401, 500}

@endpoint GET /nh/recipes
@optional {material: str, excludedetails: str, thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/recipes/{item}
@required {item: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, image_url: str, serial_id: int, buy: [map], sell: int, recipes_to_unlock: int, availability: [map], materials: [map]}
@errors {401, 500}

@endpoint GET /nh/fossils/individuals
@optional {thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/fossils/individuals/{fossil}
@required {fossil: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, image_url: str, fossil_group: str, interactable: bool, sell: int, hha_base: int, width: int, length: int, colors: [str]}
@errors {401, 500}

@endpoint GET /nh/fossils/groups
@optional {thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/fossils/groups/{fossil_group}
@required {fossil_group: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, room: int, description: str}
@errors {401, 500}

@endpoint GET /nh/fossils/all
@optional {thumbsize: int}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/fossils/all/{fossil}
@required {fossil: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, room: int, description: str, matched: map{type: str, name: str}, fossils: [map]}
@errors {401, 500}

@endpoint GET /nh/gyroids
@optional {sound: str(crash/drum set/hi-hat/kick/melody/snare), excludedetails: str}
@returns(200)
@errors {401, 500}

@endpoint GET /nh/gyroids/{gyroid}
@required {gyroid: str}
@optional {thumbsize: int}
@returns(200) {name: str, url: str, hha_base: int, sell: int, customizable: bool, custom_kits: int, custom_kit_type: str, custom_body_part: str, cyrus_price: int, variation_total: int, grid_width: num(float), grid_length: num(float), sound: str, version_added: str, unlocked: bool, notes: str, availability: [map], buy: [map], variations: [map]}
@errors {401, 500}

@endgroup

@end
