Skip to content

Overview

The CommonGrants.Models namespace contains a standard models that are used by CommonGrants API routes.

Models

Learn more about the standard models defined by the CommonGrants protocol:

Opportunity Models

ModelDescription
OpportunityBaseBase model for a funding opportunity
OppStatusStatus of an opportunity
OppTimelineKey dates in the opportunity’s timeline
OppFundingDetails about the funding available for an opportunity

Usage

The most common use for the CommonGrants.Models namespace is extending the OpportunityBase model with a set of custom fields. The quickstart has a more in depth tutorial, but here’s a quick example of how you can add support for custom fields:

import "@common-grants/core"
// Exposes the `Fields` and `Models` namespaces so that they can be accessed
// without a `CommonGrants` prefix
using CommonGrants;
model Agency extends Fields.CustomField {
name: "Agency";
type: Fields.CustomFieldType.string;
value: string;
description: "The agency managing the funding opportunity.";
}
// Create a custom Opportunity type using the template
model CustomOpportunity extends Models.OpportunityBase {
@example(#{
agency: #{
name: "Agency",
type: Fields.CustomFieldType.string,
value: "Department of Energy",
description: "The agency managing the funding opportunity.",
},
})
customFields: {
agency: Agency;
};
}