{ "contract_name": "cw721-roles", "contract_version": "2.6.0", "idl_version": "1.0.0", "instantiate": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "minter", "name", "symbol" ], "properties": { "minter": { "description": "The minter is the only one who can create new NFTs. This is designed for a base NFT that is controlled by an external program or contract. You will likely replace this with custom logic in custom NFTs", "type": "string" }, "name": { "description": "Name of the NFT contract", "type": "string" }, "symbol": { "description": "Symbol of the NFT contract", "type": "string" } }, "additionalProperties": false }, "execute": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ExecuteMsg", "description": "This is like Cw721ExecuteMsg but we add a Mint command for an owner to make this stand-alone. You will likely want to remove mint and use other control logic in any contract that inherits this.", "oneOf": [ { "description": "Transfer is a base message to move a token to another account without triggering actions", "type": "object", "required": [ "transfer_nft" ], "properties": { "transfer_nft": { "type": "object", "required": [ "recipient", "token_id" ], "properties": { "recipient": { "type": "string" }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Send is a base message to transfer a token to a contract and trigger an action on the receiving contract.", "type": "object", "required": [ "send_nft" ], "properties": { "send_nft": { "type": "object", "required": [ "contract", "msg", "token_id" ], "properties": { "contract": { "type": "string" }, "msg": { "$ref": "#/definitions/Binary" }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Allows operator to transfer / send the token from the owner's account. If expiration is set, then this allowance has a time/height limit", "type": "object", "required": [ "approve" ], "properties": { "approve": { "type": "object", "required": [ "spender", "token_id" ], "properties": { "expires": { "anyOf": [ { "$ref": "#/definitions/Expiration" }, { "type": "null" } ] }, "spender": { "type": "string" }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Remove previously granted Approval", "type": "object", "required": [ "revoke" ], "properties": { "revoke": { "type": "object", "required": [ "spender", "token_id" ], "properties": { "spender": { "type": "string" }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Allows operator to transfer / send any token from the owner's account. If expiration is set, then this allowance has a time/height limit", "type": "object", "required": [ "approve_all" ], "properties": { "approve_all": { "type": "object", "required": [ "operator" ], "properties": { "expires": { "anyOf": [ { "$ref": "#/definitions/Expiration" }, { "type": "null" } ] }, "operator": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Remove previously granted ApproveAll permission", "type": "object", "required": [ "revoke_all" ], "properties": { "revoke_all": { "type": "object", "required": [ "operator" ], "properties": { "operator": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Mint a new NFT, can only be called by the contract minter", "type": "object", "required": [ "mint" ], "properties": { "mint": { "type": "object", "required": [ "extension", "owner", "token_id" ], "properties": { "extension": { "description": "Any custom extension used by this contract", "allOf": [ { "$ref": "#/definitions/MetadataExt" } ] }, "owner": { "description": "The owner of the newly minter NFT", "type": "string" }, "token_id": { "description": "Unique ID of the NFT", "type": "string" }, "token_uri": { "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Burn an NFT the sender has access to", "type": "object", "required": [ "burn" ], "properties": { "burn": { "type": "object", "required": [ "token_id" ], "properties": { "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Extension msg", "type": "object", "required": [ "extension" ], "properties": { "extension": { "type": "object", "required": [ "msg" ], "properties": { "msg": { "$ref": "#/definitions/ExecuteExt" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Update the contract's ownership. The `action` to be provided can be either to propose transferring ownership to an account, accept a pending ownership transfer, or renounce the ownership permanently.", "type": "object", "required": [ "update_ownership" ], "properties": { "update_ownership": { "$ref": "#/definitions/Action" } }, "additionalProperties": false } ], "definitions": { "Action": { "description": "Actions that can be taken to alter the contract's ownership", "oneOf": [ { "description": "Propose to transfer the contract's ownership to another account, optionally with an expiry time.\n\nCan only be called by the contract's current owner.\n\nAny existing pending ownership transfer is overwritten.", "type": "object", "required": [ "transfer_ownership" ], "properties": { "transfer_ownership": { "type": "object", "required": [ "new_owner" ], "properties": { "expiry": { "anyOf": [ { "$ref": "#/definitions/Expiration" }, { "type": "null" } ] }, "new_owner": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Accept the pending ownership transfer.\n\nCan only be called by the pending owner.", "type": "string", "enum": [ "accept_ownership" ] }, { "description": "Give up the contract's ownership and the possibility of appointing a new owner.\n\nCan only be invoked by the contract's current owner.\n\nAny existing pending ownership transfer is canceled.", "type": "string", "enum": [ "renounce_ownership" ] } ] }, "Binary": { "description": "Binary is a wrapper around Vec to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec. See also .", "type": "string" }, "ExecuteExt": { "oneOf": [ { "description": "Add a new hook to be informed of all membership changes. Must be called by Admin", "type": "object", "required": [ "add_hook" ], "properties": { "add_hook": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Remove a hook. Must be called by Admin", "type": "object", "required": [ "remove_hook" ], "properties": { "remove_hook": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Update the token_uri for a particular NFT. Must be called by minter / admin", "type": "object", "required": [ "update_token_uri" ], "properties": { "update_token_uri": { "type": "object", "required": [ "token_id" ], "properties": { "token_id": { "type": "string" }, "token_uri": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Updates the voting weight of a token. Must be called by minter / admin", "type": "object", "required": [ "update_token_weight" ], "properties": { "update_token_weight": { "type": "object", "required": [ "token_id", "weight" ], "properties": { "token_id": { "type": "string" }, "weight": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Udates the role of a token. Must be called by minter / admin", "type": "object", "required": [ "update_token_role" ], "properties": { "update_token_role": { "type": "object", "required": [ "token_id" ], "properties": { "role": { "type": [ "string", "null" ] }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "MetadataExt": { "type": "object", "required": [ "weight" ], "properties": { "role": { "description": "Optional on-chain role for this member, can be used by other contracts to enforce permissions", "type": [ "string", "null" ] }, "weight": { "description": "The voting weight of this role", "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "query": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "QueryMsg", "oneOf": [ { "description": "Return the owner of the given token, error if token does not exist", "type": "object", "required": [ "owner_of" ], "properties": { "owner_of": { "type": "object", "required": [ "token_id" ], "properties": { "include_expired": { "description": "unset or false will filter out expired approvals, you must set to true to see them", "type": [ "boolean", "null" ] }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Return operator that can access all of the owner's tokens.", "type": "object", "required": [ "approval" ], "properties": { "approval": { "type": "object", "required": [ "spender", "token_id" ], "properties": { "include_expired": { "type": [ "boolean", "null" ] }, "spender": { "type": "string" }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Return approvals that a token has", "type": "object", "required": [ "approvals" ], "properties": { "approvals": { "type": "object", "required": [ "token_id" ], "properties": { "include_expired": { "type": [ "boolean", "null" ] }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Return approval of a given operator for all tokens of an owner, error if not set", "type": "object", "required": [ "operator" ], "properties": { "operator": { "type": "object", "required": [ "operator", "owner" ], "properties": { "include_expired": { "type": [ "boolean", "null" ] }, "operator": { "type": "string" }, "owner": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "List all operators that can access all of the owner's tokens", "type": "object", "required": [ "all_operators" ], "properties": { "all_operators": { "type": "object", "required": [ "owner" ], "properties": { "include_expired": { "description": "unset or false will filter out expired items, you must set to true to see them", "type": [ "boolean", "null" ] }, "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "owner": { "type": "string" }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Total number of tokens issued", "type": "object", "required": [ "num_tokens" ], "properties": { "num_tokens": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "With MetaData Extension. Returns top-level metadata about the contract", "type": "object", "required": [ "contract_info" ], "properties": { "contract_info": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "With MetaData Extension. Returns metadata about one particular token, based on *ERC721 Metadata JSON Schema* but directly from the contract", "type": "object", "required": [ "nft_info" ], "properties": { "nft_info": { "type": "object", "required": [ "token_id" ], "properties": { "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "With MetaData Extension. Returns the result of both `NftInfo` and `OwnerOf` as one query as an optimization for clients", "type": "object", "required": [ "all_nft_info" ], "properties": { "all_nft_info": { "type": "object", "required": [ "token_id" ], "properties": { "include_expired": { "description": "unset or false will filter out expired approvals, you must set to true to see them", "type": [ "boolean", "null" ] }, "token_id": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "With Enumerable extension. Returns all tokens owned by the given address, [] if unset.", "type": "object", "required": [ "tokens" ], "properties": { "tokens": { "type": "object", "required": [ "owner" ], "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "owner": { "type": "string" }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "With Enumerable extension. Requires pagination. Lists all token_ids controlled by the contract.", "type": "object", "required": [ "all_tokens" ], "properties": { "all_tokens": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Return the minter", "type": "object", "required": [ "minter" ], "properties": { "minter": { "type": "object", "additionalProperties": false } }, "additionalProperties": false }, { "description": "Extension query", "type": "object", "required": [ "extension" ], "properties": { "extension": { "type": "object", "required": [ "msg" ], "properties": { "msg": { "$ref": "#/definitions/QueryExt" } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Query the contract's ownership information", "type": "object", "required": [ "ownership" ], "properties": { "ownership": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ], "definitions": { "QueryExt": { "oneOf": [ { "description": "Total weight at a given height", "type": "object", "required": [ "total_weight" ], "properties": { "total_weight": { "type": "object", "properties": { "at_height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns a list of Members", "type": "object", "required": [ "list_members" ], "properties": { "list_members": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns the weight of a certain member", "type": "object", "required": [ "member" ], "properties": { "member": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" }, "at_height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Shows all registered hooks.", "type": "object", "required": [ "hooks" ], "properties": { "hooks": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] } } }, "migrate": null, "sudo": null, "responses": { "all_nft_info": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "AllNftInfoResponse_for_QueryExt", "type": "object", "required": [ "access", "info" ], "properties": { "access": { "description": "Who can transfer the token", "allOf": [ { "$ref": "#/definitions/OwnerOfResponse" } ] }, "info": { "description": "Data on the token itself,", "allOf": [ { "$ref": "#/definitions/NftInfoResponse_for_QueryExt" } ] } }, "additionalProperties": false, "definitions": { "Approval": { "type": "object", "required": [ "expires", "spender" ], "properties": { "expires": { "description": "When the Approval expires (maybe Expiration::never)", "allOf": [ { "$ref": "#/definitions/Expiration" } ] }, "spender": { "description": "Account that can transfer/send the token", "type": "string" } }, "additionalProperties": false }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "NftInfoResponse_for_QueryExt": { "type": "object", "required": [ "extension" ], "properties": { "extension": { "description": "You can add any custom metadata here when you extend cw721-base", "allOf": [ { "$ref": "#/definitions/QueryExt" } ] }, "token_uri": { "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", "type": [ "string", "null" ] } }, "additionalProperties": false }, "OwnerOfResponse": { "type": "object", "required": [ "approvals", "owner" ], "properties": { "approvals": { "description": "If set this address is approved to transfer/send the token as well", "type": "array", "items": { "$ref": "#/definitions/Approval" } }, "owner": { "description": "Owner of the token", "type": "string" } }, "additionalProperties": false }, "QueryExt": { "oneOf": [ { "description": "Total weight at a given height", "type": "object", "required": [ "total_weight" ], "properties": { "total_weight": { "type": "object", "properties": { "at_height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns a list of Members", "type": "object", "required": [ "list_members" ], "properties": { "list_members": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns the weight of a certain member", "type": "object", "required": [ "member" ], "properties": { "member": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" }, "at_height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Shows all registered hooks.", "type": "object", "required": [ "hooks" ], "properties": { "hooks": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "all_operators": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "OperatorsResponse", "type": "object", "required": [ "operators" ], "properties": { "operators": { "type": "array", "items": { "$ref": "#/definitions/Approval" } } }, "additionalProperties": false, "definitions": { "Approval": { "type": "object", "required": [ "expires", "spender" ], "properties": { "expires": { "description": "When the Approval expires (maybe Expiration::never)", "allOf": [ { "$ref": "#/definitions/Expiration" } ] }, "spender": { "description": "Account that can transfer/send the token", "type": "string" } }, "additionalProperties": false }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "all_tokens": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "TokensResponse", "type": "object", "required": [ "tokens" ], "properties": { "tokens": { "description": "Contains all token_ids in lexicographical ordering If there are more than `limit`, use `start_after` in future queries to achieve pagination.", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "approval": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ApprovalResponse", "type": "object", "required": [ "approval" ], "properties": { "approval": { "$ref": "#/definitions/Approval" } }, "additionalProperties": false, "definitions": { "Approval": { "type": "object", "required": [ "expires", "spender" ], "properties": { "expires": { "description": "When the Approval expires (maybe Expiration::never)", "allOf": [ { "$ref": "#/definitions/Expiration" } ] }, "spender": { "description": "Account that can transfer/send the token", "type": "string" } }, "additionalProperties": false }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "approvals": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ApprovalsResponse", "type": "object", "required": [ "approvals" ], "properties": { "approvals": { "type": "array", "items": { "$ref": "#/definitions/Approval" } } }, "additionalProperties": false, "definitions": { "Approval": { "type": "object", "required": [ "expires", "spender" ], "properties": { "expires": { "description": "When the Approval expires (maybe Expiration::never)", "allOf": [ { "$ref": "#/definitions/Expiration" } ] }, "spender": { "description": "Account that can transfer/send the token", "type": "string" } }, "additionalProperties": false }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "contract_info": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "ContractInfoResponse", "type": "object", "required": [ "name", "symbol" ], "properties": { "name": { "type": "string" }, "symbol": { "type": "string" } }, "additionalProperties": false }, "extension": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Null", "type": "null" }, "minter": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "MinterResponse", "description": "Shows who can mint these tokens", "type": "object", "properties": { "minter": { "type": [ "string", "null" ] } }, "additionalProperties": false }, "nft_info": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "NftInfoResponse_for_QueryExt", "type": "object", "required": [ "extension" ], "properties": { "extension": { "description": "You can add any custom metadata here when you extend cw721-base", "allOf": [ { "$ref": "#/definitions/QueryExt" } ] }, "token_uri": { "description": "Universal resource identifier for this NFT Should point to a JSON file that conforms to the ERC721 Metadata JSON Schema", "type": [ "string", "null" ] } }, "additionalProperties": false, "definitions": { "QueryExt": { "oneOf": [ { "description": "Total weight at a given height", "type": "object", "required": [ "total_weight" ], "properties": { "total_weight": { "type": "object", "properties": { "at_height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns a list of Members", "type": "object", "required": [ "list_members" ], "properties": { "list_members": { "type": "object", "properties": { "limit": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "start_after": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Returns the weight of a certain member", "type": "object", "required": [ "member" ], "properties": { "member": { "type": "object", "required": [ "addr" ], "properties": { "addr": { "type": "string" }, "at_height": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false } }, "additionalProperties": false }, { "description": "Shows all registered hooks.", "type": "object", "required": [ "hooks" ], "properties": { "hooks": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] } } }, "num_tokens": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "NumTokensResponse", "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, "operator": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "OperatorResponse", "type": "object", "required": [ "approval" ], "properties": { "approval": { "$ref": "#/definitions/Approval" } }, "additionalProperties": false, "definitions": { "Approval": { "type": "object", "required": [ "expires", "spender" ], "properties": { "expires": { "description": "When the Approval expires (maybe Expiration::never)", "allOf": [ { "$ref": "#/definitions/Expiration" } ] }, "spender": { "description": "Account that can transfer/send the token", "type": "string" } }, "additionalProperties": false }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "owner_of": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "OwnerOfResponse", "type": "object", "required": [ "approvals", "owner" ], "properties": { "approvals": { "description": "If set this address is approved to transfer/send the token as well", "type": "array", "items": { "$ref": "#/definitions/Approval" } }, "owner": { "description": "Owner of the token", "type": "string" } }, "additionalProperties": false, "definitions": { "Approval": { "type": "object", "required": [ "expires", "spender" ], "properties": { "expires": { "description": "When the Approval expires (maybe Expiration::never)", "allOf": [ { "$ref": "#/definitions/Expiration" } ] }, "spender": { "description": "Account that can transfer/send the token", "type": "string" } }, "additionalProperties": false }, "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "ownership": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Ownership_for_String", "description": "The contract's ownership info", "type": "object", "properties": { "owner": { "description": "The contract's current owner. `None` if the ownership has been renounced.", "type": [ "string", "null" ] }, "pending_expiry": { "description": "The deadline for the pending owner to accept the ownership. `None` if there isn't a pending ownership transfer, or if a transfer exists and it doesn't have a deadline.", "anyOf": [ { "$ref": "#/definitions/Expiration" }, { "type": "null" } ] }, "pending_owner": { "description": "The account who has been proposed to take over the ownership. `None` if there isn't a pending ownership transfer.", "type": [ "string", "null" ] } }, "additionalProperties": false, "definitions": { "Expiration": { "description": "Expiration represents a point in time when some event happens. It can compare with a BlockInfo and will return is_expired() == true once the condition is hit (and for every block in the future)", "oneOf": [ { "description": "AtHeight will expire when `env.block.height` >= height", "type": "object", "required": [ "at_height" ], "properties": { "at_height": { "type": "integer", "format": "uint64", "minimum": 0.0 } }, "additionalProperties": false }, { "description": "AtTime will expire when `env.block.time` >= time", "type": "object", "required": [ "at_time" ], "properties": { "at_time": { "$ref": "#/definitions/Timestamp" } }, "additionalProperties": false }, { "description": "Never will never expire. Used to express the empty variant", "type": "object", "required": [ "never" ], "properties": { "never": { "type": "object", "additionalProperties": false } }, "additionalProperties": false } ] }, "Timestamp": { "description": "A point in time in nanosecond precision.\n\nThis type can represent times from 1970-01-01T00:00:00Z to 2554-07-21T23:34:33Z.\n\n## Examples\n\n``` # use cosmwasm_std::Timestamp; let ts = Timestamp::from_nanos(1_000_000_202); assert_eq!(ts.nanos(), 1_000_000_202); assert_eq!(ts.seconds(), 1); assert_eq!(ts.subsec_nanos(), 202);\n\nlet ts = ts.plus_seconds(2); assert_eq!(ts.nanos(), 3_000_000_202); assert_eq!(ts.seconds(), 3); assert_eq!(ts.subsec_nanos(), 202); ```", "allOf": [ { "$ref": "#/definitions/Uint64" } ] }, "Uint64": { "description": "A thin wrapper around u64 that is using strings for JSON encoding/decoding, such that the full u64 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u64` to get the value out:\n\n``` # use cosmwasm_std::Uint64; let a = Uint64::from(42u64); assert_eq!(a.u64(), 42);\n\nlet b = Uint64::from(70u32); assert_eq!(b.u64(), 70); ```", "type": "string" } } }, "tokens": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "TokensResponse", "type": "object", "required": [ "tokens" ], "properties": { "tokens": { "description": "Contains all token_ids in lexicographical ordering If there are more than `limit`, use `start_after` in future queries to achieve pagination.", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } } }