-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add schemas and a start working on factory
- Loading branch information
1 parent
dba3d4b
commit 755a04f
Showing
6 changed files
with
1,513 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
START_DIR=$(pwd) | ||
|
||
echo "🖊 Generating schema...!" | ||
for c in ./contracts/* | ||
do | ||
cd "$c" | ||
CMD="cargo run --example schema" | ||
|
||
# discard output | ||
|
||
eval $CMD > /dev/null | ||
|
||
# remove redundant schemas | ||
|
||
rm -rf ./schema/raw | ||
cd "$START_DIR" | ||
done | ||
echo "✅ Schemas generated." |
252 changes: 252 additions & 0 deletions
252
scripts/schema/all_nft_info_response_for__metadata.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,252 @@ | ||
{ | ||
"$schema": "http://json-schema.org/draft-07/schema#", | ||
"title": "AllNftInfoResponse_for_Metadata", | ||
"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_Metadata" | ||
} | ||
] | ||
} | ||
}, | ||
"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 | ||
} | ||
] | ||
}, | ||
"Metadata": { | ||
"description": "OpenSea metadata standard, used by Stargaze marketplace. See [this link](https://docs.opensea.io/docs/metadata-standards) for details.", | ||
"type": "object", | ||
"properties": { | ||
"animation_url": { | ||
"description": "A URL to a multi-media attachment for the item. The file extensions GLTF, GLB, WEBM, MP4, M4V, OGV, and OGG are supported, along with the audio-only extensions MP3, WAV, and OGA.\n\nAnimation_url also supports HTML pages, allowing you to build rich experiences and interactive NFTs using JavaScript canvas, WebGL, and more. Scripts and relative paths within the HTML page are now supported. However, access to browser extensions is not supported.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"attributes": { | ||
"description": "These are the attributes for the item, which will show up on the OpenSea page for the item.", | ||
"type": [ | ||
"array", | ||
"null" | ||
], | ||
"items": { | ||
"$ref": "#/definitions/Trait" | ||
} | ||
}, | ||
"background_color": { | ||
"description": "Background color of the item on OpenSea. Must be a six-character hexadecimal without a pre-pended #.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"description": { | ||
"description": "A human readable description of the item. Markdown is supported.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"external_url": { | ||
"description": "This is the URL that will appear below the asset's image on OpenSea and will allow users to leave OpenSea and view the item on your site.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"image": { | ||
"description": "This is the URL to the image of the item. Can be just about any type of image (including SVGs, which will be cached into PNGs by OpenSea), and can be [IPFS](https://github.com/ipfs/is-ipfs) URLs or paths. We recommend using a 350 x 350 image.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"image_data": { | ||
"description": "Raw SVG image data, if you want to generate images on the fly (not recommended). Only use this if you're not including the `image` parameter.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"name": { | ||
"description": "Name of the item.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"youtube_url": { | ||
"description": "A URL to a YouTube video.", | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
} | ||
}, | ||
"additionalProperties": false | ||
}, | ||
"NftInfoResponse_for_Metadata": { | ||
"type": "object", | ||
"required": [ | ||
"extension" | ||
], | ||
"properties": { | ||
"extension": { | ||
"description": "You can add any custom metadata here when you extend cw721-base", | ||
"allOf": [ | ||
{ | ||
"$ref": "#/definitions/Metadata" | ||
} | ||
] | ||
}, | ||
"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 | ||
}, | ||
"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" | ||
} | ||
] | ||
}, | ||
"Trait": { | ||
"description": "An attribute of the token as defined by the [OpenSea metadata standard](https://docs.opensea.io/docs/metadata-standards#attributes).", | ||
"type": "object", | ||
"required": [ | ||
"trait_type", | ||
"value" | ||
], | ||
"properties": { | ||
"display_type": { | ||
"type": [ | ||
"string", | ||
"null" | ||
] | ||
}, | ||
"trait_type": { | ||
"type": "string" | ||
}, | ||
"value": { | ||
"type": "string" | ||
} | ||
}, | ||
"additionalProperties": false | ||
}, | ||
"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" | ||
} | ||
} | ||
} |
Oops, something went wrong.