@common-grants/cli
Version:
The CommonGrants protocol CLI tool
1,408 lines (1,404 loc) • 91.2 kB
YAML
openapi: 3.0.0
info:
title: CommonGrants Base API
description: |-
The base OpenAPI specification for a CommonGrants API
In order for an API to be "compliant" with the CommonGrants protocol,
it must implement all of the routes with the "required" tag in this specification.
version: 0.3.0
tags:
- name: Opportunities
description: Endpoints related to funding opportunities
- name: Competitions
description: Endpoints related to competitions, which are distinct application processes for the same funding opportunity
- name: Applications
description: Endpoints related to submitting applications for a given competition
- name: Application Reviews
description: Endpoints related to reviewing applications for a given competition
- name: Forms
description: Endpoints related to forms
- name: required
description: Endpoints that MUST be implemented by all CommonGrants APIs
- name: optional
description: Endpoints that MAY be implemented by CommonGrants APIs
- name: experimental
description: Endpoints that MAY be implemented by CommonGrants APIs, but are not guaranteed to be stable
paths:
/common-grants/applications/search:
post:
operationId: Applications_searchApplications
summary: Search applications
description: 'Search for applications. Note: The search results for a given query will depend on the scopes attached to the API token used to make the request.'
parameters:
- name: filters
in: query
required: true
description: The filters to apply to the search
schema:
$ref: '#/components/schemas/CommonGrants.Models.AppFilters'
explode: false
- name: sorting
in: query
required: true
description: The sorting to apply to the search
schema:
$ref: '#/components/schemas/CommonGrants.Models.AppSorting'
explode: false
responses:
'200':
description: A paginated list of items with a filter
content:
application/json:
schema:
type: object
required:
- items
- paginationInfo
- status
- message
- sortInfo
- filterInfo
properties:
items:
type: array
items:
$ref: '#/components/schemas/CommonGrants.Models.ApplicationBase'
description: Items from the current page
paginationInfo:
allOf:
- $ref: '#/components/schemas/CommonGrants.Pagination.PaginatedResultsInfo'
description: Details about the paginated results
status:
type: integer
format: int32
example: 200
message:
type: string
example: Success
sortInfo:
allOf:
- $ref: '#/components/schemas/CommonGrants.Sorting.SortedResultsInfo'
description: The sort order of the items
filterInfo:
type: object
properties:
filters:
$ref: '#/components/schemas/CommonGrants.Models.AppFilters'
errors:
type: array
items:
type: string
description: Non-fatal errors that occurred during filtering
required:
- filters
description: The filters applied to the response items
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A paginated list of items with a filter
tags:
- Applications
- experimental
- Application Reviews
/common-grants/applications/start:
post:
operationId: Applications_startApplication
summary: Start an application
description: Start a new application for a given competition.
parameters: []
responses:
'201':
description: A 201 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.ApplicationBase'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 201 response with data
'401':
description: Access is unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
tags:
- Applications
- experimental
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
competitionId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The ID of the competition to start an application for
organizationId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The ID of the organization to start an application for, if applying on behalf of an organization
name:
type: string
description: The name of the application
required:
- competitionId
- name
/common-grants/applications/{appId}:
get:
operationId: Applications_getApplication
summary: View an application
description: View an application for a given competition, along with its form responses and validation errors.
parameters:
- name: appId
in: path
required: true
description: The ID of the application to get
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.ApplicationBase'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
'401':
description: Access is unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
tags:
- Applications
- experimental
/common-grants/applications/{appId}/forms/{formId}:
put:
operationId: Applications_setFormResponse
summary: Respond to a form
description: Set or update the response to a given form in an application.
parameters:
- name: appId
in: path
required: true
description: The ID of the application to whose form response is being updated
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
- name: formId
in: path
required: true
description: The ID of the form whose response is being updated
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.AppFormResponse'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
tags:
- Applications
- experimental
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: {}
description: The response to the form
get:
operationId: Applications_getFormResponse
summary: Get a form response
description: Get the response to a given form in an application.
parameters:
- name: appId
in: path
required: true
description: The ID of the application to whose form response is being retrieved
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
- name: formId
in: path
required: true
description: The ID of the form whose response is being retrieved
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.AppFormResponse'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
tags:
- Applications
- experimental
/common-grants/applications/{appId}/submit:
put:
operationId: Applications_submitApplication
summary: Submit an application
description: Submit an application to a competition. Applications that have validation errors will be blocked from submitting until the errors are fixed.
parameters:
- name: appId
in: path
required: true
description: The ID of the application to submit
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
'401':
description: Access is unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.ApplicationSubmissionError'
tags:
- Applications
- experimental
/common-grants/competitions/{compId}:
get:
operationId: Competitions_read
summary: View competition details
description: |-
View details about a competition for a given funding opportunity.
Each competition may have a distinct set of forms, be limited to a
certain types of applicants, or have a different application period.
parameters:
- name: compId
in: path
required: true
description: The ID of the competition to view
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.CompetitionBase'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
tags:
- Competitions
- experimental
/common-grants/forms:
get:
operationId: Forms_list
summary: List forms
description: Get a paginated list of forms, sorted by `lastModifiedAt` with most recent first.
parameters:
- $ref: '#/components/parameters/CommonGrants.Pagination.PaginatedQueryParams.page'
- $ref: '#/components/parameters/CommonGrants.Pagination.PaginatedQueryParams.pageSize'
responses:
'200':
description: A 200 response with a paginated list of items
content:
application/json:
schema:
type: object
required:
- items
- paginationInfo
properties:
items:
type: array
items:
$ref: '#/components/schemas/CommonGrants.Models.FormBase'
description: Items from the current page
paginationInfo:
allOf:
- $ref: '#/components/schemas/CommonGrants.Pagination.PaginatedResultsInfo'
description: Details about the paginated results
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with a paginated list of items
tags:
- Forms
- experimental
/common-grants/forms/{formId}:
get:
operationId: Forms_read
summary: View form details
description: View details about a given form.
parameters:
- name: formId
in: path
required: true
description: The ID of the form to view
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.FormBase'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
tags:
- Forms
- experimental
/common-grants/opportunities:
get:
operationId: Opportunities_list
summary: List opportunities
description: Get a paginated list of opportunities, sorted by `lastModifiedAt` with most recent first.
parameters:
- $ref: '#/components/parameters/CommonGrants.Pagination.PaginatedQueryParams.page'
- $ref: '#/components/parameters/CommonGrants.Pagination.PaginatedQueryParams.pageSize'
responses:
'200':
description: A 200 response with a paginated list of items
content:
application/json:
schema:
type: object
required:
- items
- paginationInfo
properties:
items:
type: array
items:
$ref: '#/components/schemas/CommonGrants.Models.OpportunityBase'
description: Items from the current page
paginationInfo:
allOf:
- $ref: '#/components/schemas/CommonGrants.Pagination.PaginatedResultsInfo'
description: Details about the paginated results
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with a paginated list of items
tags:
- Opportunities
- required
/common-grants/opportunities/search:
post:
operationId: Opportunities_search
summary: Search opportunities
description: Search for opportunities based on the provided filters.
parameters: []
responses:
'200':
description: A paginated list of items with a filter
content:
application/json:
schema:
type: object
required:
- items
- paginationInfo
- status
- message
- sortInfo
- filterInfo
properties:
items:
type: array
items:
$ref: '#/components/schemas/CommonGrants.Models.OpportunityBase'
description: Items from the current page
paginationInfo:
allOf:
- $ref: '#/components/schemas/CommonGrants.Pagination.PaginatedResultsInfo'
description: Details about the paginated results
status:
type: integer
format: int32
example: 200
message:
type: string
example: Success
sortInfo:
allOf:
- $ref: '#/components/schemas/CommonGrants.Sorting.SortedResultsInfo'
description: The sort order of the items
filterInfo:
type: object
properties:
filters:
$ref: '#/components/schemas/CommonGrants.Models.OppFilters'
errors:
type: array
items:
type: string
description: Non-fatal errors that occurred during filtering
required:
- filters
description: The filters applied to the response items
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A paginated list of items with a filter
tags:
- Opportunities
- optional
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: Opportunity search query
example: Pre-school education
filters:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.OppFilters'
description: |-
Filters to apply to the opportunity search
Multiple filter conditions will be combined with AND logic, so that
results only include opportunities that match all of the provided filters.
sorting:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.OppSorting'
description: The sort order to apply to the results
pagination:
allOf:
- $ref: '#/components/schemas/CommonGrants.Pagination.PaginatedBodyParams'
description: Pagination instructions for the results
/common-grants/opportunities/{oppId}:
get:
operationId: Opportunities_read
summary: View opportunity details
description: View details about an opportunity.
parameters:
- name: oppId
in: path
required: true
description: The ID of the opportunity to view
schema:
$ref: '#/components/schemas/CommonGrants.Types.uuid'
responses:
'200':
description: A 200 response with data
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.OpportunityDetails'
description: Response data
allOf:
- $ref: '#/components/schemas/CommonGrants.Responses.Success'
description: A 200 response with data
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/CommonGrants.Responses.Error'
tags:
- Opportunities
- required
components:
parameters:
CommonGrants.Pagination.PaginatedQueryParams.page:
name: page
in: query
required: false
description: The page to return
schema:
type: integer
format: int32
minimum: 1
default: 1
explode: false
CommonGrants.Pagination.PaginatedQueryParams.pageSize:
name: pageSize
in: query
required: false
description: The number of items to return per page
schema:
type: integer
format: int32
minimum: 1
default: 100
explode: false
schemas:
CommonGrants.Fields.CustomField:
type: object
required:
- name
- fieldType
- value
properties:
name:
type: string
description: Name of the custom field
fieldType:
allOf:
- $ref: '#/components/schemas/CommonGrants.Fields.CustomFieldType'
description: The JSON schema type to use when de-serializing the `value` field
schema:
type: string
format: uri
description: Link to the full JSON schema for this custom field
value:
description: Value of the custom field
description:
type: string
description: Description of the custom field's purpose
description: A custom field on a model
example:
name: eligibilityType
fieldType: array
value:
- nonprofit
- academic
description: Types of eligible organizations
CommonGrants.Fields.CustomFieldType:
type: string
enum:
- string
- number
- integer
- boolean
- object
- array
description: The set of JSON schema types supported by a custom field
CommonGrants.Fields.DateRangeEvent:
type: object
required:
- eventType
- startDate
- endDate
properties:
eventType:
type: string
enum:
- dateRange
description: Type of event
startDate:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoDate'
description: 'Start date of the event in ISO 8601 format: YYYY-MM-DD'
startTime:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoTime'
description: 'Start time of the event in ISO 8601 format: HH:MM:SS'
endDate:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoDate'
description: 'End date of the event in ISO 8601 format: YYYY-MM-DD'
endTime:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoTime'
description: 'End time of the event in ISO 8601 format: HH:MM:SS'
allOf:
- $ref: '#/components/schemas/CommonGrants.Fields.EventBase'
description: Description of an event that has a start and end date (and possible time) associated with it
example:
name: Application period
eventType: dateRange
startDate: '2024-01-01'
endDate: '2024-01-31'
endTime: '17:00:00'
description: Primary application period for the grant opportunity
CommonGrants.Fields.Event:
anyOf:
- $ref: '#/components/schemas/CommonGrants.Fields.SingleDateEvent'
- $ref: '#/components/schemas/CommonGrants.Fields.DateRangeEvent'
- $ref: '#/components/schemas/CommonGrants.Fields.OtherEvent'
description: Union of all event types
CommonGrants.Fields.EventBase:
type: object
required:
- name
- eventType
properties:
name:
type: string
description: Human-readable name of the event (e.g., 'Application posted', 'Question deadline')
eventType:
allOf:
- $ref: '#/components/schemas/CommonGrants.Fields.EventType'
description: Type of event
description:
type: string
description: Description of what this event represents
discriminator:
propertyName: eventType
mapping:
dateRange: '#/components/schemas/CommonGrants.Fields.DateRangeEvent'
other: '#/components/schemas/CommonGrants.Fields.OtherEvent'
description: Base model for all events
CommonGrants.Fields.EventType:
type: string
enum:
- singleDate
- dateRange
- other
description: |-
Type of event (e.g., a single date, a date range, or a custom event)
- singleDate: A single date (and possible time)
- dateRange: A period of time with a start and end date
- other: Other event type (e.g., a recurring event)
CommonGrants.Fields.File:
type: object
required:
- downloadUrl
- name
- createdAt
- lastModifiedAt
properties:
downloadUrl:
type: string
format: uri
description: The file's download URL.
name:
type: string
description: The file's name.
description:
type: string
description: The file's description.
sizeInBytes:
type: number
description: The file's size in bytes.
mimeType:
type: string
description: The file's MIME type.
createdAt:
type: string
format: date-time
description: The timestamp (in UTC) at which the record was created.
readOnly: true
lastModifiedAt:
type: string
format: date-time
description: The timestamp (in UTC) at which the record was last modified.
readOnly: true
description: A field representing a downloadable file.
example:
downloadUrl: https://example.com/file.pdf
name: example.pdf
description: A PDF file with instructions
sizeInBytes: 1000
mimeType: application/pdf
createdAt: '2025-01-01T17:01:01'
lastModifiedAt: '2025-01-02T17:30:00'
CommonGrants.Fields.Money:
type: object
required:
- amount
- currency
properties:
amount:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.decimalString'
description: The amount of money
currency:
type: string
description: The ISO 4217 currency code in which the amount is denominated
description: A monetary amount and the currency in which it's denominated
example:
amount: '-50.50'
currency: USD
CommonGrants.Fields.OtherEvent:
type: object
required:
- eventType
properties:
eventType:
type: string
enum:
- other
description: Type of event
details:
type: string
description: Details of the event's timeline (e.g. "Every other Tuesday")
description:
type: string
description: Description of the event
example: Applications begin being accepted
allOf:
- $ref: '#/components/schemas/CommonGrants.Fields.EventBase'
description: Description of an event that is not a single date or date range
example:
name: Info sessions
eventType: other
details: Every other Tuesday at 10:00 AM during the application period
description: Info sessions for the opportunity
CommonGrants.Fields.SingleDateEvent:
type: object
required:
- eventType
- date
properties:
eventType:
type: string
enum:
- singleDate
description: Type of event
date:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoDate'
description: 'Date of the event in in ISO 8601 format: YYYY-MM-DD'
time:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoTime'
description: 'Time of the event in ISO 8601 format: HH:MM:SS'
allOf:
- $ref: '#/components/schemas/CommonGrants.Fields.EventBase'
description: Description of an event that has a date (and possible time) associated with it
example:
name: Opportunity close date
eventType: singleDate
date: '2024-12-31'
time: '17:00:00'
description: Opportunity closes for all applications
CommonGrants.Filters.AllOperators:
type: string
enum:
- eq
- neq
- gt
- gte
- lt
- lte
- in
- notIn
- between
- outside
- like
- notLike
CommonGrants.Filters.ArrayOperators:
type: string
enum:
- in
- notIn
description: Operators that filter a field based on an array of values
CommonGrants.Filters.ComparisonOperators:
type: string
enum:
- gt
- gte
- lt
- lte
description: Operators that filter a field based on a comparison to a value
CommonGrants.Filters.DateRangeFilter:
type: object
required:
- operator
- value
properties:
operator:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.RangeOperators'
description: The operator to apply to the filter value
value:
type: object
properties:
min:
anyOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoDate'
- type: string
format: date-time
- type: string
format: date-time
max:
anyOf:
- $ref: '#/components/schemas/CommonGrants.Types.isoDate'
- type: string
format: date-time
- type: string
format: date-time
required:
- min
- max
description: The value to use for the filter operation
example:
min: '2021-01-01'
max: '2021-01-02'
description: Filters by comparing a field to a range of date values
CommonGrants.Filters.DefaultFilter:
type: object
required:
- operator
- value
properties:
operator:
anyOf:
- $ref: '#/components/schemas/CommonGrants.Filters.EquivalenceOperators'
- $ref: '#/components/schemas/CommonGrants.Filters.ComparisonOperators'
- $ref: '#/components/schemas/CommonGrants.Filters.ArrayOperators'
- $ref: '#/components/schemas/CommonGrants.Filters.StringOperators'
- $ref: '#/components/schemas/CommonGrants.Filters.RangeOperators'
- $ref: '#/components/schemas/CommonGrants.Filters.AllOperators'
description: The operator to apply to the filter value
value:
description: The value to use for the filter operation
description: A base filter model that can be used to create more specific filter models
CommonGrants.Filters.EquivalenceOperators:
type: string
enum:
- eq
- neq
description: Operators that filter a field based on an exact match to a value
CommonGrants.Filters.MoneyRangeFilter:
type: object
required:
- operator
- value
properties:
operator:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.RangeOperators'
description: The operator to apply to the filter value
value:
type: object
properties:
min:
$ref: '#/components/schemas/CommonGrants.Fields.Money'
max:
$ref: '#/components/schemas/CommonGrants.Fields.Money'
required:
- min
- max
description: The value to use for the filter operation
example:
min:
amount: '1000'
currency: USD
max:
amount: '10000'
currency: USD
description: Filters by comparing a field to a range of monetary values
CommonGrants.Filters.RangeOperators:
type: string
enum:
- between
- outside
description: Operators that filter a field based on a range of values
CommonGrants.Filters.StringArrayFilter:
type: object
required:
- operator
- value
properties:
operator:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.ArrayOperators'
description: The operator to apply to the filter value
value:
type: array
items:
type: string
description: The value to use for the filter operation
example:
- value1
- value2
description: Filters by comparing a field to an array of string values
CommonGrants.Filters.StringOperators:
type: string
enum:
- like
- notLike
description: Operators that filter a field based on a string value
CommonGrants.Models.AppDefaultFilters:
type: object
properties:
opportunityId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.StringArrayFilter'
description: '`opportunityId` matches one of the following values'
example:
operator: in
value:
- ad3b469a-d89a-42d3-c439-6c1234567890
competitionId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.StringArrayFilter'
description: '`competitionId` matches one of the following values'
example:
operator: in
value:
- 123e4567-e89b-12d3-a456-426614174000
submittedAtRange:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.DateRangeFilter'
description: '`submittedAt` is between the given range'
example:
operator: between
value:
min: '2025-01-01'
max: '2025-01-30'
status:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.StringArrayFilter'
description: '`status.value` matches one of the following values'
example:
operator: in
value:
- submitted
- accepted
allOf:
- type: object
additionalProperties:
$ref: '#/components/schemas/CommonGrants.Filters.DefaultFilter'
description: The standard set of filters supported for application searches
CommonGrants.Models.AppFilters:
type: object
properties:
opportunityId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.StringArrayFilter'
description: '`opportunityId` matches one of the following values'
example:
operator: in
value:
- ad3b469a-d89a-42d3-c439-6c1234567890
competitionId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.StringArrayFilter'
description: '`competitionId` matches one of the following values'
example:
operator: in
value:
- 123e4567-e89b-12d3-a456-426614174000
submittedAtRange:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.DateRangeFilter'
description: '`submittedAt` is between the given range'
example:
operator: between
value:
min: '2025-01-01'
max: '2025-01-30'
status:
allOf:
- $ref: '#/components/schemas/CommonGrants.Filters.StringArrayFilter'
description: '`status.value` matches one of the following values'
example:
operator: in
value:
- submitted
- accepted
customFilters:
type: object
additionalProperties:
$ref: '#/components/schemas/CommonGrants.Filters.DefaultFilter'
description: Additional implementation-defined filters to apply to the search
description: Filters to apply when searching for applications
CommonGrants.Models.AppFormResponse:
type: object
required:
- applicationId
- id
- formId
- response
- status
- createdAt
- lastModifiedAt
properties:
applicationId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The unique identifier for the application
id:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The unique identifier for the form response
formId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The form being responded to
response:
type: object
additionalProperties: {}
description: The response to the form
status:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.FormResponseStatus'
description: The status of the form response
validationErrors:
type: array
items: {}
description: The validation errors for the form response
customFields:
type: object
additionalProperties:
$ref: '#/components/schemas/CommonGrants.Fields.CustomField'
description: Custom attributes about the form response
createdAt:
type: string
format: date-time
description: The timestamp (in UTC) at which the record was created.
readOnly: true
lastModifiedAt:
type: string
format: date-time
description: The timestamp (in UTC) at which the record was last modified.
readOnly: true
description: The model for a form response included in an application
example:
applicationId: 123e4567-e89b-12d3-a456-426614174000
id: 123e4567-e89b-12d3-a456-426614174000
formId: 123e4567-e89b-12d3-a456-426614174000
response:
firstName: John
lastName: Doe
email: john.doe@example.com
phone: 123-456-7890
address:
street: 123 Main St
city: Anytown
state: CA
zip: '12345'
country: null
status:
value: inProgress
description: The form response is in progress
validationErrors:
- field: address.country
message: Country is required
createdAt: '2021-01-01T00:00:00Z'
lastModifiedAt: '2021-01-01T00:00:00Z'
CommonGrants.Models.AppSortBy:
type: string
enum:
- lastModifiedAt
- createdAt
- submittedAt
- status.value
- opportunityId
- competitionId
- custom
description: The fields that can be used to sort applications
CommonGrants.Models.AppSorting:
type: object
required:
- sortBy
properties:
sortBy:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.AppSortBy'
description: The field to sort by
example: opportunityId
allOf:
- $ref: '#/components/schemas/CommonGrants.Sorting.SortBodyParams'
description: Sorting parameters for applications
CommonGrants.Models.AppStatus:
type: object
required:
- value
properties:
value:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.AppStatusOptions'
description: The status of the application, from a predefined set of options
customValue:
type: string
description: A custom value for the status
description:
type: string
description: A human-readable description of the status
description: The status of the application
example:
value: submitted
description: The application has been submitted.
CommonGrants.Models.AppStatusOptions:
type: string
enum:
- inProgress
- submitted
- accepted
- rejected
- custom
description: |-
The default set of values accepted for application status:
- `inProgress`: The application is in progress
- `submitted`: The application has been submitted and is being reviewed
- `accepted`: The application has been accepted
- `rejected`: The application has been rejected
- `custom`: A custom status
CommonGrants.Models.ApplicantType:
type: object
required:
- value
properties:
value:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.ApplicantTypeOptions'
description: The type of applicant
customValue:
type: string
description: The custom value for the applicant type
description:
type: string
description: The description of the applicant type
description: The type of applicant eligible to apply for funding
example:
value: individual
description: An individual applicant
CommonGrants.Models.ApplicantTypeOptions:
type: string
enum:
- individual
- organization
- government_state
- government_county
- government_municipal
- government_special_district
- government_tribal
- organization_tribal_other
- school_district_independent
- higher_education_public
- higher_education_private
- non_profit_with_501c3
- nonprofit_without_501c3
- for_profit_small_business
- for_profit_not_small_business
- unrestricted
- custom
description: The set of possible applicant types
CommonGrants.Models.ApplicationBase:
type: object
required:
- id
- name
- competitionId
- opportunityId
- formResponses
- status
- createdAt
- lastModifiedAt
properties:
id:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The unique identifier for the application
name:
type: string
description: The name of the application
competitionId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The unique identifier for the competition
opportunityId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The unique identifier for the opportunity being applied to
formResponses:
type: object
additionalProperties:
$ref: '#/components/schemas/CommonGrants.Models.AppFormResponse'
description: The form responses for the application
status:
allOf:
- $ref: '#/components/schemas/CommonGrants.Models.AppStatus'
description: The status of the application
submittedAt:
type: string
format: date-time
nullable: true
description: The date and time the application was submitted
validationErrors:
type: array
items: {}
description: The validation errors for the application and form responses
customFields:
type: object
additionalProperties:
$ref: '#/components/schemas/CommonGrants.Fields.CustomField'
description: The custom fields about the application
createdAt:
type: string
format: date-time
description: The timestamp (in UTC) at which the record was created.
readOnly: true
lastModifiedAt:
type: string
format: date-time
description: The timestamp (in UTC) at which the record was last modified.
readOnly: true
description: The base model for an application to a competition for a funding opportunity
example:
id: 123e4567-e89b-12d3-a456-426614174000
name: My Application
competitionId: 123e4567-e89b-12d3-a456-426614174000
opportunityId: ad3b469a-d89a-42d3-c439-6c1234567890
formResponses:
formA:
applicationId: 123e4567-e89b-12d3-a456-426614174000
id: 123e4567-e89b-12d3-a456-426614174000
formId: 123e4567-e89b-12d3-a456-426614174000
response:
firstName: John
lastName: Doe
email: john.doe@example.com
phone: 123-456-7890
address:
street: 123 Main St
city: Anytown
state: CA
zip: '12345'
country: null
status:
value: inProgress
description: The form response is in progress
validationErrors:
- field: address.country
message: Country is required
createdAt: '2021-01-01T00:00:00Z'
lastModifiedAt: '2021-01-01T00:00:00Z'
status:
value: inProgress
description: The application is in progress.
submittedAt: null
createdAt: '2021-01-01T00:00:00Z'
lastModifiedAt: '2021-01-01T00:00:00Z'
customFields:
attachments:
name: attachments
fieldType: object
value:
contacts:
downloadUrl: https://example.com/file.pdf
name: example.pdf
description: A PDF file with instructions
sizeInBytes: 1000
mimeType: application/pdf
createdAt: '2025-01-01T17:01:01'
lastModifiedAt: '2025-01-02T17:30:00'
budget:
downloadUrl: https://example.com/excel.xlsx
name: excel.xlsx
description: The excel file for the application
sizeInBytes: 1000
mimeType: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
createdAt: '2025-01-01T17:01:01'
lastModifiedAt: '2025-01-02T17:30:00'
description: The attachments for the application
applicationZipFile:
name: applicationZipFile
fieldType: object
value:
downloadUrl: https://example.com/application.zip
name: application.zip
description: The zip file for the application
sizeInBytes: 50000
mimeType: application/zip
createdAt: '2025-01-01T17:01:01'
lastModifiedAt: '2025-01-02T17:30:00'
description: The zip file for the application
CommonGrants.Models.CompetitionBase:
type: object
required:
- id
- opportunityId
- title
- status
- forms
- createdAt
- lastModifiedAt
properties:
id:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: Globally unique id for the competition
opportunityId:
allOf:
- $ref: '#/components/schemas/CommonGrants.Types.uuid'
description: The opportunity id for the compe