Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andrevarandas/clash-royale-api
A wrapper for the OFFICIAL Clash Royale API
https://github.com/andrevarandas/clash-royale-api
api api-wrapper clash-royale-api clash-royale-official clashroyale supercell
Last synced: 2 months ago
JSON representation
A wrapper for the OFFICIAL Clash Royale API
- Host: GitHub
- URL: https://github.com/andrevarandas/clash-royale-api
- Owner: AndreVarandas
- License: mit
- Created: 2019-02-07T23:37:33.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-13T14:37:08.000Z (3 months ago)
- Last Synced: 2024-10-09T22:23:11.675Z (2 months ago)
- Topics: api, api-wrapper, clash-royale-api, clash-royale-official, clashroyale, supercell
- Language: TypeScript
- Size: 1.62 MB
- Stars: 19
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Clash Royale Official API Wrapper
[![npm (scoped)](https://img.shields.io/npm/v/@varandas/clash-royale-api.svg)](https://www.npmjs.com/package/@varandas/clash-royale-api)
[![npm](https://img.shields.io/npm/dm/@varandas/clash-royale-api.svg)](https://npmcharts.com/compare/@varandas/clash-royale-api)[![Build Status](https://travis-ci.org/AndreVarandas/clash-royale-api.svg?branch=master)](https://travis-ci.org/AndreVarandas/clash-royale-api)
[![Codecov Coverage](https://img.shields.io/codecov/c/github/AndreVarandas/clash-royale-api/master.svg?style=flat-square)](https://codecov.io/gh/AndreVarandas/clash-royale-api/)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
[![Known Vulnerabilities](https://snyk.io/test/github/AndreVarandas/clash-royale-api/badge.svg?targetFile=package.json)](https://snyk.io/test/github/AndreVarandas/clash-royale-api?targetFile=package.json)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/AndreVarandas/clash-royale-api/blob/master/LICENSE)An asynchronous wrapper for the official Clash Royale API.
Official API Link [https://developer.clashroyale.com](https://developer.clashroyale.com)
## Important note
This wrapper will only work from a nodejs server app. The official clash royale api is, unfortunately, blocking requests done directly from the browser.
## Getting started
In order to use the official api, you will need a token. This token can be obtained at the Official API website [https://developer.clashroyale.com](https://developer.clashroyale.com). - For each token an ip address is associated, so make sure to use the token in the same server where you got it.
You can also use a **proxy server** to make the requests, such as [https://docs.royaleapi.com/proxy.html](https://docs.royaleapi.com/proxy.html) - More details below in the usage section.
Once you register and get the token, you are ready to start.
## Usage
Install the package:
- `yarn add @varandas/clash-royale-api`
OR
- `npm i --save @varandas/clash-royale-api`
Usage:
```javascript
// Import the package
const { ClashRoyaleAPI } = require('@varandas/clash-royale-api')// Initialize the api
const api = new ClashRoyaleAPI('the token you got from the api')// Use the api to get cards
api
.getCards()
.then(cards => {
// Do something with the cards
})
.catch(err => {
// handle errors
})// Using the proxy server (https://proxy.royaleapi.dev/v1)
// Create a key on the the official API and whitelist (include) this IP: 45.79.218.79
// Use https://proxy.royaleapi.dev/v1
const api = new ClashRoyaleAPI(
'the token you got from the api',
'https://proxy.royaleapi.dev/v1',
)// Use the api to get cards
...
```## About the proxy server
The proxy server is a service provided by the RoyaleAPI team. It allows you to make requests to the official API from the browser.
If you want to host your own proxy server, there is a nuxt web app you can use available at [https://github.com/AndreVarandas/royale-proxy-api](https://github.com/AndreVarandas/royale-proxy-api).
## Methods
All api calls are asynchronous and used in the same way as above in the getCards example.
**Clans**
- `getClans(params: IClanRequestParams)` - Returns a list of all the available clans.
- `getClanByTag(tag: string)` - Returns details about a specific clan.
- `getClanMembers(tag: string)` - Returns a list of clan members.
- `getClanWarlog(tag: string)` - Returns the war log for a clan
- `getClanCurrentWar(tag: string)` - Retrieve information about clan's current clan war
- `getClanCurrentRiverRace(tag: string)` - Retrieve information about clan's current river race**Players**
- `getPlayerByTag(tag: string)` - Get information about a single player by player tag.
- `getPlayerUpcomingChests(tag: string)` - Get list of reward chests that the player will receive next in the game.
- `getPlayerBattleLog(tag: string)` - Get list of recent battle results for a player.**Tournaments**
- `getTournaments(params: ITournamentRequestParams)` - Search all tournaments by name.
- `getTournamentByTag(tag: string)` - Get information about a single tournament by a tournament tag.
- `getGlobalTournaments` - List all available global tournaments.**Cards**
- `getCards` - Get list of all available cards.
**Locations**
- `getLocations(params: ILocationRequestParams)` - List all available locations.
- `getLocationById(id: string, params: ILocationFullRequestParams)` - Get information about specific location.
- `getClanRankinsForLocation(id: string, params: ILocationFullRequestParams)` - Get clan rankings for a specific location.
- `getPlayerRankingsForLocation(id: string, params: ILocationFullRequestParams)` - Get player rankings for a specific location.
- `getClanWarRankingsForLocation(id: string, params: ILocationFullRequestParams)` - Get clan rankings for a specific location.## Configuration Objects
**IClanRequestParams**
```typescript
/**
* Note:
* Only the name property is required.
*/
export interface IClanRequestParams {
/**
* Search clans by name.
* If name is used as part of search query, it needs to be at least three
* characters long. Name search parameter is interpreted as wild card
* search, so it may appear anywhere in the clan name.
*/
name: string
/**
* Filter by clan location identifier. For list of available locations,
* refer to getLocations operation.
*/
locationId?: number
/**
* Filter by minimum amount of clan members.
*/
minMembers?: number
/**
* Filter by maximum amount of clan members.
*/
maxMembers?: number
/**
* Filter by minimum amount of clan score.
*/
minScore?: number
/**
* Limit the number of items returned in the response.
*/
limit?: number
/**
* Return only items that occur after this marker.
* After marker can be found from the response, inside the 'paging' property.
* Note that only after or before can be specified for a request, not both.
*/
after?: number
/**
* Return only items that occur before this marker.
* Before marker can be found from the response, inside the 'paging' property.
* Note that only after or before can be specified for a request, not both.
*/
before?: number
}
```**ITournamentRequestParams**
```typescript
/**
* Note:
* Only the name property is required.
*/
export interface ITournamentRequestParams {
/**
* Search tournaments by name.
*/
name: string
/**
* Limit the number of items returned in the response.
*/
limit?: number
/**
* Return only items that occur after this marker.
* After marker can be found from the response, inside the 'paging' property.
* Note that only after or before can be specified for a request, not both.
*/
after?: number
/**
* Return only items that occur before this marker.
* Before marker can be found from the response, inside the 'paging' property.
* Note that only after or before can be specified for a request, not both.
*/
before?: number
}
```**ILocationRequestParams**
```typescript
export interface ILocationRequestParams {
/**
* Limit the number of items returned in the response.
*/
limit?: number
/**
* Return only items that occur after this marker.
* After marker can be found from the response,
* inside the 'paging' property. Note that only
* after or before can be specified for a request, not both.
*/
after?: number
/**
* Return only items that occur before this marker.
* Before marker can be found from the response,
* inside the 'paging' property. Note that only
* after or before can be specified for a request, not both.
*/
before?: number
}
```[LICENSE - MIT](LICENSE)
---
## Credits
Logo by [Caneco](https://twitter.com/caneco).
---
This content is not affiliated with, endorsed, sponsored, or specifically approved by Supercell and Supercell is not responsible for it. For more information see [Supercell’s Fan Content Policy](http://www.supercell.com/fan-content-policy).