Part III (B): Submission via JSON
Introduction
A JSON endpoint of grant data is one method available to sync your agency or department’s grant information with this portal. This method is ideal for departments with IT staff comfortable supporting JSON file development that aren’t using WordPress. Using this method, you’ll create a public JSON endpoint that contains your grant data following the specification defined below. Once this endpoint is available and contains at least one grant, an approved grant contributor can register your endpoint on the Grants Portal.
Once an endpoint has been registered, the portal will periodically (once per 24 hours) perform a /GET request to your endpoint to check for changes or additions to your grant data. If new grants, or updates to existing grants, are identified, the portal will update the information on the portal to reflect those.
JSON Specification
Your endpoint must return valid JSON and be publicly accessible from the internet. The response must contain an array of one or more grants objects.
EXAMPLE JSON RESPONSE
GRANT RESPONSE
[
{
"grantTitle": "Example Grant",
"uniqueID": 29,
"awardStats": [
{
"fiscalYear": "2022-2023",
"applicationsSubmitted": 1,
"grantsAwarded": 1,
},
{
"fiscalYear": "2021-2022",
"applicationsSubmitted": 1,
"grantsAwarded": 1,
},
{
"fiscalYear": "2020-2021",
"applicationsSubmitted": 1,
"grantsAwarded": 1,
}
],
"grantID": "example-grant",
"isForecasted": "active",
"opportunityType": [ "grant" ],
"loiRequired": true,
"grantCategories": [
"agriculture",
"disadvantaged-communities",
"disaster-prevention-relief"
],
"categorySuggestions": "",
"purpose": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr...",
"description": "Stet clita kasd gubergren, no sea takimata sanctus...",
"applicantType": {
"type": [
"business",
"individual"
],
"notes": "Sed diam nonumy eirmod tempor invidunt ut labore et dolore..."
},
"geoLimitations": "No geographic limitations.",
"fundingSource": {
"type": "federal",
"notes": "This is a federally funded grant."
},
"matchingFunds": {
"required": false,
"percent": 0,
"notes": ""
},
"totalEstimatedFunding": "exactFundingAmount",
"estimatedAvailableFunds": "10000",
"estimatedAvailableFundNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr...",
"estimatedAwards": {
"exact": 1
},
"estimatedAmounts": {
"same": 10000
},
"fundingMethod": {
"type": "advances-and-reimbursements",
"notes": ""
},
"openDate": "2020-07-04T00:00",
"anticipatedOpenDate": "",
"periodOfPerformance": "12 days",
"expectedAwardDate": "November, 2020",
"deadline": "2021-07-04T23:59",
"electronicSubmission": {
"type": "url",
"url": "https://grantsportal.test.com/"
},
"details": "https://grantsportal.test.com/",
"agencyURL": "https://grantsportal.test.com/",
"subscribe": "https://grantsportal.test.com/",
"events": "https://grantsportal.test.com/",
"contactInfo": {
"name": "John Doe",
"email": "noreply@castlg-stage.10upmanaged.com",
"tel": "1-555-555-5555"
},
"internalContactInfo": [
{
"name": "Jane Doe",
"email": "noreply@grantsportal.test.com",
"tel": "1-555-555-5555",
"primary": true
},
{
"name": "Jack Doe",
"email": "noreply@grantsportal.test.com",
"tel": "1-555-555-5555"
}
],
"_links": {
"award": [
{
"href": "https://grantsportal.test.com/json-endpoint/grant-awards-29.json"
}
]
}
}
]
GRANT Award RESPONSE
[
{
"uniqueID": 76,
"grantID": 29,
"fiscalYear": "2022-2023",
"projectTitle": "Grant Award Title",
"recipientType": "business",
"primaryRecipientName": "Award Recipient Name",
"primaryRecipientFirstName": "Example",
"primaryRecipientLastName": "Grant Award",
"secondaryRecipients": "no",
"totalAwardAmount": 1000000,
"totalAwardUsed": 10000,
"matchingFundingAmount": 1000,
"awardAmountNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr...",
"grantFundedStartDate": "2022-06-03T14:06",
"grantFundedEndDate": "2022-08-03T14:08",
"projectAbstract": "Lorem ipsum dolor sit amet, consetetur sadipscing...",
"geoLocationServed": "county",
"countiesServed": [
"amador"
],
"geoServedNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing...",
"awardCancellingNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing..."
}
]
GRANT SCHEMA
grantTitle
Description | The title of the grant opportunity. This should be identical to the name for the grant opportunity on your own website, RFP/A, etc. If this is an annually posted grant, add the year to the end of the title to ensure the title is unique. |
Type | String |
Required? | Yes. |
Example:
{
...
"grantTitle": "My Grant Title",
...
}
uniqueID
Description | A unique ID for your grant. Is not used by the portal, but included in the specification so you may identify your grants within an internal system. If you do not have a unique ID that your department uses, please create one. |
Type | String |
Required? | Yes |
Example:
{
...
"uniqueID": "grant-101",
...
}
awardStats
Description | An object representing grant award stats information. Refer to the object details and example below for more information. |
Type |
|
Required? | Yes, once the award statistics and awardee information is finalized to publish. |
awardStats
Object:
Field | Type | Required? | Description | Valid Values |
fiscalYear | string | No | The fiscal year to save the number of applications and grants awarded for. | “2021-2022”, “2022-2023”, “2023-2024” |
applicationsSubmitted | Integer | No | The total applications received for this funding opportunity. | – |
grantsAwarded | Integer | No | Enter the number of individual grants awarded for this grant opportunity. Please update if changes are made in the grant agreement. | – |
Example:
{
...
"awardStats": [
{
"fiscalYear": "2022-2023",
"applicationsSubmitted": 1,
"grantsAwarded": 1,
},
{
"fiscalYear": "2021-2022",
"applicationsSubmitted": 1,
"grantsAwarded": 1,
},
{
"fiscalYear": "2020-2021",
"applicationsSubmitted": 1,
"grantsAwarded": 1,
}
],
...
}
isForecasted
Description | Whether the grant is active, or forecasted. Forecasted grants require less information to be included. |
Type | String |
Required? | Yes |
Valid values | active, forecasted |
Example:
{
...
"isForecasted": "active",
...
}
opportunityType
Description | The types of opportunity. |
Type | Array[<String>] |
Required? | Yes |
Valid values | grant, loan |
Example:
{
...
"opportunityType": [ "grant", "loan" ],
...
}
loiRequired
Description | Whether a letter of intent is required to be submitted with this grant. |
Type | Boolean |
Required? | Active grants only |
Example:
{
...
"loiRequired": true,
...
}
grantCategories
Description | An array of categories to associate with this grant. See Valid Items below for a list of the category IDs you can use. |
Type | Array[<String>] |
Required? | Active grants only |
Valid values | agriculture, animal-services, consumer-protection, disadvantaged-communities, disaster-prevention-relief, education, employment-labor-training, energy, environment-water, food-nutrition, health-human-services, housing-community-economic-development, law-justice-legal-services, libraries-arts, parks-recreation, science-technology-research-development, transportation, veterans-military |
Additional Notes | If you’d like to make a suggestion that an additional category be supported, see categorySuggestions below. |
Example:
{
...
"grantCategories": [
"agriculture",
"energy"
],
...
}
categorySuggestions
Description | If the supported categories do not sufficiently describe the opportunity, you may suggest an additional category be considered for support. If you have more than one suggestion, please separate them with commas. |
Type | String |
Required? | No |
Example:
{
...
"categorySuggestions": "Astronomy, Ornithology",
...
}
purpose
Description | The purpose of the grant. |
Type | String (maximum 450 characters) |
Required? | Active grants only |
Example:
{
...
"purpose": "Lorem ipsum dolor sit amet.",
...
}
description
Description | A description of the grant. |
Type | String (maximum 3200 characters) |
Required? | Yes |
Example:
{
...
"description": "Lorem ipsum dolor sit amet.",
...
}
applicantType
Description | An object representing the type of applicant for this grant. Refer to the object details and example below for more information. |
Type | Object |
Required? | Active grants only |
applicantType
Object:
Field | Type | Required? | Description | Valid Values |
type | Array[<String>] | Yes | The allowed applicant types. | business, individual, nonprofit, other legal entity, public-agency, tribal-government |
notes | string (max 450 characters) | No | Notes about the allowed applicant types. | – |
Example:
{
...
"applicantType": {
"type": [
"business",
"individual"
],
"notes": "Lorem ipsum dolor sit amet."
},
...
}
geoLimitations
Description | Notes on any geographic limitations for the grant. |
Type | String (max 450 characters) |
Required? | No |
Example:
{
...
"geoLimitations": "Only businesses headquartered in California may apply.",
...
}
fundingSource
Description | An object representing the funding source of a grant. Refer to the object details and example below for more information. Note: If you selected “Other”, please outline the funding source details in the notes section below. |
Type | Object |
Required? | Active grants only |
fundingSource Object
Field | Type | Required? | Description | Valid Values |
type |
| Yes | The revenue source. See valid values for allowed revenue types. | federal, state, federal and state, other |
notes |
| Only if “other” is selected. | Notes about the revenue type. This is required field if “other” is selected. | – |
Example:
{
...
"fundingSource": {
"type": "federal",
"notes": "Lorem ipsum dolor sit amet."
},
...
}
matchingFunds
Description | An object to describe if matching funds are required, at what percent, and any additional information. Refer to the object details and example below for more information. |
Type | Object |
Required? | Active grants only |
matchingFunds Object
Field | Type | Required? | Description |
required |
| Yes | Whether matching strings are required. |
percent |
| Only if required is true . | The percent of the funds that are required to be matched. |
notes | String (max 450 characters) | No | Additional notes to help applicants understand the matching funds requirement. |
Example:
{
...
"matchingFunds": {
"required": true,
"percent": 50,
"notes": "Requires match of 50% of grant awarded."
},
...
}
totalEstimatedFunding
Description | Total Estimated Available Funding for the grant. If you have an estimated dollar amount, please select “exactFundingAmount” as your valid value and enter in the dollar amount in the field below “estimatedAvailableFunds.” Otherwise, please select “fundingAmountNotes” and enter the notes in the field below “estimatedAvailableFundNotes.” |
Type | String |
Required? | Active grants only |
Valid values | exactFundingAmount, fundingAmountNotes |
Example:
{
...
"totalEstimatedFunding": "exactFundingAmount",
...
}
estimatedAvailableFunds
Description | The estimated dollar amount of the available funds, rounded to the dollar. |
Type | Integer |
Required? | Active grants only |
Example:
{
...
"estimatedAvailableFunds": 10000,
...
}
estimatedAvailableFundNotes
Description | Available funding notes for the grant when exact funding amount is not available for grant. |
Type | String (max 450 characters) |
Required? | Required when “totalEstimatedFunding” value is “fundingAmountNotes” |
Example:
{
...
"estimatedAvailableFundNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr...",
...
}
estimatedAwards
Description | An object describing how the grant will be awarded. |
Type | Object |
Required? | Active grants only |
Valid Values: Required one of following value.
Value | Type | Description |
“exact” | Integer | Exact value of estimated awards. |
“between” | Array[<Integer>] | Range of estimated awards with range values in number, |
“dependent” | String | Dependent on number of awards, |
Example:
“between”:
{
...
"estimatedAwards": {
"between":[ 0, 100 ]
},
...
}
“exact”:
{
...
"estimatedAwards": {
"exact": 100
},
...
}
“dependent”:
{
...
"estimatedAwards": {
"dependent": "Dependant on number of awards."
},
...
}
estimatedAmounts
Description | An object describing the fund amounts the grant will be awarding. |
Type | Object |
Required? | Active grants only |
Valid Values: Required one of following value.
Value | Type | Description |
“same” | Integer | Use this type if the grant beneficiaries will receive the same or equal amount. The value should be the amount that is awarded. |
“range” | Array[<Integer>] | Use this type if the awarded amounts will fall within a range, where the first value is the minimum amount and the second value is the maximum. |
“dependent” | String | Use this type if the amount of the funds awarded is dependent on the number of applications submissions were received, application process, or some other factor. |
Example:
“same”:
{
...
"estimatedAmounts": {
"same": 10000
},
...
}
“range”:
{
...
"estimatedAwards": {
"range": [ 5000, 1000 ]
},
...
}
“dependent”:
{
...
"estimatedAwards": {
"dependent": "Depends on the number of applications received"
},
...
}
fundingMethod
Description | An object describing how the awarded funds will be disbursed. Note: If you selected “Other”, please outline the funding method details in the notes section below. |
Type | Object |
Required? | Active grants only |
fundingMethod Object
Field | Type | Required? | Description | Valid Values |
type |
| Yes | The funding type. See valid values for allowed revenue types. | advances, advances-and-reimbursements, reimbursements, other |
notes |
| Only if “other” is selected. | Notes about the funding method | – |
Example:
{
...
"fundingMethod": {
"type": "advances-and-reimbursements",
"notes": ""
},
...
}
openDate
Description | The date and time, in ISO-8601 format, that the grant will open. |
Type | String |
Required? | Yes |
Example:
{
...
"openDate": "2020-07-04T00:00",
...
}
anticipatedOpenDate
Description | Anticipated Open Date for the Forecasted Grant. You can use things like “Q1” or “Summer 2020”. |
Type | String |
Required? | Forecasted grants only. |
Example:
{
...
"anticipatedOpenDate": "Summer 2020",
...
}
periodOfPerformance
Description | The period of performance. |
Type | String (maximum 20 characters) |
Required? | Active grants only |
Example:
{
...
"periodOfPerformance": "12 weeks.",
...
}
expectedAwardDate
Description | The expected date the grant will be awarded. This is an open text field to accept non-exact times like, “3rd Quarter 2021”. |
Type | String (maximum 20 characters) |
Required? | Active grants only |
Example:
{
...
"expectedAwardDate": "Q3 2021",
...
}
deadline
Description | The application deadline date and time, in ISO-8601 format. When grants close at midnight, the grant details page will display 00:00, which can be confusing for users. If possible, use “23:59” (11:59pm) for clarity. |
Type | String |
Required? | No |
Example:
{
...
"deadline": "2021-07-04T23:59",
...
}
electronicSubmission
Description | Object containing one of, or both, “email” and “url” keys. Describes the electronic method where an applicant can submit an application. Refer to the example below for proper schema. |
Type | Object |
Required? | Active grants only |
electronicSubmission Object
Field | Type | Required? | Description | Valid Values |
type |
| Yes | Application submitted electronic method type. | none, url, email |
url |
| Only when type value is “url” | Url to electronically submit application. | – |
| Only when type value is “email” | Email Id to electronically submit application. | – |
Example:
{
...
"electronicSubmission": {
"type": "none"
},
...
}
{
...
"electronicSubmission": {
"type": "url",
"url": "https://www.grants.ca.gov"
},
...
}
{
...
"electronicSubmission": {
"type": "email",
"email": "noreply@grantsportal.test.com"
},
...
}
details
Description | A URL where more details about the grant can be found. |
Type | String |
Required? | Active grants only |
Example:
{
...
"details": "https://www.grants.ca.gov/",
...
}
agencyURL
Description | A URL where more details about the grant maker can be found. |
Type | String |
Required? | Active grants only |
Example:
{
...
"agencyURL": "https://www.grants.ca.gov/",
...
}
subscribe
Description | A URL where more updates about the grant can be found. |
Type | String |
Required? | No |
Example:
{
...
"subscribe": "https://www.grants.ca.gov/",
...
}
events
Description | A URL where information about planned events surrounding the grant can be found. |
Type | String |
Required? | No |
Example:
{
...
"events": "https://www.grants.ca.gov/",
...
}
contactInfo
Description | An object to describe the public contact information where applicants can direct questions about the grant. |
Type | Object |
Required? | Active grants only |
contactInfo Object
Field | Type | Required? | Description |
name |
| No | Name of the individual that can be contacted regarding the grant opportunity |
| Yes | The email address for the contact. | |
tel |
| Yes | The telephone number of the contact. |
Example:
{
...
"contactInfo": {
"name": "John Doe",
"email": "noreply@castlg-stage.10upmanaged.com",
"tel": "1-555-555-5555"
},
...
}
internalContactInfo
Description | An array of objects to describe the internal contact information where other agencies or departments can direct questions. |
Type | Array[<object>] |
Required? | Active grants only |
internalContactInfo Object
Field | Type | Required? | Description |
name |
| Yes | Name of the individual that can be contacted regarding the grant opportunity |
| Yes | The email address for the contact. | |
tel |
| Yes | The telephone number of the contact. |
primary | Boolean | No | Whether this contact is the primary contact. If this value is not present, the first listed contact will be deemed the primary. |
Example:
{
...
"internalContactInfo": [
{
"name": "John Doe",
"email": "noreply@grants.ca.gov",
"tel": "1-555-555-5555",
"primary": true
},
{
"name": "Jane Doe",
"email": "noreply@grants.ca.gov",
"tel": "1-555-555-5555"
},
],
...
}
_links
Description | All associated links for the grant, used for adding link for grant award json endpoint link for associated grant. Note: awardStats field is required if using this field. |
Type | Object |
Required? | No |
Valid Value | Grant award json endpoint url in “href” value. Please refer to the example below on where and how url should be added in “_links” |
Example:
{
...
"_links": {
"award": [
{
"href": "https://grantsportal.test.com/json-endpoint/grant-awards-29.json"
}
]
},
...
}
GRANT Award SCHEMA
uniqueID
Description | A unique ID is typically numbers, letters or a combination of letters or numbers that the state department uses to identify the grant award. If your department does not use a Unique ID for grant award, please create one. |
Type | String |
Required? | Yes |
Example:
{
...
"uniqueID": "76",
...
}
grantID
Description | This will be the same value as “uniqueID” entered at the initial entry of the associated grant opportunity from the endpoint. This ID will be used to connect grant awards to the specific grant. |
Type | String |
Required? | Yes |
Example:
{
...
"grantID": "29",
...
}
fiscalYear
Description | Fiscal year for the grant award. This value should match from awardStats data of associated Grant. |
Type | String |
Required? | Yes |
Example:
{
...
"fiscalYear": "2022-2023",
...
}
projectTitle
Description | Project title for the award. The project title must match the title provided in the application. |
Type | String (maximum 300 characters) |
Required? | No |
Example:
{
...
"projectTitle": "Grant Award Title",
...
}
recipientType
Description | Indicate the recipient type, or the recipient type of the primary awardee if multiple awardees. |
Type | String |
Required? | Yes |
Valid Values | business, individual, nonprofit, other-legal-entity, public-agency, tribal-government |
Example:
{
...
"recipientType": "business",
...
}
primaryRecipientName
Description | Provide the award recipient’s name (legal name of the principal investigator, project lead, or institution name), or the name of the primary awardee if multiple recipients. Please update this if changes are made in the grant agreement. |
Type | String (maximum 200 characters) |
Required? | Only if recipientType value is other than “individual”. |
Example:
{
...
"primaryRecipientName": "Award Recipient Name",
...
}
primaryRecipientFirstName
Description | Provide the award recipient’s first name, or the first name of the primary awardee if multiple recipients. Please update if changes are made in the grant agreement. |
Type | String (maximum 100 characters) |
Required? | Only if recipientType value is “individual”. |
Example:
{
...
"primaryRecipientFirstName": "Example",
...
}
primaryRecipientLastName
Description | Provide the award recipient’s last name, or the last name of the primary awardee if multiple recipients. Please update if changes are made in the grant agreement. |
Type | String (maximum 200 characters) |
Required? | Only if recipientType value is “individual”. |
Example:
{
...
"primaryRecipientLastName": "Grant Award",
...
}
secondaryRecipients
Description | Indicate if additional recipients (e.g. sub, secondary, or co-recipients/grantees) were listed in the application. |
Type | String |
Required? | Yes |
Valid values | yes, no |
Example:
{
...
"secondaryRecipients": "no",
...
}
totalAwardAmount
Description | Enter the dollar amount awarded to the recipient, as listed on the grant agreement – think of this as the “grant cost” rather than the “project cost”. Note: Please update if the award amount gets augmented in the grant agreement (however, updates are not required if award amount changes are not reflected in an updated agreement). |
Type | String |
Required? | Yes |
Example:
{
...
"totalAwardAmount": 1000000,
...
}
totalAwardUsed
Description | Total dollar amount used by the recipient through this grant or loan. Enter the dollar amount recipient used before cancelling the project. If no dollar amount used, enter “0”. |
Type | String |
Required? | Yes if the award is cancelled |
Example:
{
...
"totalAwardUsed": 10000,
...
}
matchingFundingAmount
Description | If partial or full matching is requested or required by the agreement or voluntarily contributed by the awardee, enter the matched funding dollar amount. If no matched funding is contributed enter “0”. Update if changes are made in the grant agreement. |
Type | String |
Required? | Yes |
Example:
{
...
"matchingFundingAmount": 1000,
...
}
awardAmountNotes
Description | Provide any additional details, including: exceptions, amount or source (state, federal, in-kind, etc.) limitations, and matching funding percentage, if applicable. |
Type | String (maximum 300 characters) |
Required? | Yes |
Example:
{
...
"awardAmountNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr...",
...
}
grantFundedStartDate
Description | Beginning Date of Grant-Funded Project, in ISO-8601 format. |
Type | String |
Required? | Yes |
Example:
{
...
"grantFundedStartDate": "2022-06-03T14:06",
...
}
grantFundedEndDate
Description | End Date of Grant-Funded Project, in ISO-8601 format. |
Type | String |
Required? | Yes |
Example:
{
...
"grantFundedEndDate": "2022-08-03T14:08",
...
}
projectAbstract
Description | Provide a brief outline of the project purpose, priorities, scope of this opportunity, and grant beneficiaries. Beneficiaries include any communities, persons, or entities that benefit from this funding. Please update if changes are made in the grant agreement. |
Type | String (maximum 600 characters) |
Required? | Yes |
Example:
{
...
"projectAbstract": "Lorem ipsum dolor sit amet, consetetur sadipscing...",
...
}
geoLocationServed
Description | The geographic region of the state served by the grant, including the designated local jurisdiction. Select the geographic location the grant serves. This should be the area served by the funds. Update if changes are made in the grant agreement. |
Type | String |
Required? | Yes |
Valid values | county, statewide, out-of-state |
Example:
{
...
"geoLocationServed": "county",
...
}
countiesServed
Description | Counties Served, If “County” is selected in the Geographic Location Served field, add all relevant California counties. |
Type |
|
Required? | Yes |
Valid Values | alameda, alpine, amador, butte, calaveras, colusa, contra-costa, del-norte, el-dorado, fresno, glenn, humboldt, imperial, inyo, kern, kings, lake, lassen, los-angeles, madera, marin, mariposa, mendocino, merced, modoc, mono, monterey, napa, nevada, orange, placer, plumas, riverside, sacramento, san-benito, san-bernardino, san-diego, san-francisco, san-joaquin, san-luis-obispo, san-mateo, santa-barbara, santa-clara, santa-cruz, shasta, sierra, siskiyou, solano, sonoma, stanislaus, sutter, tehama, trinity, tulare, tuolumne, ventura, yolo, yuba |
Example:
{
...
"countiesServed": [
"amador"
],
...
}
geoServedNotes
Description | Additional details about the geographic location served. Provide details about geographic locations served by this grant opportunity, with emphasis on priority communities, underserved areas, or communities impacted by and benefiting from the funding. |
Type | String (maximum 300 characters) |
Required? | Yes |
Example:
{
...
"geoServedNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing..."
...
}
awardCancellingNotes
Description | Provide a brief summary on why this grant award is cancelled. Note: this field is publicly available for grantees. |
Type | String (maximum 300 characters) |
Required? | Yes if the award is cancelled |
Example:
{
...
"awardCancellingNotes": "Lorem ipsum dolor sit amet, consetetur sadipscing..."
...
}
Last Updated: 11/12/2024