Communities are expressed as Rafts in Otterspace. They are essentially ERC721 tokens or NFTs. A Raftβs metadta is expressed via the following hosted schema
{"$schema":"http://json-schema.org/draft-04/schema#","$id":"https://api.otterspace.xyz/schemas/raft/1.0.0.json","type":"object","properties":{"name":{"type":"string","description":"The organization name of the Raft" },"description":{"type":"string","description":"Describes the asset to which this Raft NFT represents" },"image":{"type":"string", "description":"A URI pointing to a resource with mime type image/* representing the asset to which this Raft NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive."
},"properties":{"type":"object","properties":{"parentRaftTokenId":{"type":["integer","null" ],"description":"Identifies the parent organization with a Raft token ID." },"generation":{"type":"integer","description":"Identifies the current generation of the Raft." } },"required":["parentRaftTokenId","generation" ] } },"required":["name","description","image","properties" ]}
Badge Specs
A badge spec entity is essentially the design of the badge. Without a badge spec, badges cannot be issued. A badge spec must belong to a Raft and is stored on-chain. The following is the hosted schema that expressed a badge spec
{"$schema":"http://json-schema.org/draft-04/schema#","$id":"https://api.otterspace.xyz/schemas/badge/1.0.0.json","type":"object","properties":{"name":{"type":"string","description":"Identifies the asset to which this Badge represents" },"description":{"type":"string","description":"Describes the asset to which this Badge represents" },"image":{"type":"string", "description":"A URI pointing to a resource with mime type image/* representing the asset to which this Badge represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive."
},"properties":{"type":"object","properties":{"daoName":{"type":"string" },"raftTokenId":{"type":"string","description":"The token ID of the Raft (a community, DAO, etc) that this Badge is associated with." },"raftContractAddress":{"type":"string","description":"The contract address of the associated Raft token." },"createdByAddress":{"type":"string","description":"A timestamp of when this badge was created." },"expiresAt":{"type":["string","null" ],"description":"A timestamp of when this badge would expire. This would be null if this is non-expiring" } },"required":["daoName","raftTokenId","raftContractAddress","createdByAddress","expiresAt" ] } },"required":["name","description","image","properties" ]}