市场

市场 API 允许用户上架和租赁代理设备。拥有者创建上架信息,承租人签署合约,使用情况按会话跟踪。

浏览上架列表

GET /api/marketplace/listings
参数类型说明
keywordstring搜索关键词
deviceTierstring按设备等级筛选
osTypestring按操作系统类型筛选
sortBystringpopularnewestprice-ascprice-desc
limitnumber最大结果数(默认 20)
offsetnumber分页偏移量
const listings = await client.browseListings({ sortBy: 'newest', limit: 10 })
listings = client.browse_listings(sort_by="newest", limit=10)

获取上架详情

GET /api/marketplace/listings/:listingId
const listing = await client.getListing('listing-id')
listing = client.get_listing("listing-id")

估算租赁费用

GET /api/marketplace/listings/:listingId/estimate?hours=24
const estimate = await client.estimateRentalCost('listing-id', 24)
estimate = client.estimate_rental_cost("listing-id", hours=24)

列出我的上架

GET /api/marketplace/my-listings
const myListings = await client.listMyListings()
my_listings = client.list_my_listings()

创建上架

POST /api/marketplace/listings
字段类型必填说明
titlestring标题
descriptionstring描述
agentIdstring关联的代理
hourlyRatenumber每小时价格
dailyRatenumber每日价格
monthlyRatenumber每月价格
deviceTierstring设备等级
osTypestring操作系统
tagsstring[]用于发现的标签
const listing = await client.createListing({
  title: 'GPU Workstation',
  hourlyRate: 5,
  deviceTier: 'high',
  osType: 'linux',
})
listing = client.create_listing(
    title="GPU Workstation",
    hourlyRate=5,
    deviceTier="high",
    osType="linux",
)

更新上架

PUT /api/marketplace/listings/:listingId

与创建相同的字段,全部可选。

await client.updateListing('listing-id', { hourlyRate: 8 })
client.update_listing("listing-id", hourlyRate=8)

切换上架可见性

PUT /api/marketplace/listings/:listingId/toggle
await client.toggleListing('listing-id', true)
client.toggle_listing("listing-id", is_listed=True)

删除上架

DELETE /api/marketplace/listings/:listingId
await client.deleteListing('listing-id')
client.delete_listing("listing-id")

签署合约

POST /api/marketplace/contracts
字段类型必填说明
listingIdstring要租赁的上架条目
durationHoursnumber持续时间(小时),null = 无期限
agreedToTermsboolean必须为 true
const contract = await client.signContract({
  listingId: 'listing-id',
  durationHours: 48,
  agreedToTerms: true,
})
contract = client.sign_contract(
    listingId="listing-id",
    durationHours=48,
    agreedToTerms=True,
)

列出合约

GET /api/marketplace/contracts
参数类型说明
rolestringtenantowner
statusstring按状态筛选
limitnumber最大结果数
offsetnumber偏移量
const contracts = await client.listContracts({ role: 'tenant' })
contracts = client.list_contracts(role="tenant")

获取合约

GET /api/marketplace/contracts/:contractId
const contract = await client.getContract('contract-id')
contract = client.get_contract("contract-id")

终止合约

POST /api/marketplace/contracts/:contractId/terminate
await client.terminateContract('contract-id', 'No longer needed')
client.terminate_contract("contract-id", reason="No longer needed")

记录使用会话

POST /api/marketplace/contracts/:contractId/usage
字段类型必填说明
startedAtstringISO 8601 开始时间
endedAtstringISO 8601 结束时间
durationMinutesnumber持续分钟数
tokensConsumednumber令牌使用量
await client.recordUsageSession('contract-id', {
  startedAt: '2024-01-01T00:00:00Z',
  durationMinutes: 60,
  tokensConsumed: 1500,
})
client.record_usage_session(
    "contract-id",
    startedAt="2024-01-01T00:00:00Z",
    durationMinutes=60,
    tokensConsumed=1500,
)

举报违规

POST /api/marketplace/contracts/:contractId/violate
字段类型必填说明
violationTypestringowner_self_usetenant_abuseterms_violationother
descriptionstring详细描述
await client.reportViolation('contract-id', {
  violationType: 'terms_violation',
  description: 'Used for unauthorized purpose',
})
client.report_violation(
    "contract-id",
    violationType="terms_violation",
    description="Used for unauthorized purpose",
)