$Product: {
additionalProperties: false;
properties: {
contractAddress: {
$ref: "#/components/schemas/ContractAddress";
description: "Address of the smart-contract to call";
};
currency: {
$ref: "#/components/schemas/Currency";
};
failUrl: {
description: "URL to redirect the user after a failed purchase";
example: "https://example.com/fail";
format: "uri";
nullable: true;
type: "string";
};
functionInputsAbi: {
$ref: "#/components/schemas/FunctionInputsAbi";
description: "ABI of the contract function to call";
};
functionSelector: {
$ref: "#/components/schemas/FunctionSelector";
description: "Function selector of the contract function to call";
};
id: {
format: "int64";
readOnly: true;
type: "integer";
};
logoImgUrl: {
description: "URL of the logo image";
example: "https://example.com/logo.png";
format: "uri";
nullable: true;
type: "string";
};
name: {
description: "Product name";
example: "Golden NFT";
type: "string";
};
parametersStaticValues: {
$ref: "#/components/schemas/ParametersStaticValues";
};
price: {
$ref: "#/components/schemas/Price";
};
productImgUrl: {
description: "URL of the product image";
example: "https://example.com/image.png";
format: "uri";
nullable: true;
type: "string";
};
recipientParamName: {
description: "Name of the contract's function parameter to input the user wallet address to receive the NFT";
example: "to";
nullable: true;
type: "string";
};
salesWallet: {
description: "Wallet (ideally a Safe) collecting sales for crypto purchases";
example: "0x3D9819210A31b4961b30EF54bE2aeD79B9c9Cd3B";
nullable: true;
pattern: "^0x[a-fA-F0-9]{40}$";
type: "string";
};
status: {
description: "Status of the product";
enum: readonly ["active", "inactive"];
type: "string";
};
successUrl: {
description: "URL to redirect the user after a successful purchase";
example: "https://example.com/success";
format: "uri";
nullable: true;
type: "string";
};
webhookEndpoint: {
description: "URL of the endpoint which should be notified for webhook events";
example: "https://example.com/my-webhook";
format: "uri";
nullable: true;
type: "string";
};
};
required: readonly ["name", "contractAddress", "functionSelector", "functionInputsAbi", "price", "currency", "recipientParamName", "salesWallet", "status"];
type: "object";
} = ...