diff --git a/openapi/components/parameters.yaml b/openapi/components/parameters.yaml index 3a2b8e10..d079c6ad 100644 --- a/openapi/components/parameters.yaml +++ b/openapi/components/parameters.yaml @@ -307,6 +307,14 @@ fuzzy: in: query schema: type: boolean +groupByDuration: + name: groupByDuration + description: Time bucket size for economy metrics. Observed values include `days` and `years`. + required: false + in: query + schema: + type: string + example: days groupGalleryId: name: groupGalleryId description: Must be a valid group gallery ID. @@ -541,6 +549,22 @@ limit: schema: type: integer example: 100 +listingTypeFilter: + name: listingType + description: Filter user listings by category. Observed values include `otp` and `subscription`. + required: false + in: query + schema: + type: string + example: otp +managementPov: + name: managementPov + description: Return stores from the seller management point of view. + required: false + in: query + schema: + type: boolean + example: true maxUnityVersion: name: maxUnityVersion description: The maximum Unity version supported by the asset. @@ -562,6 +586,22 @@ metadata: in: query schema: type: string +metricDateEnd: + name: metricDateEnd + description: Upper bound for economy metrics queries. Observed formats include both date-only and full ISO timestamps. + required: false + in: query + schema: + type: string + example: 2026-04-04T21:59:59.999Z +metricDateStart: + name: metricDateStart + description: Lower bound for economy metrics queries. Observed formats include both date-only and full ISO timestamps. + required: false + in: query + schema: + type: string + example: 2026-03-28T23:00:00.000Z minUnityVersion: name: minUnityVersion description: The minimum Unity version supported by the asset. @@ -741,6 +781,20 @@ search: in: query schema: type: string +sellerId: + name: sellerId + description: Seller to retrieve economy metrics for. + required: true + in: query + schema: + $ref: ./schemas/UserID.yaml +sellerIdQuery: + name: sellerId + description: Filter results by seller. + required: false + in: query + schema: + $ref: ./schemas/UserID.yaml slot: name: slot description: The message slot to fetch of a given message type. diff --git a/openapi/components/paths.yaml b/openapi/components/paths.yaml index 36663409..0972e92a 100644 --- a/openapi/components/paths.yaml +++ b/openapi/components/paths.yaml @@ -140,6 +140,8 @@ $ref: "./paths/economy.yaml#/paths/~1economy~1store" /economy/store/shelves: $ref: "./paths/economy.yaml#/paths/~1economy~1store~1shelves" +/economy/stores: + $ref: "./paths/economy.yaml#/paths/~1economy~1stores" "/favorite/group/{favoriteGroupType}/{favoriteGroupName}/{userId}": $ref: "./paths/favorites.yaml#/paths/~1favorite~1group~1{favoriteGroupType}~1{favoriteGroupName}~1{userId}" /favorite/groups: @@ -288,6 +290,8 @@ $ref: "./paths/miscellaneous.yaml#/paths/~1js~1app.js" "/licenseGroups/{licenseGroupId}": $ref: "./paths/economy.yaml#/paths/~1licenseGroups~1{licenseGroupId}" +/listing: + $ref: "./paths/economy.yaml#/paths/~1listing" "/listing/{productId}": $ref: "./paths/economy.yaml#/paths/~1listing~1{productId}" /logout: @@ -320,6 +324,8 @@ $ref: "./paths/prints.yaml#/paths/~1prints~1user~1{userId}" "/prints/{printId}": $ref: "./paths/prints.yaml#/paths/~1prints~1{printId}" +/products: + $ref: "./paths/economy.yaml#/paths/~1products" "/products/{productId}": $ref: "./paths/economy.yaml#/paths/~1products~1{productId}" /props: @@ -352,6 +358,12 @@ $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1balance~1earnings" "/user/{userId}/economy/account": $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1economy~1account" +"/user/{userId}/economy/balances": + $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1economy~1balances" +"/user/{userId}/economy/payouts/list": + $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1economy~1payouts~1list" +"/user/{userId}/economy/payouts/status": + $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1economy~1payouts~1status" "/user/{userId}/economy/transactions": $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1economy~1transactions" "/user/{userId}/friendRequest": @@ -362,6 +374,10 @@ $ref: "./paths/inventory.yaml#/paths/~1user~1{userId}~1inventory~1{inventoryItemId}" "/user/{userId}/listings": $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1listings" +"/user/{userId}/products": + $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1products" +"/user/{userId}/tilia/kyc": + $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1tilia~1kyc" "/user/{userId}/tilia/tos": $ref: "./paths/economy.yaml#/paths/~1user~1{userId}~1tilia~1tos" /userNotes: diff --git a/openapi/components/paths/economy.yaml b/openapi/components/paths/economy.yaml index 8f0ce07d..de3a7f3c 100644 --- a/openapi/components/paths/economy.yaml +++ b/openapi/components/paths/economy.yaml @@ -118,6 +118,11 @@ paths: "401": $ref: ../responses/MissingCredentialsError.yaml /economy/metrics/earnings: + parameters: + - $ref: ../parameters.yaml#/metricDateStart + - $ref: ../parameters.yaml#/metricDateEnd + - $ref: ../parameters.yaml#/sellerId + - $ref: ../parameters.yaml#/groupByDuration get: operationId: getEarningsMetrics summary: Get Earnings Metrics @@ -153,6 +158,7 @@ paths: /economy/purchases: parameters: - $ref: ../parameters.yaml#/buyerId + - $ref: ../parameters.yaml#/sellerIdQuery - $ref: ../parameters.yaml#/number - $ref: ../parameters.yaml#/offset - $ref: ../parameters.yaml#/mostRecentFlag @@ -253,6 +259,25 @@ paths: $ref: ../responses/economy/StoreShelfListResponse.yaml "401": $ref: ../responses/MissingCredentialsError.yaml + /economy/stores: + parameters: + - $ref: ../parameters.yaml#/sellerIdQuery + - $ref: ../parameters.yaml#/managementPov + - $ref: ../parameters.yaml#/number + - $ref: ../parameters.yaml#/offset + get: + operationId: listStores + summary: List Stores + description: Lists stores, optionally filtered to a seller and adjusted for management views. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/StoreListResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml "/licenseGroups/{licenseGroupId}": parameters: - $ref: ../parameters.yaml#/licenseGroupId @@ -269,6 +294,26 @@ paths: $ref: ../responses/economy/LicenseGroupResponse.yaml "401": $ref: ../responses/MissingCredentialsError.yaml + /listing: + post: + operationId: createProductListingDirect + summary: Create Product Listing + description: Creates a listing and returns the new ProductListing object. The request body is based on observed fields and may be incomplete. + tags: + - economy + requestBody: + required: true + content: + application/json: + schema: + $ref: ../requests/CreateListingRequest.yaml + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/ProductListingResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml "/listing/{productId}": parameters: - $ref: ../parameters.yaml#/productId @@ -286,6 +331,58 @@ paths: $ref: ../responses/economy/ProductListingResponse.yaml "401": $ref: ../responses/MissingCredentialsError.yaml + put: + operationId: updateProductListingDirect + summary: Update Product Listing + description: Updates the active state of a listing. Setting `active` to `true` publishes the listing, while `false` unpublishes it. + tags: + - economy + requestBody: + required: true + content: + application/json: + schema: + $ref: ../requests/UpdateListingRequest.yaml + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/ProductListingResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml + delete: + operationId: deleteProductListingDirect + summary: Delete Product Listing + description: Deletes a listing. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/DeleteProductListingResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml + /products: + post: + operationId: createProduct + summary: Create Product + description: Creates a product and returns the new Product object. + tags: + - economy + requestBody: + required: true + content: + application/json: + schema: + $ref: ../requests/CreateProductRequest.yaml + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/ProductResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml "/products/{productId}": parameters: - $ref: ../parameters.yaml#/productId @@ -303,6 +400,38 @@ paths: $ref: ../responses/economy/ProductListingResponse.yaml "401": $ref: ../responses/MissingCredentialsError.yaml + put: + operationId: updateProduct + summary: Update Product + description: Updates a product and returns the updated Product object. + tags: + - economy + requestBody: + required: true + content: + application/json: + schema: + $ref: ../requests/UpdateProductRequest.yaml + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/ProductResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml + delete: + operationId: deleteProduct + summary: Delete Product + description: Deletes a product. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/DeleteProductResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml /subscriptions: get: operationId: getSubscriptions @@ -423,6 +552,54 @@ paths: $ref: ../responses/economy/EconomyAccountResponse.yaml "401": $ref: ../responses/MissingCredentialsError.yaml + "/user/{userId}/economy/balances": + parameters: + - $ref: ../parameters.yaml#/userId + get: + operationId: getEconomyBalances + summary: Get Economy Balances + description: Gets the combined balances for a user. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/EconomyBalancesResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml + "/user/{userId}/economy/payouts/list": + parameters: + - $ref: ../parameters.yaml#/userId + get: + operationId: getEconomyPayouts + summary: Get Economy Payouts + description: Gets the payout history for a user. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/EconomyPayoutListResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml + "/user/{userId}/economy/payouts/status": + parameters: + - $ref: ../parameters.yaml#/userId + get: + operationId: getEconomyPayoutStatus + summary: Get Economy Payout Status + description: Gets the current payout status and eligibility information for a user. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/EconomyPayoutStatusResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml "/user/{userId}/economy/transactions": parameters: - $ref: ../parameters.yaml#/userId @@ -452,6 +629,7 @@ paths: - $ref: ../parameters.yaml#/number - $ref: ../parameters.yaml#/offset - $ref: ../parameters.yaml#/hydrate + - $ref: ../parameters.yaml#/listingTypeFilter - $ref: ../parameters.yaml#/groupIdFilter - $ref: ../parameters.yaml#/active get: @@ -467,6 +645,40 @@ paths: $ref: ../responses/economy/ProductListingListResponse.yaml "401": $ref: ../responses/MissingCredentialsError.yaml + "/user/{userId}/products": + parameters: + - $ref: ../parameters.yaml#/userId + - $ref: ../parameters.yaml#/number + - $ref: ../parameters.yaml#/offset + get: + operationId: listUserProducts + summary: List User Products + description: Gets the products of a given user. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/ProductListResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml + "/user/{userId}/tilia/kyc": + parameters: + - $ref: ../parameters.yaml#/userId + get: + operationId: getUserTiliaKyc + summary: Get User Tilia KYC + description: Gets KYC status details for a user's Tilia account. + tags: + - economy + security: + - authCookie: [] + responses: + "200": + $ref: ../responses/economy/TiliaKycResponse.yaml + "401": + $ref: ../responses/MissingCredentialsError.yaml "/user/{userId}/tilia/tos": parameters: - $ref: ../parameters.yaml#/userId diff --git a/openapi/components/requests/CreateListingRequest.yaml b/openapi/components/requests/CreateListingRequest.yaml new file mode 100644 index 00000000..d15868c5 --- /dev/null +++ b/openapi/components/requests/CreateListingRequest.yaml @@ -0,0 +1,32 @@ +title: CreateListingRequest +type: object +description: Observed create-listing payload fields. Additional fields may exist. +properties: + active: + type: boolean + description: + type: string + displayName: + type: string + imageId: + $ref: ../schemas/FileID.yaml + listingType: + $ref: ../schemas/ProductListingType.yaml + priceTokens: + type: integer + productIds: + type: array + items: + $ref: ../schemas/ProductID.yaml + storeIds: + type: array + items: + $ref: ../schemas/StoreID.yaml +required: + - description + - displayName + - imageId + - listingType + - priceTokens + - productIds + - storeIds diff --git a/openapi/components/requests/CreateProductRequest.yaml b/openapi/components/requests/CreateProductRequest.yaml new file mode 100644 index 00000000..9522feb0 --- /dev/null +++ b/openapi/components/requests/CreateProductRequest.yaml @@ -0,0 +1,24 @@ +title: CreateProductRequest +type: object +properties: + description: + type: string + displayName: + type: string + imageId: + $ref: ../schemas/FileID.yaml + productType: + $ref: ../schemas/ProductType.yaml + tags: + type: array + items: + $ref: ../schemas/Tag.yaml + useForSubscriberList: + type: boolean +required: + - description + - displayName + - imageId + - productType + - tags + - useForSubscriberList diff --git a/openapi/components/requests/UpdateListingRequest.yaml b/openapi/components/requests/UpdateListingRequest.yaml new file mode 100644 index 00000000..29aaefc8 --- /dev/null +++ b/openapi/components/requests/UpdateListingRequest.yaml @@ -0,0 +1,7 @@ +title: UpdateListingRequest +type: object +properties: + active: + type: boolean +required: + - active diff --git a/openapi/components/requests/UpdateProductRequest.yaml b/openapi/components/requests/UpdateProductRequest.yaml new file mode 100644 index 00000000..147c78e5 --- /dev/null +++ b/openapi/components/requests/UpdateProductRequest.yaml @@ -0,0 +1,15 @@ +title: UpdateProductRequest +type: object +properties: + description: + type: string + displayName: + type: string + imageId: + $ref: ../schemas/FileID.yaml + tags: + type: array + items: + $ref: ../schemas/Tag.yaml + useForSubscriberList: + type: boolean diff --git a/openapi/components/responses/economy/DeleteProductListingResponse.yaml b/openapi/components/responses/economy/DeleteProductListingResponse.yaml new file mode 100644 index 00000000..147a9804 --- /dev/null +++ b/openapi/components/responses/economy/DeleteProductListingResponse.yaml @@ -0,0 +1,5 @@ +description: Returns an SuccessFlag object. +content: + application/json: + schema: + $ref: ../../schemas/SuccessFlag.yaml diff --git a/openapi/components/responses/economy/DeleteProductResponse.yaml b/openapi/components/responses/economy/DeleteProductResponse.yaml new file mode 100644 index 00000000..147a9804 --- /dev/null +++ b/openapi/components/responses/economy/DeleteProductResponse.yaml @@ -0,0 +1,5 @@ +description: Returns an SuccessFlag object. +content: + application/json: + schema: + $ref: ../../schemas/SuccessFlag.yaml diff --git a/openapi/components/responses/economy/EconomyBalancesResponse.yaml b/openapi/components/responses/economy/EconomyBalancesResponse.yaml new file mode 100644 index 00000000..bc83db20 --- /dev/null +++ b/openapi/components/responses/economy/EconomyBalancesResponse.yaml @@ -0,0 +1,5 @@ +description: Returns an EconomyBalances object. +content: + application/json: + schema: + $ref: ../../schemas/EconomyBalances.yaml diff --git a/openapi/components/responses/economy/EconomyEarningsMetricsResponse.yaml b/openapi/components/responses/economy/EconomyEarningsMetricsResponse.yaml new file mode 100644 index 00000000..fd421cf3 --- /dev/null +++ b/openapi/components/responses/economy/EconomyEarningsMetricsResponse.yaml @@ -0,0 +1,5 @@ +description: Returns an EconomyEarningsMetrics object. +content: + application/json: + schema: + $ref: ../../schemas/EconomyEarningsMetrics.yaml diff --git a/openapi/components/responses/economy/EconomyPayoutListResponse.yaml b/openapi/components/responses/economy/EconomyPayoutListResponse.yaml new file mode 100644 index 00000000..3b4ed88c --- /dev/null +++ b/openapi/components/responses/economy/EconomyPayoutListResponse.yaml @@ -0,0 +1,5 @@ +description: Returns an EconomyPayoutList object. +content: + application/json: + schema: + $ref: ../../schemas/EconomyPayoutList.yaml diff --git a/openapi/components/responses/economy/EconomyPayoutStatusResponse.yaml b/openapi/components/responses/economy/EconomyPayoutStatusResponse.yaml new file mode 100644 index 00000000..7a786214 --- /dev/null +++ b/openapi/components/responses/economy/EconomyPayoutStatusResponse.yaml @@ -0,0 +1,5 @@ +description: Returns an EconomyPayoutStatus object. +content: + application/json: + schema: + $ref: ../../schemas/EconomyPayoutStatus.yaml diff --git a/openapi/components/responses/economy/ProductListResponse.yaml b/openapi/components/responses/economy/ProductListResponse.yaml new file mode 100644 index 00000000..81b2631f --- /dev/null +++ b/openapi/components/responses/economy/ProductListResponse.yaml @@ -0,0 +1,7 @@ +description: Returns a list of Product objects. +content: + application/json: + schema: + type: array + items: + $ref: ../../schemas/Product.yaml diff --git a/openapi/components/responses/economy/ProductResponse.yaml b/openapi/components/responses/economy/ProductResponse.yaml new file mode 100644 index 00000000..9f069dfc --- /dev/null +++ b/openapi/components/responses/economy/ProductResponse.yaml @@ -0,0 +1,5 @@ +description: Returns a single Product object. +content: + application/json: + schema: + $ref: ../../schemas/Product.yaml diff --git a/openapi/components/responses/economy/StoreListResponse.yaml b/openapi/components/responses/economy/StoreListResponse.yaml new file mode 100644 index 00000000..75c8b201 --- /dev/null +++ b/openapi/components/responses/economy/StoreListResponse.yaml @@ -0,0 +1,7 @@ +description: Returns a list of Store objects. +content: + application/json: + schema: + type: array + items: + $ref: ../../schemas/Store.yaml diff --git a/openapi/components/responses/economy/TiliaKycResponse.yaml b/openapi/components/responses/economy/TiliaKycResponse.yaml new file mode 100644 index 00000000..ef182291 --- /dev/null +++ b/openapi/components/responses/economy/TiliaKycResponse.yaml @@ -0,0 +1,5 @@ +description: Returns a TiliaKyc object. +content: + application/json: + schema: + $ref: ../../schemas/TiliaKyc.yaml diff --git a/openapi/components/responses/economy/UserEconomyTransactionsResponse.yaml b/openapi/components/responses/economy/UserEconomyTransactionsResponse.yaml new file mode 100644 index 00000000..73686560 --- /dev/null +++ b/openapi/components/responses/economy/UserEconomyTransactionsResponse.yaml @@ -0,0 +1,5 @@ +description: Returns a UserEconomyTransactions object. +content: + application/json: + schema: + $ref: ../../schemas/UserEconomyTransactions.yaml diff --git a/openapi/components/schemas/EconomyAccount.yaml b/openapi/components/schemas/EconomyAccount.yaml index 9280081e..01b6648d 100644 --- a/openapi/components/schemas/EconomyAccount.yaml +++ b/openapi/components/schemas/EconomyAccount.yaml @@ -9,12 +9,32 @@ properties: accountId: type: string nullable: true + accountSellerRegisteredOn: + type: string + nullable: true + format: date-time + accountSellerStatus: + type: string + nullable: true blocked: type: boolean + canEarn: + type: boolean + canPayout: + type: boolean canSpend: type: boolean + skrillEmail: + type: string + nullable: true source: type: string + tiliaId: + type: string + nullable: true + tiliaType: + type: string + nullable: true userId: $ref: ./UserID.yaml required: diff --git a/openapi/components/schemas/EconomyBalances.yaml b/openapi/components/schemas/EconomyBalances.yaml new file mode 100644 index 00000000..eff1ee99 --- /dev/null +++ b/openapi/components/schemas/EconomyBalances.yaml @@ -0,0 +1,13 @@ +title: EconomyBalances +type: object +properties: + balance: + type: integer + earnings: + type: integer + standard: + type: integer +required: + - balance + - earnings + - standard diff --git a/openapi/components/schemas/EconomyEarningsMetrics.yaml b/openapi/components/schemas/EconomyEarningsMetrics.yaml new file mode 100644 index 00000000..b9b2c3f7 --- /dev/null +++ b/openapi/components/schemas/EconomyEarningsMetrics.yaml @@ -0,0 +1,16 @@ +title: EconomyEarningsMetrics +type: object +properties: + breakdown: + type: array + description: Earnings breakdown grouped by the requested duration. + items: + $ref: ./EconomyEarningsMetricsBucket.yaml + sellerId: + $ref: ./UserID.yaml + totals: + $ref: ./EconomyEarningsMetricsTotals.yaml +required: + - breakdown + - sellerId + - totals diff --git a/openapi/components/schemas/EconomyEarningsMetricsBucket.yaml b/openapi/components/schemas/EconomyEarningsMetricsBucket.yaml new file mode 100644 index 00000000..6a253e95 --- /dev/null +++ b/openapi/components/schemas/EconomyEarningsMetricsBucket.yaml @@ -0,0 +1,29 @@ +title: EconomyEarningsMetricsBucket +type: object +properties: + _id: + type: string + description: Identifier for the grouping bucket. + example: 2026-04-04 + otpEarnings: + type: integer + description: Earnings from one-time purchases in this bucket. + otpPurchaseCount: + type: integer + description: One-time purchase count in this bucket. + subscriberEarnings: + type: integer + description: Earnings from subscriptions in this bucket. + subscriberMonths: + type: integer + description: Number of subscriber months counted in this bucket. + totalEarnings: + type: integer + description: Total earnings in this bucket. +required: + - _id + - otpEarnings + - otpPurchaseCount + - subscriberEarnings + - subscriberMonths + - totalEarnings diff --git a/openapi/components/schemas/EconomyEarningsMetricsTotals.yaml b/openapi/components/schemas/EconomyEarningsMetricsTotals.yaml new file mode 100644 index 00000000..dce74767 --- /dev/null +++ b/openapi/components/schemas/EconomyEarningsMetricsTotals.yaml @@ -0,0 +1,24 @@ +title: EconomyEarningsMetricsTotals +type: object +properties: + otpEarnings: + type: integer + description: Total earnings from one-time purchases. + otpPurchaseCount: + type: integer + description: Total one-time purchase count. + subscriberEarnings: + type: integer + description: Total earnings from subscriptions. + subscriberMonths: + type: integer + description: Total subscriber months counted. + totalEarnings: + type: integer + description: Total earnings across the selected range. +required: + - otpEarnings + - otpPurchaseCount + - subscriberEarnings + - subscriberMonths + - totalEarnings diff --git a/openapi/components/schemas/EconomyPayout.yaml b/openapi/components/schemas/EconomyPayout.yaml new file mode 100644 index 00000000..380eb8e6 --- /dev/null +++ b/openapi/components/schemas/EconomyPayout.yaml @@ -0,0 +1,55 @@ +title: EconomyPayout +type: object +properties: + paymentAmountTokens: + type: integer + paymentAmountUsd: + type: integer + paymentCreated: + type: string + format: date-time + paymentOutId: + type: integer + paymentPlatform: + type: string + paymentPlatformCode: + type: integer + paymentStatus: + type: string + paymentStatusCode: + type: integer + paymentUpdated: + type: string + format: date-time + platformPaymentGuid: + type: string + nullable: true + platformPaymentMethod: + type: string + nullable: true + reversalDate: + type: string + nullable: true + format: date-time + reversalReason: + type: string + nullable: true + reversalReasonCode: + type: integer + nullable: true + reversalTransactionId: + type: integer + nullable: true + transactionId: + type: integer +required: + - paymentAmountTokens + - paymentAmountUsd + - paymentCreated + - paymentOutId + - paymentPlatform + - paymentPlatformCode + - paymentStatus + - paymentStatusCode + - paymentUpdated + - transactionId diff --git a/openapi/components/schemas/EconomyPayoutEligibility.yaml b/openapi/components/schemas/EconomyPayoutEligibility.yaml new file mode 100644 index 00000000..f1839ab9 --- /dev/null +++ b/openapi/components/schemas/EconomyPayoutEligibility.yaml @@ -0,0 +1,19 @@ +title: EconomyPayoutEligibility +type: object +properties: + issue: + type: string + okBalance: + type: boolean + okFrequency: + type: boolean + okNotOngoing: + type: boolean + okStanding: + type: boolean +required: + - issue + - okBalance + - okFrequency + - okNotOngoing + - okStanding diff --git a/openapi/components/schemas/EconomyPayoutList.yaml b/openapi/components/schemas/EconomyPayoutList.yaml new file mode 100644 index 00000000..edf432dd --- /dev/null +++ b/openapi/components/schemas/EconomyPayoutList.yaml @@ -0,0 +1,9 @@ +title: EconomyPayoutList +type: object +properties: + payouts: + type: array + items: + $ref: ./EconomyPayout.yaml +required: + - payouts diff --git a/openapi/components/schemas/EconomyPayoutStatus.yaml b/openapi/components/schemas/EconomyPayoutStatus.yaml new file mode 100644 index 00000000..13a8a3db --- /dev/null +++ b/openapi/components/schemas/EconomyPayoutStatus.yaml @@ -0,0 +1,28 @@ +title: EconomyPayoutStatus +type: object +properties: + accountId: + type: integer + activePayout: + $ref: ./EconomyPayout.yaml + nullable: true + activePayoutCancellable: + type: boolean + activePayoutTiliaAmount: + type: integer + earningsBalance: + type: integer + eligibility: + $ref: ./EconomyPayoutEligibility.yaml + payoutEligible: + type: boolean + tiliaId: + type: string +required: + - accountId + - activePayoutCancellable + - activePayoutTiliaAmount + - earningsBalance + - eligibility + - payoutEligible + - tiliaId diff --git a/openapi/components/schemas/Product.yaml b/openapi/components/schemas/Product.yaml index 68d6b07a..eb9fcd07 100644 --- a/openapi/components/schemas/Product.yaml +++ b/openapi/components/schemas/Product.yaml @@ -25,12 +25,21 @@ properties: imageId: $ref: ./FileID.yaml nullable: true + imageUrl: + type: string + nullable: true parentListings: type: array items: $ref: ./ProductID.yaml productType: $ref: ./ProductType.yaml + productTypeLabel: + type: string + purchaseCount: + type: integer + purchaseCountQuantity: + type: integer sellerDisplayName: type: string sellerId: diff --git a/openapi/components/schemas/ProductListing.yaml b/openapi/components/schemas/ProductListing.yaml index a42c6679..213eecd2 100644 --- a/openapi/components/schemas/ProductListing.yaml +++ b/openapi/components/schemas/ProductListing.yaml @@ -3,8 +3,13 @@ type: object properties: active: type: boolean + archived: + type: boolean buyerRefundable: type: boolean + created: + type: string + format: date-time description: type: string displayName: @@ -60,6 +65,10 @@ properties: items: type: object description: Either a ProductID or a Product, depending on hydration + purchaseCount: + type: integer + purchaseCountQuantity: + type: integer quantifiable: type: boolean recurrable: @@ -84,6 +93,9 @@ properties: type: array items: $ref: ./Tag.yaml + updated: + type: string + format: date-time vrcPlusDiscountPrice: type: integer whenToExpire: diff --git a/openapi/components/schemas/ProductListingType.yaml b/openapi/components/schemas/ProductListingType.yaml index caad8882..2acd5c74 100644 --- a/openapi/components/schemas/ProductListingType.yaml +++ b/openapi/components/schemas/ProductListingType.yaml @@ -2,6 +2,7 @@ title: ProductListingType type: string enum: - duration + - instant - permanent - subscription default: subscription diff --git a/openapi/components/schemas/ProductPurchase.yaml b/openapi/components/schemas/ProductPurchase.yaml index 381d44f0..7d9862e5 100644 --- a/openapi/components/schemas/ProductPurchase.yaml +++ b/openapi/components/schemas/ProductPurchase.yaml @@ -15,8 +15,12 @@ properties: type: boolean isSeller: type: boolean + ledgerTransactionId: + type: integer listingCurrentlyAvailable: type: boolean + listingDescription: + type: string listingDisplayName: type: string listingId: @@ -31,7 +35,7 @@ properties: products: type: array items: - type: object + $ref: ./ProductPurchaseProduct.yaml purchaseActive: type: boolean purchaseContext: @@ -40,6 +44,10 @@ properties: locationType: type: string example: undefined + worldId: + $ref: ./WorldID.yaml + worldName: + type: string purchaseCurrentStatus: type: string purchaseDate: @@ -51,7 +59,10 @@ properties: type: string purchaseEndDate: type: string + nullable: true format: date-time + purchaseFee: + type: integer purchaseId: $ref: ./ProductPurchaseID.yaml purchaseLatest: @@ -62,6 +73,7 @@ properties: type: integer purchaseStartDate: type: string + nullable: true format: date-time purchaseToken: type: object @@ -70,6 +82,8 @@ properties: type: string purchaseUnitPrice: type: integer + purchaseValue: + type: integer receiverDisplayName: type: string receiverId: diff --git a/openapi/components/schemas/ProductPurchaseProduct.yaml b/openapi/components/schemas/ProductPurchaseProduct.yaml new file mode 100644 index 00000000..f0bf8a44 --- /dev/null +++ b/openapi/components/schemas/ProductPurchaseProduct.yaml @@ -0,0 +1,19 @@ +title: ProductPurchaseProduct +type: object +properties: + displayName: + type: string + id: + $ref: ./ProductID.yaml + imageId: + $ref: ./FileID.yaml + nullable: true + licenseId: + type: string + nullable: true + productType: + $ref: ./ProductType.yaml +required: + - displayName + - id + - productType diff --git a/openapi/components/schemas/Store.yaml b/openapi/components/schemas/Store.yaml index 56a3b152..4d63a0da 100644 --- a/openapi/components/schemas/Store.yaml +++ b/openapi/components/schemas/Store.yaml @@ -1,6 +1,9 @@ title: Store type: object properties: + created: + type: string + format: date-time description: type: string displayName: @@ -34,14 +37,21 @@ properties: description: Only for store type house items: $ref: ./StoreShelf.yaml + storeContext: + $ref: ./StoreContext.yaml storeId: $ref: ./StoreID.yaml + storeStatus: + type: string storeType: $ref: ./StoreType.yaml tags: type: array items: $ref: ./Tag.yaml + updated: + type: string + format: date-time worldId: $ref: ./WorldID.yaml description: Only for store type world diff --git a/openapi/components/schemas/StoreContext.yaml b/openapi/components/schemas/StoreContext.yaml new file mode 100644 index 00000000..47d9f011 --- /dev/null +++ b/openapi/components/schemas/StoreContext.yaml @@ -0,0 +1,14 @@ +title: StoreContext +type: object +properties: + id: + type: string + imageUrl: + type: string + nullable: true + name: + type: string +required: + - id + - imageUrl + - name diff --git a/openapi/components/schemas/TiliaKyc.yaml b/openapi/components/schemas/TiliaKyc.yaml new file mode 100644 index 00000000..c00f3c72 --- /dev/null +++ b/openapi/components/schemas/TiliaKyc.yaml @@ -0,0 +1,45 @@ +title: TiliaKyc +type: object +properties: + account_id: + type: string + description: Tilia account identifier. + example: acct_2YYRz9C5xbJWrhI5RLWPnwDLMyq + kyc_id: + type: string + description: KYC verification identifier. + example: kyc_2tDKpjafhPTG729ceA2oIcsQlWA + kyc_requirements: + type: string + description: Requirement state reported by Tilia. + example: NONE + match_checks: + type: array + description: Match checks returned by Tilia. + items: + type: string + pii_level: + type: string + description: PII verification level. + example: FULL + rules: + type: array + description: Additional rules returned by Tilia. + items: + type: string + state: + type: string + description: Overall KYC state. + example: ACCEPT + tilia_retry_rule_code: + type: string + description: Retry rule code returned by Tilia, if any. +required: + - account_id + - kyc_id + - kyc_requirements + - match_checks + - pii_level + - rules + - state + - tilia_retry_rule_code diff --git a/openapi/components/schemas/UserEconomyTransaction.yaml b/openapi/components/schemas/UserEconomyTransaction.yaml new file mode 100644 index 00000000..ee155b3d --- /dev/null +++ b/openapi/components/schemas/UserEconomyTransaction.yaml @@ -0,0 +1,78 @@ +title: UserEconomyTransaction +type: object +properties: + amount: + type: integer + description: Signed amount applied by this transaction line. + example: -103378 + balance: + type: integer + description: Resulting combined balance after this transaction line. + example: 0 + date: + type: string + description: Timestamp of the transaction line. + format: date-time + earningsBalance: + type: integer + description: Resulting earnings balance after this transaction line. + example: 103378 + fromUserDisplayName: + type: string + description: Display name of the other user associated with the transaction, when present. + example: heldogs13 + fromUserId: + $ref: ./UserID.yaml + isEarnings: + type: boolean + description: Whether this transaction line affects the earnings balance. + listingDisplayName: + type: string + description: Display name of the purchased listing, when the transaction is tied to a listing. + example: Fire Collection Circle + listingId: + $ref: ./ProductID.yaml + listingType: + type: string + description: Listing type associated with the transaction. Observed values include `instant` and `permanent`. + example: instant + platform: + type: string + description: Platform associated with the transaction. + example: VRChat + purchaseId: + $ref: ./ProductPurchaseID.yaml + reason: + type: integer + description: Numeric reason code for the transaction line. + example: 1100 + reasonLabel: + type: string + description: Human-readable reason label for the transaction line. + example: Revenue + standardBalance: + type: integer + description: Resulting standard balance after this transaction line. + example: 0 + transactionId: + type: integer + description: Parent transaction identifier. + example: 1728687 + format: int64 + transactionLineId: + type: integer + description: Transaction line identifier. + example: 5302728 + format: int64 +required: + - amount + - balance + - date + - earningsBalance + - isEarnings + - platform + - reason + - reasonLabel + - standardBalance + - transactionId + - transactionLineId diff --git a/openapi/components/schemas/UserEconomyTransactions.yaml b/openapi/components/schemas/UserEconomyTransactions.yaml new file mode 100644 index 00000000..6553a9f5 --- /dev/null +++ b/openapi/components/schemas/UserEconomyTransactions.yaml @@ -0,0 +1,20 @@ +title: UserEconomyTransactions +type: object +properties: + endDate: + type: string + description: Upper bound applied to the returned transaction window. + format: date-time + startDate: + type: string + description: Lower bound applied to the returned transaction window. + format: date-time + transactions: + type: array + description: Transaction lines in reverse chronological order. + items: + $ref: ./UserEconomyTransaction.yaml +required: + - endDate + - startDate + - transactions