-
Notifications
You must be signed in to change notification settings - Fork 5
API (Cards)
The Cards private1 API returns card data in a machine-friendly format.
Updated 11/12/2021: source
and release_dates
fields have been added.
Updated 01/03/2021: The with_accept_language
parameter has been removed. You were
formerly able to pass it to request string translations according to the
Accept-Language HTTP header. This is now always enabled. If you want the old behaviour,
(i.e. Japanese strings) set your Accept-Language header to ja-JP
.
Updated 24/02/2021: Some keys now contain properly signed image URLs. They are guaranteed to be valid for at least 1 hour2. You should either use them immediately or cache them on your server for long-term use.
List all card IDs:
GET /api/private/cards/id_list.json
{
"result": [
{
"ordinal": 1,
"id": 100011001
},
...
]
}
You can retrieve information for one or more cards, named by ID or ordinal:
GET /api/private/cards/ordinal/[ids].json
GET /api/private/cards/id/[ids].json
{
"result": [
(card),
...
]
}
[ids] is a comma separated list.
You can retrieve all cards of a particular member, named by their ID:
GET /api/private/cards/member/[id].json
{
"result": [
(card),
...
]
}
You cannot pass a list of names, but other remarks above apply.
This object is returned where (card)
is mentioned above.
{
"id": 202053001,
"ordinal": 244,
"rarity": 30,
"max_level": 80,
"attribute": 3,
"role": 1,
"training_tree_m_id": 202053001,
"sp_point": 4,
"exchange_item_id": 3,
"max_passive_skill_slot": 4,
"background_asset_path": "sR",
"member": 205,
"role_effect": {
"change_effect_type": 1,
"change_effect_value": 500,
"positive_type": 1,
"positive_value": 500,
"negative_type": 3,
"negative_value": 500
},
"normal_appearance": {
"name": "二人きりの時間を過ごしたい",
"image_asset_path": "http://domain.example/image/abcd.jpg",
"thumbnail_asset_path": "http://domain.example/image/abcd.png"
},
"idolized_appearance": {
"name": "ハートビート★スクールガール",
"image_asset_path": "http://domain.example/image/abcd.jpg",
"thumbnail_asset_path": "http://domain.example/image/abcd.png"
},
"active_skill": {
"id": 10023501,
"name": "愛さんと遊ぶ準備、できてる?",
"description": "5ノーツの間獲得ボルテージが6%増加\n対象:全員",
"skill_type": 1,
"sp_gauge_point": 200,
"icon_asset_path": null,
"thumbnail_asset_path": "~.",
"rarity": 0,
"trigger_type": 255,
"trigger_probability": 3300,
"target": {
"id": 1,
"self_only": 0,
"not_self": 0,
"apply_count": 9,
"owner_party": 0,
"owner_school": 0,
"owner_year": 0,
"owner_subunit": 0,
"owner_attribute": 0,
"owner_role": 0,
"fixed_attributes": [],
"fixed_members": [],
"fixed_subunits": [],
"fixed_schools": [],
"fixed_years": [],
"fixed_roles": []
},
"conditions": [],
"levels": [
# see Skill.Effect def in libcard2.dataclasses
[2, 18, 600, 2, 2, 2, 2, 5],
...
],
"levels_2": [
# Same content as "levels" if the skill has a secondary effect.
# If not, the key is set to null (not an empty list). The key is always present.
...
]
},
"passive_skills": [
... (same struct as active_skill above)
],
# level, appeal, stamina, technique
"idolized_offset": [1, 259, 123, 206],
"tt_offset": [
# level, appeal, stamina, technique
[0, 3888, 1848, 3096],
...
],
"stats": [
# level, appeal, stamina, technique
[1, 1947, 929, 1548],
...
],
"costume_info": [
")2/", 202053001, null, null
],
"source": 3,
"release_dates": {
"en": "2021-09-04T06:00:00+00:00",
"jp": "2021-09-04T06:00:00+00:00"
}
}
These fields in the card object are derived from other data sources, and so may be missing or incorrect. They can also change at any time without a corresponding master update, so be careful when using them.
-
source
: The original source of the card (e.g. gacha, event reward, ...). A number that corresponds to one of the enums here: https://github.com/summertriangle-dev/arposandra/blob/e334baaacb51b29fd832844b2e350aafdda14676/captain/models/mine_models.py#L201 (starting withunspec = 1
). This is extracted from JP news posts, so it can be incorrect. -
release_dates
: The original release date of the card on each server. A map of server IDs to ISO 8601 dates. Not all server IDs are guaranteed to exist.
1: In this case, private means that functionality and shape of the API may change at any time.
2: In the current implementation they are valid forever, but you should not rely on this behaviour.