roblox_api/api/inventory/
v2.rs1use serde::{Deserialize, Serialize};
2
3use crate::{AssetTypeId, DateTime, Paging, endpoint};
4
5pub const URL: &str = "https://inventory.roblox.com/v2";
6
7#[derive(Clone, Debug, Deserialize, Serialize)]
8pub struct FromOwnerAssetOwner {
9 pub id: u64,
10 #[serde(rename = "type")]
11 pub kind: u64,
12 pub name: String,
13}
14
15#[derive(Clone, Debug, Deserialize, Serialize)]
16pub struct FromOwnerAssetInfo {
17 pub id: u64,
18 #[serde(rename = "serialNumber")]
19 pub serial: u64,
20 #[serde(rename = "collectibleItemInstanceId")]
21 pub collectible_instance_id: Option<String>,
22 pub owner: UserOwnedAssetOwner,
23 pub created: DateTime,
24 pub updated: DateTime,
25}
26
27#[derive(Clone, Debug, Deserialize, Serialize)]
28pub struct UserOwnedAssetOwner {
29 #[serde(rename = "userId")]
30 pub id: u64,
31 #[serde(rename = "username")]
32 pub name: String,
33 #[serde(rename = "buildersClubMembershipType")]
35 pub premium_membership_type: String,
36}
37
38#[derive(Clone, Debug, Deserialize, Serialize)]
39pub struct UserOwnedAssetInfo {
40 #[serde(rename = "assetId")]
41 pub id: u64,
42 #[serde(rename = "userAssetId")]
43 pub instance_id: u64,
44 #[serde(rename = "assetName")]
45 pub name: String,
46 pub owner: UserOwnedAssetOwner,
47 #[serde(rename = "collectibleItemId")]
48 pub collectible_id: Option<String>,
49 #[serde(rename = "collectibleItemInstanceId")]
50 pub collectible_instance_id: Option<String>,
51 #[serde(rename = "serialNumber")]
52 pub serial: Option<u64>,
53 pub created: DateTime,
54 pub updated: DateTime,
55}
56
57#[derive(Clone, Debug, Deserialize, Serialize)]
58pub struct AssetOwners {
59 #[serde(rename = "nextPageCursor")]
60 pub next_cursor: String,
61 #[serde(rename = "previousPageCursor")]
62 pub previous_cursor: String,
63 #[serde(rename = "data")]
64 pub assets: Vec<FromOwnerAssetInfo>,
65}
66
67#[derive(Clone, Debug, Deserialize, Serialize)]
68pub struct UserOwnedAssets {
69 #[serde(rename = "nextPageCursor")]
70 pub next_cursor: Option<String>,
71 #[serde(rename = "previousPageCursor")]
72 pub previous_cursor: Option<String>,
73 #[serde(rename = "data")]
74 pub assets: Vec<UserOwnedAssetInfo>,
75}
76
77endpoint! {
78 asset_owners(id: u64, paging: Paging<'_>) -> AssetOwners {
79 GET "{URL}/assets/{id}/owners";
80 paging_query { paging, limit = 10 }
81 }
82
83 user_owned_assets(user_id: u64, asset_type_id: AssetTypeId, paging: Paging<'_>) -> UserOwnedAssets {
84 GET "{URL}/users/{user_id}/inventory/{__aid}";
85 paging_query { paging, limit = 10 }
86 prelude {
87 let __aid = asset_type_id as u8;
88 }
89 }
90}