{"id":30188235,"url":"https://github.com/y9vad9/krawl","last_synced_at":"2025-08-12T16:44:48.422Z","repository":{"id":269366706,"uuid":"907168335","full_name":"y9vad9/krawl","owner":"y9vad9","description":"Type-safe library for accessing Brawl Stars and Brawlify APIs.","archived":false,"fork":false,"pushed_at":"2025-08-08T16:54:02.000Z","size":284,"stargazers_count":3,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-08T18:29:04.644Z","etag":null,"topics":["api","brawl-stars","brawlify","brawlstars","brawlstars-api","kotlin"],"latest_commit_sha":null,"homepage":"https://y9vad9.github.io/brawlstars-api-docs/start-page.html","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/y9vad9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-23T01:41:35.000Z","updated_at":"2025-08-08T16:54:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"1c53385b-d1e2-4da5-88ab-590b517c9823","html_url":"https://github.com/y9vad9/krawl","commit_stats":null,"previous_names":["y9vad9/brawlstars-api","y9vad9/krawl"],"tags_count":4,"template":false,"template_full_name":"y9vad9/kotlin-project-template","purl":"pkg:github/y9vad9/krawl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y9vad9%2Fkrawl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y9vad9%2Fkrawl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y9vad9%2Fkrawl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y9vad9%2Fkrawl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/y9vad9","download_url":"https://codeload.github.com/y9vad9/krawl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y9vad9%2Fkrawl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270100035,"owners_count":24527042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","brawl-stars","brawlify","brawlstars","brawlstars-api","kotlin"],"created_at":"2025-08-12T16:44:45.665Z","updated_at":"2025-08-12T16:44:48.381Z","avatar_url":"https://github.com/y9vad9.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Krawl\n[![CodeQL Analysis](https://github.com/y9vad9/krawl/actions/workflows/analyse.codeql.yml/badge.svg)](https://github.com/y9vad9/krawl/actions/workflows/analyse.codeql.yml) [![Detekt Checks](https://github.com/y9vad9/krawl/actions/workflows/check.detekt.yml/badge.svg)](https://github.com/y9vad9/krawl/actions/workflows/check.detekt.yml) [![Test Suite](https://github.com/y9vad9/krawl/actions/workflows/check.tests.yml/badge.svg)](https://github.com/y9vad9/krawl/actions/workflows/check.tests.yml) [![Coverage](https://codecov.io/gh/y9vad9/krawl/branch/main/graph/badge.svg)](https://codecov.io/gh/y9vad9/krawl)\n\nKrawl is a [coroutine-based](https://kotlinlang.org/docs/coroutines-overview.html) implementation of the Brawl Stars and Brawlify APIs, written 100% in [Kotlin](https://kotlinlang.org/).\n\n## Why use Krawl\nMost libraries for the Brawl Stars and Brawlify APIs, regardless of language, offer little beyond raw JSON mapping. They typically lack type safety, structured domain models, and developer-friendly tooling, forcing you to handle validation and interpretation on your own.\n\nKrawl was built to fix that. It provides a Kotlin-first, type-safe experience designed to simplify API usage without sacrificing correctness or clarity. With rich models, helpful extensions, and thoughtful abstractions, Krawl turns low-level data into high-level utility.\n\n## Status of Krawl\n\u003e [!NOTE]\n\u003e Currently, this is just an overview of what will be available after a release.\n\n- [x] [Official Brawl Stars API](https://developer.brawlstars.com/#/)\n  - [x] Players API\n    - [x] Player information\n    - [x] Player battlelog\n  - [x] Clubs API\n    - [x] List of members\n    - [x] Club information\n  - [x] Rankings API\n    - [x] Clubs ranking\n    - [x] Brawlers ranking\n    - [x] Players ranking\n  - [x] Brawlers API\n    - [x] List of brawlers\n    - [x] Brawler information\n  - [x] Events API\n    - [x] Event rotation information\n- [x] [Official Brawlify API](https://brawlapi.com/)\n  - [x] [Events API](https://brawlapi.com/#/endpoints/events)\n  - [x] [Brawlers API](https://brawlapi.com/#/endpoints/brawlers)\n  - [x] [Maps API](https://brawlapi.com/#/endpoints/maps)\n  - [x] [Game Modes API](https://brawlapi.com/#/endpoints/gamemodes)\n  - [x] [Icons API](https://brawlapi.com/#/endpoints/icons)\n  - [x] [Game Data (Raw files) API](https://brawlapi.com/#/endpoints/game-data)[^1]\n\n[^1]: Game Data (Raw files) API is supported through a Gradle Plugin with code-generation or\nusing [JsonElement](https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json-element/) with `brawlify-api`.\n\n## Documentation\n- [Wiki](https://krawl.y9vad9.com)\n- [Dokka documentation](https://dokka.krawl.y9vad9.com)\n\n## Modules\nKrawl is modular. Depending on your needs, you can choose between raw, low-level access and a high-level, type-safe experience.\n- `brawlstars-api` and `brawlify-api`: low-level access to the APIs, exposing [`@Serializable`](https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-core/kotlinx.serialization/-serializable/) models that closely follow the original JSON schemas. These modules are used internally by their corresponding high-level modules, but still usable outside their high-level wrappers.\n- `brawlstars-core` and `brawlify-core`: high-level access with type-safe models, validation, and Kotlin-first APIs, built on top of the low-level modules.\n- `brawlify-gamedata-core` and `brawlify-gamedata-plugin`: access to Brawlify’s Game Data API. This includes raw data through code-generated models and experimental type-safe access to the localization API, implemented on top of the game data layer.\n\n## Implementation\n\u003cdetails\u003e\n\u003csummary\u003eUsing Version Catalog\u003c/summary\u003e\n\n```toml\n[versions]\nkrawl = \"0.1.0\"\n\n[libraries]\n# Low-level access to the APIs\nkrawl-brawlstars-api = { module = \"com.y9vad9.krawl:brawlstars-api\", version.ref = \"krawl\" }\nkrawl-brawlify-api = { module = \"com.y9vad9.krawl:brawlify-api\", version.ref = \"krawl\" }\n\n# High-level, type-safe access\nkrawl-brawlstars-core = { module = \"com.y9vad9.krawl:brawlstars-core\", version.ref = \"krawl\" }\nkrawl-brawlify-core = { module = \"com.y9vad9.krawl:brawlify-core\", version.ref = \"krawl\" }\n\n# Game Data API and experimental localization access\nkrawl-brawlify-gamedata-core = { module = \"com.y9vad9.krawl:brawlify-gamedata-core\", version.ref = \"krawl\" }\n\n[plugins]\nkrawl-gamedata = { id = \"com.y9vad9.krawl.gamedata\", version.ref = \"krawl\" }\n```\n\n```kotlin\nplugins {\n    alias(libs.plugins.krawl.gamedata)\n}\n\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    // For Kotlin Multiplatform Projects\n    commonMainImplementation(libs.krawl.brawlstars.api)\n    commonMainImplementation(libs.krawl.brawlify.api)\n\n    commonMainImplementation(libs.krawl.brawlstars.core)\n    commonMainImplementation(libs.krawl.brawlify.core)\n    commonMainImplementation(libs.krawl.brawlify.gamedata.core)\n}\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n    \u003csummary\u003eWithout Version Catalog\u003c/summary\u003e\n\n```kotlin\nplugins {\n    id(\"com.y9vad9.krawl.gamedata\") version \"0.1.0\"\n}\n\ndependencies {\n    // Low-level API access\n    implementation(\"com.y9vad9.krawl:brawlstars-api:0.1.0\")\n    implementation(\"com.y9vad9.krawl:brawlify-api:0.1.0\")\n\n    // Type-safe API access\n    implementation(\"com.y9vad9.krawl:brawlstars-core:0.1.0\")\n    implementation(\"com.y9vad9.krawl:brawlify-core:0.1.0\")\n\n    // Game Data API with localization support\n    implementation(\"com.y9vad9.krawl:brawlify-gamedata-core:0.1.0\")\n}\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n    \u003csummary\u003eUsing Maven\u003c/summary\u003e\n\n```xml\n\u003cdependencies\u003e\n  \u003c!-- Low-level API access --\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.y9vad9.krawl\u003c/groupId\u003e\n    \u003cartifactId\u003ebrawlstars-api\u003c/artifactId\u003e\n    \u003cversion\u003e0.1.0\u003c/version\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.y9vad9.krawl\u003c/groupId\u003e\n    \u003cartifactId\u003ebrawlify-api\u003c/artifactId\u003e\n    \u003cversion\u003e0.1.0\u003c/version\u003e\n  \u003c/dependency\u003e\n\n  \u003c!-- Type-safe API access --\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.y9vad9.krawl\u003c/groupId\u003e\n    \u003cartifactId\u003ebrawlstars-core\u003c/artifactId\u003e\n    \u003cversion\u003e0.1.0\u003c/version\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.y9vad9.krawl\u003c/groupId\u003e\n    \u003cartifactId\u003ebrawlify-core\u003c/artifactId\u003e\n    \u003cversion\u003e0.1.0\u003c/version\u003e\n  \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n\u003e Game Data API is currently supported only through a Gradle Plugin.\n\n\u003c/details\u003e\n\n## Contributing\nContributions are welcome! Please create a pull request or open an issue to suggest improvements or report bugs.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n______\n\n*This product is not affiliated with, endorsed, sponsored, or specifically approved by Supercell and Supercell is not\nresponsible for it.\nFor more information see [Supercell’s Fan Content Policy](https://supercell.com/en/fan-content-policy/).*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy9vad9%2Fkrawl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fy9vad9%2Fkrawl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy9vad9%2Fkrawl/lists"}