Each of the attributes can be used to filter based on the api request. See api filters documentation form more information
The chain model represents every chain supported by the marketplace, it's referenced by resources, deals and offers
export class Chain {
declare chainId: number //Also, the primary key
declare name: string
}export class Resource {
declare id: CreationOptional<number>
declare resourceId: number
declare owner: string
declare encryptedData: string
declare encryptedSharedKey: string
declare chainId: ForeignKey<Chain["chainId"]>
}The base deal structure
export class Deal {
declare id: CreationOptional<number> // To be autoincrement
declare dealId: number
declare resourceId: ForeignKey<Resource["id"]> | null
declare chainId: ForeignKey<Chain["chainId"]>
declare client: ForeignKey<Client["account"]>
declare provider: ForeignKey<Provider["account"]>
declare totalPayment: number
declare blockedBalance: number
declare pricePerSecond: number
declare minDealDuration: number
declare billFullPeriods: boolean
declare singlePeriodOnly: boolean
declare createdAt: number
declare acceptedAt: number
declare billingStart: number
declare active: boolean
declare cancelled: boolean
declare cancelledAt: number
}export class DealMetadata {
declare id: CreationOptional<number> // To be autoincrement
declare dealId: ForeignKey<Deal["id"]>
declare type: string
declare label: string
declare autoSsl: boolean
declare burstSpeed: number
declare apiEndpoint: string
declare customCnames: boolean
}export class Offer {
declare id: CreationOptional<number>
declare offerId: number
declare provider: ForeignKey<Provider["account"]>
declare chainId: ForeignKey<Chain["chainId"]>
declare publicKey: string
declare maximumDeals: number
declare autoAccept: boolean
declare pricePerSecond: number
declare minDealDuration: number
declare billFullPeriods: boolean
declare singlePeriodOnly: boolean
}export class OfferMetadata {
declare id: CreationOptional<number>
declare offerId: ForeignKey<Offer["id"]>
declare type: string
declare label: string
declare autoSsl: boolean
declare burstSpeed: number
declare apiEndpoint: string
}It has either a dealMetadata or an offerMetadata.
export class BandwidthLimit {
declare id: CreationOptional<number> // To be autoincrement
declare dealMetadataId: CreationOptional<ForeignKey<DealMetadata["id"]>> // Null if it's for an offer
declare offerMetadataId: CreationOptional<ForeignKey<OfferMetadata["id"]>> // Null if it's for a deal
declare amount: number
declare period: string
declare unit: string
}Referenced by deals and offers
export class Provider {
declare account: string //Also, the primary key
}Referenced only by deals
export class Client {
declare account: string //Also, the primary key
}