UNPKG

@common-grants/cli

Version:
1,408 lines (1,404 loc) 91.2 kB
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