Skip to content

Add PokéAPI plugin - #141

Closed
clarkd wants to merge 1 commit into
mainfrom
plugins/PokeAPI
Closed

clarkd wants to merge 1 commit into
mainfrom
plugins/PokeAPI

Conversation

@clarkd

@clarkd clarkd commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

🔌 Plugin overview

  • Plugin name: PokéAPI
  • Purpose / problem solved: Explore every Pokémon, type and generation from the free PokéAPI, with base stats, Pokédex entries, type matchups and learnable moves. Imports 1,025 Pokémon species, 18 battle types and 9 generations as objects. There are 8 data streams across those objects, plus an Overview dashboard and a perspective for each object type.
  • Primary audience (e.g. platform teams, SREs, product teams): Anyone who wants a fun, credential-free data source for demos, training and learning to build dashboards. It sits in the Fun category alongside OpenF1, Lichess and NASA.
  • Authentication method(s) (e.g. OAuth, Username/Password, API Key): None. PokéAPI is a free public API with no keys, so ui.json has no fields.

🖼️ Plugin screenshots

Plugin configuration

Screenshot to follow.

Default dashboards

Screenshots to follow.

🧪 Test plan

Deployed with the squaredup CLI to a live SquaredUp organization and added as a data source there:

  • Connection check: the configValidation step's backing stream (types) returned 200 OK against the authenticated data source.
  • Import: a full import ran with every step succeeding. It wrote 1,025 Pokémon across 6 nextUrl pages of /pokemon-species, 18 Pokémon Types (Stellar, Unknown and Shadow filtered out) and 9 Generations. Objects were confirmed in the graph.
  • Data streams: each was run with squaredup test against the live data source and at least two different objects, and the results were compared:
    • Pokémon Profile:
      • Charizard is Fire / Flying, 1.7 m, 90.5 kg, with a base stat total of 534.
      • Pikachu is Electric only, with a stat total of 320.
      • Pecharunt (#1025) returns correctly.
    • Pokémon Stats:
      • Charizard is 78/84/78/109/85/100 and Pikachu is 35/55/40/50/50/90.
      • With both selected, the stream returns 12 rows.
    • Pokémon Moves:
      • Charizard picks Scarlet Violet (84 moves, with Air Slash as an Evolution move).
      • Pidgey picks Brilliant Diamond Shining Pearl and Ponyta picks Legends Arceus.
    • Pokémon Species:
      • Charizard is the "Flame Pokémon", 12.5% female.
      • Mew and Pecharunt are mythical and genderless, and Pecharunt has a null habitat.
      • Mr. Mime shows its official English name.
    • Type Matchups: Fire returns 17 rows; Ghost returns 10, including the 0× immunities.
    • Pokémon by Type:
      • Fire has 81 Pokémon, Dragon 70 and Flying 109, with alternate forms excluded.
      • Charizard is Primary under Fire and Secondary under Flying.
      • Default form names resolve to the indexed object name (Giratina, not giratina-altered).
    • Generation Summary: Generation I is Kanto with 151 species; Generation IV is Sinnoh with 107. New battle types across all generations sum to 18.
    • Pokémon by Generation: Generation I has 151 rows (Add README, LICENSE and basic templates etc. #1–#151) and Generation IV has 107 (#387–#493). All 9 generations together give 1,025 rows.
  • Default content: 4 dashboards (Overview, Pokémon, Pokémon Type, Generation) were deployed. Their tile shaping was checked against the stream output, for example 1,025 species across all generations and 937 moves.

⚠️ Known limitations

  • Species only, no alternate forms. Mega Evolutions, Gigantamax and regional forms are not indexed and are left out of Pokémon by Type. Profiles, stats and moves show each species' default form.
  • Names come from API identifiers. Object, move, game and ability names are built from PokéAPI's identifiers, so punctuation is missing: "Mr Mime", "Farfetchd", "Lets Go Eevee". Pokémon Species shows the official English Pokémon name.
  • Moves cover one game. Pokémon Moves shows the newest game in which the Pokémon has a level-up learnset, which differs between Pokémon. Version-group IDs are chronological except two retro Japanese releases, which are skipped.
  • No evolution chains. The chain ID is only on the species detail, so only "evolves from" is shown.
  • Images are links. Artwork, sprites and cries are links rather than images inside tiles.
  • English only, and no time range: PokéAPI is static reference data, so every stream has timeframes: false.
  • The PokéAPI GraphQL endpoint was deliberately not used. It is in beta and limited to 100 calls an hour per IP, which is shared across SquaredUp's outbound IPs. The REST API is CDN-cached and has no rate limit.

📚 Checklist

  • This PR adds a single plugin only
  • Plugin, datastream and UI naming follow SquaredUp guidelines
  • Logo added
  • One or more dashboards added
  • README added including configuration guidance
  • No secrets or credentials included
  • I agree to the Code of Conduct

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a PokéAPI integration with Pokémon, type, and generation data.
    • Added dashboards for exploring Pokémon profiles and stats, type matchups, generation summaries, moves, and species introduced.
    • Added a connection check when setting up the data source.
  • Documentation
    • Added setup guidance, data coverage details, refresh information, and documented limitations.

Imports every Pokémon species, battle type and generation from the free
PokéAPI, with streams for profiles, base stats, moves, Pokédex entries,
type matchups and generation summaries, plus an Overview dashboard and a
perspective per object type.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Repository UI (base), Organization UI (inherited)
  • Review profile: ASSERTIVE
  • Plan: Enterprise
  • Run ID: 8f599da6-60a5-449a-b674-1dae7ea8c675
📥 Commits

Reviewing files that changed from the base of the PR and between 46726e1 and 2458515.

⛔ Files ignored due to path filters (1)
  • plugins/PokeAPI/v1/icon.svg is excluded by !**/*.svg
📒 Files selected for processing (34)
  • .github/CODEOWNERS
  • plugins/PokeAPI/v1/configValidation.json
  • plugins/PokeAPI/v1/cspell.json
  • plugins/PokeAPI/v1/custom_types.json
  • plugins/PokeAPI/v1/dataStreams/generationSummary.json
  • plugins/PokeAPI/v1/dataStreams/generations.json
  • plugins/PokeAPI/v1/dataStreams/pokemon.json
  • plugins/PokeAPI/v1/dataStreams/pokemonByGeneration.json
  • plugins/PokeAPI/v1/dataStreams/pokemonByType.json
  • plugins/PokeAPI/v1/dataStreams/pokemonMoves.json
  • plugins/PokeAPI/v1/dataStreams/pokemonProfile.json
  • plugins/PokeAPI/v1/dataStreams/pokemonSpecies.json
  • plugins/PokeAPI/v1/dataStreams/pokemonStats.json
  • plugins/PokeAPI/v1/dataStreams/scripts/generationSummary.js
  • plugins/PokeAPI/v1/dataStreams/scripts/pokemonByGeneration.js
  • plugins/PokeAPI/v1/dataStreams/scripts/pokemonByType.js
  • plugins/PokeAPI/v1/dataStreams/scripts/pokemonMoves.js
  • plugins/PokeAPI/v1/dataStreams/scripts/pokemonProfile.js
  • plugins/PokeAPI/v1/dataStreams/scripts/pokemonSpecies.js
  • plugins/PokeAPI/v1/dataStreams/scripts/pokemonStats.js
  • plugins/PokeAPI/v1/dataStreams/scripts/typeMatchups.js
  • plugins/PokeAPI/v1/dataStreams/scripts/types.js
  • plugins/PokeAPI/v1/dataStreams/typeMatchups.json
  • plugins/PokeAPI/v1/dataStreams/types.json
  • plugins/PokeAPI/v1/defaultContent/generation.dash.json
  • plugins/PokeAPI/v1/defaultContent/manifest.json
  • plugins/PokeAPI/v1/defaultContent/overview.dash.json
  • plugins/PokeAPI/v1/defaultContent/pokemon.dash.json
  • plugins/PokeAPI/v1/defaultContent/pokemonType.dash.json
  • plugins/PokeAPI/v1/defaultContent/scopes.json
  • plugins/PokeAPI/v1/docs/README.md
  • plugins/PokeAPI/v1/indexDefinitions/default.json
  • plugins/PokeAPI/v1/metadata.json
  • plugins/PokeAPI/v1/ui.json
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

🧩 Plugin PR Summary

📦 Modified Plugins

  • plugins/PokeAPI/v1

📋 Results

Step Status
Scope & version ✅ Passed
Validation ✅ Passed
Deployment 🚀 Deployed

🔍 Validation Details

✅ pokeapi
{
  "valid": true,
  "pluginName": "pokeapi",
  "pluginType": "hybrid",
  "summary": {
    "Data Streams": 11,
    "Import Definitions": 1,
    "Correlation Rules": 0,
    "UI Configuration": false,
    "Has Icon": true,
    "Has Default Content": true,
    "Config Validation": true,
    "Custom Types": true
  }
}

@clarkd

clarkd commented Oct 13, 2026

Copy link
Copy Markdown
Member Author

Testing AI skill

@clarkd clarkd closed this Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant