Application
ApplicationBase
Section titled “ApplicationBase”Base model for an application to a funding opportunity.
| Property | Type | Required | Description | 
|---|---|---|---|
| id | uuid | Yes | The unique identifier for the application | 
| name | string | Yes | The name of the application | 
| competitionId | uuid | Yes | The unique identifier for the competition | 
| opportunityId | uuid | Yes | The unique identifier for the opportunity being applied to | 
| formResponses | record<AppFormResponse> | Yes | The form responses for the application | 
| status | AppStatus | Yes | The status of the application | 
| submittedAt | utcDateTime or null | No | The date and time the application was submitted | 
| validationErrors | array<unknown> | No | The validation errors for the application and form responses | 
| customFields | record<CustomField> | No | The custom fields about the application | 
| createdAt | utcDateTime | Yes | The timestamp (in UTC) at which the record was created. | 
| lastModifiedAt | utcDateTime | Yes | The timestamp (in UTC) at which the record was last modified. | 
Formats
Section titled “Formats”A JSON example of this model.
{  "id": "083b4567-e89d-42c8-a439-6c1234567890",  "name": "Example Application",  "competitionId": "083b4567-e89d-42c8-a439-6c1234567890",  "formResponses": {    // Form responses would be here  },  "status": {    "value": "inProgress",    "description": "Application is in progress."  },  "validationErrors": [],  "submittedAt": null,  "customFields": {    "pctComplete": {      "name": "Percentage Complete",      "fieldType": "string",      "value": "50%",      "description": "Percentage of the application that has been completed"    }  }}The JSON Schema for this model.
$schema: https://json-schema.org/draft/2020-12/schema$id: ApplicationBase.yamltype: objectproperties:  id:    $ref: uuid.yaml    description: The unique identifier for the application  name:    type: string    description: The name of the application  competitionId:    $ref: uuid.yaml    description: The unique identifier for the competition  opportunityId:    $ref: uuid.yaml    description: The unique identifier for the opportunity being applied to  formResponses:    $ref: "#/$defs/RecordAppFormResponse"    description: The form responses for the application  status:    $ref: AppStatus.yaml    description: The status of the application  submittedAt:    anyOf:      - type: string        format: date-time      - type: "null"    description: The date and time the application was submitted  validationErrors:    type: array    items: {}    description: The validation errors for the application and form responses  customFields:    $ref: "#/$defs/RecordCustomField"    description: The custom fields about the application  createdAt:    type: string    format: date-time    description: The timestamp (in UTC) at which the record was created.  lastModifiedAt:    type: string    format: date-time    description: The timestamp (in UTC) at which the record was last modified.required:  - id  - name  - competitionId  - opportunityId  - formResponses  - status  - createdAt  - lastModifiedAtunevaluatedProperties:  not: {}examples:  - 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 applicationdescription: The base model for an application to a competition for a funding opportunity$defs:  RecordAppFormResponse:    type: object    properties: {}    unevaluatedProperties:      $ref: AppFormResponse.yaml  RecordCustomField:    type: object    properties: {}    unevaluatedProperties:      $ref: CustomField.yamlThe TypeSpec code for this model.
/** The base model for an application to a competition for a funding opportunity */@example(Examples.Application.applicationBase)@Versioning.added(CommonGrants.Versions.v0_2)model ApplicationBase {  /** The unique identifier for the application */  id: Types.uuid;
  /** The name of the application */  name: string;
  /** The unique identifier for the competition */  competitionId: Types.uuid;
  /** The form responses for the application */  formResponses: Record<AppFormResponse>;
  /** The status of the application */  status: AppStatus;
  /** The date and time the application was submitted */  submittedAt?: utcDateTime | null;
  /** The validation errors for the application and form responses */  validationErrors?: Array<unknown>;
  /** The custom fields about the application */  customFields?: Record<Fields.CustomField>;
  /** The system metadata for the application */  ...Fields.SystemMetadata;}Changelog
Section titled “Changelog”| Version | Changes | 
|---|---|
| 0.3.0 | 
 | 
| 0.2.0 | 
 | 
AppStatus
Section titled “AppStatus”The status of an application.
| Property | Type | Required | Description | 
|---|---|---|---|
| value | AppStatusOptions | Yes | The status of the application, from a predefined set of options | 
| customValue | string | No | A custom value for the status | 
| description | string | No | A human-readable description of the status | 
Formats
Section titled “Formats”A JSON example of this model.
{  "value": "submitted",  "description": "Application has been submitted."}The JSON Schema for this model.
$schema: https://json-schema.org/draft/2020-12/schema$id: AppStatus.yamltype: objectproperties:  value:    $ref: AppStatusOptions.yaml    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 statusrequired:  - valueunevaluatedProperties:  not: {}examples:  - value: submitted    description: The application has been submitted.description: The status of the applicationThe TypeSpec code for this model.
/** The status of the application */@example(Examples.Application.submittedStatus)@Versioning.added(CommonGrants.Versions.v0_2)model AppStatus {  /** The status of the application, from a predefined set of options */  value: AppStatusOptions;
  /** A custom value for the status */  customValue?: string;
  /** A human-readable description of the status */  description?: string;}Changelog
Section titled “Changelog”| Version | Changes | 
|---|---|
| 0.2.0 | 
 | 
AppStatusOptions
Section titled “AppStatusOptions”The default set of values accepted for application status.
| Value | Description | 
|---|---|
| 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 | 
Formats
Section titled “Formats”A JSON example of this model.
"submitted"The JSON Schema for this model.
$schema: https://json-schema.org/draft/2020-12/schema$id: AppStatusOptions.yamltype: stringenum:  - inProgress  - submitted  - accepted  - rejected  - customdescription: |-  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 statusThe TypeSpec code for this model.
/** 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 */enum AppStatusOptions {  inProgress,  submitted,  accepted,  rejected,  custom,}Changelog
Section titled “Changelog”| Version | Changes | 
|---|---|
| 0.1.0 | 
 | 
AppFormResponse
Section titled “AppFormResponse”A form response associated with an application.
| Property | Type | Required | Description | 
|---|---|---|---|
| applicationId | uuid | Yes | The unique identifier for the application | 
| id | uuid | Yes | The unique identifier for the form response | 
| formId | uuid | Yes | The form being responded to | 
| response | record | Yes | The response to the form | 
| status | FormResponseStatus | Yes | The status of the form response | 
| validationErrors | array<unknown> | No | The validation errors for the form response | 
| customFields | record<CustomField> | No | Custom attributes about the form response | 
| createdAt | utcDateTime | Yes | The timestamp (in UTC) at which the record was created. | 
| lastModifiedAt | utcDateTime | Yes | The timestamp (in UTC) at which the record was last modified. | 
Formats
Section titled “Formats”A JSON example of this model.
{  "id": "083b4567-e89d-42c8-a439-6c1234567890",  "form": {    "id": "b7c1e2f4-8a3d-4e2a-9c5b-1f2e3d4c5b6a",    "name": "Form A",    "description": "Form A description"  },  "response": {    "name": {      "first": "John",      "last": "Doe"    },    "email": "john.doe@example.com",    "phone": "555-123-4567"  },  "status": {    "value": "complete",    "description": "The form response is complete"  },  "validationErrors": [],  "applicationId": "083b4567-e89d-42c8-a439-6c1234567890",  "createdAt": "2024-01-01T00:00:00Z",  "lastModifiedAt": "2024-01-01T00:00:00Z"}The JSON Schema for this model.
$schema: https://json-schema.org/draft/2020-12/schema$id: AppFormResponse.yamltype: objectproperties:  applicationId:    $ref: uuid.yaml    description: The unique identifier for the application  id:    $ref: uuid.yaml    description: The unique identifier for the form response  formId:    $ref: uuid.yaml    description: The form being responded to  response:    $ref: "#/$defs/RecordUnknown"    description: The response to the form  status:    $ref: FormResponseStatus.yaml    description: The status of the form response  validationErrors:    type: array    items: {}    description: The validation errors for the form response  customFields:    $ref: "#/$defs/RecordCustomField"    description: Custom attributes about the form response  createdAt:    type: string    format: date-time    description: The timestamp (in UTC) at which the record was created.  lastModifiedAt:    type: string    format: date-time    description: The timestamp (in UTC) at which the record was last modified.required:  - applicationId  - id  - formId  - response  - status  - createdAt  - lastModifiedAtunevaluatedProperties:  not: {}examples:  - 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:00Zdescription: The model for a form response included in an application$defs:  RecordUnknown:    type: object    properties: {}    unevaluatedProperties: {}  RecordCustomField:    type: object    properties: {}    unevaluatedProperties:      $ref: CustomField.yamlThe TypeSpec code for this model.
/** The model for a form response included in an application */@example(Examples.Application.formResponse)@Versioning.added(CommonGrants.Versions.v0_2)model AppFormResponse {  /** The unique identifier for the application */  applicationId: Types.uuid;
  /** Includes all the fields from the FormResponseBase model */  ...FormResponseBase;}Changelog
Section titled “Changelog”| Version | Changes | 
|---|---|
| 0.2.0 | 
 |