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"
]
}