Data Schema
A standard data schema ensures that its easier to use the protocol across several platforms. A few have been shown here.
StandardBounties Schema
Bounty issuance data Schema:
{
payload: {
title: // a string representing the title of the bounty
description: // a string representing the description of the bounty, including all requirements
fulfillmentAmount: // an integer amount that will be paid out to fufillers
categories: // an array of strings, representing the categories of tasks which are being requested
expectedRevisions: // an integer of how many times the spec is expected to be adjusted during fulfillment
difficulty: // a string representing how difficult this bounty is (one of: easy, medium, hard)
privateFulfillments: // boolean desrcibing whether fulfillments are only visible to the issuer
fulfillersNeedApproval: // boolean that forces users to be approved before fulfilling the bounty
// ------- add optional fields here -------
ipfsFilename: // a string representing the name of the file
ipfsHash: // the IPFS hash of the directory which can be used to access the file
webReferenceURL: // the link to a relevant web reference (ie github issue)
},
meta: {
platform: // a string representing the original posting platform (ie 'gitcoin')
schemaVersion: // a string representing the version number (ie '0.1')
schemaName: // a string representing the name of the schema (ie 'standardSchema' or 'gitcoinSchema')
}
}
Bounty fulfillment data Schema:
{
payload: {
description: // A string representing the description of the fulfillment, and any necessary links to works
sourceFileName: // A string representing the name of the file being submitted
sourceFileHash: // A string representing the IPFS hash of the file being submitted
sourceDirectoryHash: // A string representing the IPFS hash of the directory which holds the file being submitted
fulfillers: [
// a list of personas for the individuals whose work is being submitted
]
payoutAmounts: [
// an array of floats which is equal in length to the fulfillers array, representing the % of tokens which should be paid to each of the fulfillers (ie [50, 50] would represent an equal split of a bounty by 2 fulfillers)
]
// ------- add optional fields here -------
},
meta: {
platform: // a string representing the original posting platform (ie 'gitcoin')
schemaVersion: // a string representing the version number (ie '0.1')
schemaName: // a string representing the name of the schema (ie 'standardSchema' or 'gitcoinSchema')
}
}
Other schemas
Our older clients use this flat schema before we transitioned to the above schema.
{
"name": "Round Pre-Release Bug Bounty",
"description": "Help test Rounds's new bounty creation wizard, launching on https://round.new in a few weeks. Submit a claim with as many bugs as you can find, winner take all. More info in the Discord. ",
"url": "https://discord.com/channels/882687582054518794/991406912564379648\n", // A comma separated list of URLs
"requiresApproval": false, // Indicator of whethere an application is needed to apply for this bounty
"externalFunding": true, // True if clients allow an option to add additional funds in the bounty (this is a choice we made, despite being available in the contract)
"deadline": 1672549200, // Datetime
"creatorAddress": "0x1d3A61FD8D2dDD03C8E0089f7159e9DB01F9e2F5",
"tokenSymbol": "ETH",
"tokenAddress": "0x0000000000000000000000000000000000000000",
"tokenAmount": 0.01,
"tokenVersion": 0
}
Last updated on April 3, 2023