From 9be8824b3760daca9aaadec6cc1f1d0cf09fc2d5 Mon Sep 17 00:00:00 2001 From: Brad Banister Date: Mon, 6 Nov 2023 15:26:51 -0600 Subject: [PATCH] [RND-623] initial matchup to MetaEd api-schema plugin (#300) --- Meadowlark-js/.env.example | 2 + Meadowlark-js/.vscode/launch.json | 17 +- .../test/QueryElasticsearch.test.ts | 9 +- .../integration/QueryElasticsearch.test.ts | 23 +- .../integration/UpdateElasticsearch.test.ts | 9 +- .../src/model/MeadowlarkDocument.ts | 13 +- .../test/integration/Config.ts | 7 +- .../test/integration/Delete.test.ts | 52 +- .../integration/OwnershipSecurity.test.ts | 13 +- .../test/integration/Read.test.ts | 15 +- .../integration/SecurityMiddleware.test.ts | 13 +- .../test/integration/Update.test.ts | 121 +- .../test/integration/Upsert.test.ts | 157 +- .../test/integration/locking/Delete.test.ts | 21 +- .../test/integration/locking/Update.test.ts | 27 +- .../middleware/SecurityMiddleware.test.ts | 11 +- .../test/model/MeadowlarkDocument.test.ts | 42 +- .../test/QueryOpensearch.test.ts | 15 +- .../test/integration/QueryOpensearch.test.ts | 23 +- .../test/integration/UpdateOpensearch.test.ts | 9 +- .../src/model/MeadowlarkDocument.ts | 27 +- .../GetAllAuthorizationClients.ts | 5 +- .../test/integration/Delete.test.ts | 52 +- .../integration/OwnershipSecurity.test.ts | 13 +- .../test/integration/Read.test.ts | 9 +- .../integration/SecurityMiddleware.test.ts | 13 +- .../test/integration/Update.test.ts | 97 +- .../test/integration/Upsert.test.ts | 132 +- .../test/integration/locking/Delete.test.ts | 15 +- .../test/setup/Config.ts | 12 +- Meadowlark-js/package-lock.json | 4008 +- Meadowlark-js/package.json | 4 +- .../src/handler/CreateClient.ts | 5 +- .../src/handler/ResetClientSecret.ts | 5 +- .../src/handler/UpdateClient.ts | 5 +- .../packages/meadowlark-core/package.json | 8 +- .../packages/meadowlark-core/src/Constants.ts | 8 - .../packages/meadowlark-core/src/Logger.ts | 21 +- .../src/api-schema/ApiSchemaLoader.ts | 46 + .../src/api-schema/ProjectSchemaFinder.ts | 27 + .../src/api-schema/ResourceSchemaFinder.ts | 23 + .../ds-schemas/DataStandard-5.0.0-pre.1.json | 103662 +++++++++++++++ ...tInfoExtractor.ts => BuildDocumentInfo.ts} | 34 +- .../extraction/DescriptorValueExtractor.ts | 114 +- .../extraction/DocumentIdentityExtractor.ts | 190 +- .../extraction/DocumentReferenceExtractor.ts | 373 +- .../src/extraction/SuperclassInfoExtractor.ts | 68 + .../meadowlark-core/src/handler/Delete.ts | 13 +- .../src/handler/DescriptorLoader.ts | 9 +- .../src/handler/FrontendFacade.ts | 28 +- .../src/handler/FrontendRequest.ts | 49 +- .../meadowlark-core/src/handler/GetById.ts | 8 +- .../src/handler/MetadataHandler.ts | 41 +- .../src/handler/MetadataResources.ts | 4 +- .../meadowlark-core/src/handler/Query.ts | 19 +- .../meadowlark-core/src/handler/Update.ts | 18 +- .../meadowlark-core/src/handler/Upsert.ts | 10 +- .../meadowlark-core/src/handler/UriBuilder.ts | 34 +- .../packages/meadowlark-core/src/index.ts | 34 +- .../src/message/ReferringDocumentInfo.ts | 9 +- .../meadowlark-core/src/metaed/LoadMetaEd.ts | 101 - .../src/metaed/MetaEdModelFinder.ts | 22 - .../src/metaed/MetaEdProjectMetadata.ts | 138 - .../src/metaed/MetaEdValidation.ts | 186 - .../src/metaed/ResourceNameMapping.ts | 136 - .../middleware/ApiSchemaLoadingMiddleware.ts | 23 + .../src/middleware/AuthorizationMiddleware.ts | 16 +- .../ExtractDocumentInfoMiddleware.ts | 10 +- .../middleware/FindMetaEdModelMiddleware.ts | 39 - .../src/middleware/ParseBodyMiddleware.ts | 4 +- .../src/middleware/ParsePathMiddleware.ts | 17 +- .../middleware/ResponseLoggingMiddleware.ts | 9 +- .../middleware/TimestampRequestMiddleware.ts | 7 +- .../middleware/ValidateDocumentMiddleware.ts | 8 +- ...eware.ts => ValidateEndpointMiddleware.ts} | 21 +- .../ValidateEqualityConstraintMiddleware.ts | 6 +- .../src/middleware/ValidateQueryMiddleware.ts | 2 +- .../meadowlark-core/src/model/BrandType.ts | 9 + .../src/model/DescriptorDocumentInfo.ts | 11 +- .../src/model/DocumentIdentity.ts | 43 +- .../meadowlark-core/src/model/DocumentInfo.ts | 3 +- .../src/model/DocumentReference.ts | 6 +- .../meadowlark-core/src/model/IdTypes.ts | 5 +- .../src/model/PathComponents.ts | 37 +- .../src/model/ProjectShortVersion.ts | 12 + .../meadowlark-core/src/model/ResourceInfo.ts | 35 +- .../src/model/ResourceMatchResult.ts | 36 - .../SchoolYearEnumerationDocumentInfo.ts | 7 +- .../src/model/SuperclassInfo.ts | 14 +- .../model/api-schema/AbstractResourceInfo.ts | 14 + .../api-schema/AbstractResourceMapping.ts | 14 + .../src/model/api-schema/ApiSchema.ts | 28 + .../src/model/api-schema/DocumentObjectKey.ts | 11 + .../src/model/api-schema/DocumentPaths.ts | 73 + .../model/api-schema/DocumentPathsMapping.ts | 11 + .../src/model/api-schema/EndpointName.ts | 14 + .../model/api-schema/EqualityConstraint.ts | 14 + .../src/model/api-schema/JsonPath.ts | 8 + .../src/model/api-schema/JsonSchema.ts | 63 + .../src/model/api-schema/MetaEdProjectName.ts | 12 + .../api-schema/MetaEdPropertyFullName.ts | 13 + .../model/api-schema/MetaEdPropertyPath.ts | 13 + .../model/api-schema/MetaEdResourceName.ts | 14 + .../model/api-schema/ProjectNameMapping.ts | 14 + .../src/model/api-schema/ProjectNamespace.ts | 12 + .../src/model/api-schema/ProjectSchema.ts | 55 + .../model/api-schema/ProjectSchemaMapping.ts | 14 + .../model/api-schema/ResourceNameMapping.ts | 14 + .../src/model/api-schema/ResourceSchema.ts | 145 + .../model/api-schema/ResourceSchemaMapping.ts | 14 + .../src/model/api-schema/SemVer.ts | 13 + .../src/validation/DocumentValidator.ts | 32 +- .../validation/EndpointValidationResult.ts | 27 + .../src/validation/EndpointValidator.ts | 109 + .../validation/EqualityConstraintValidator.ts | 10 +- .../src/validation/QueryStringValidator.ts | 66 +- .../validation/ResourceSchemaValidation.ts | 61 + .../src/validation/ResourceValidator.ts | 92 - .../meadowlark-core/test/TestHelper.ts | 23 + .../DescriptorValueExtractor.test.ts | 225 +- .../DocumentIdentityExtractor.test.ts | 170 +- .../extraction/DocumentInfoExtractor.test.ts | 259 - .../DocumentReferenceExtractor.test.ts | 580 +- .../test/handler/DeleteIt.test.ts | 25 +- .../test/handler/FrontendRequest.test.ts | 22 +- .../test/handler/GetById.test.ts | 9 +- .../test/handler/Query.test.ts | 9 +- .../test/handler/Update.test.ts | 26 +- .../test/handler/Upsert.test.ts | 46 +- .../metaed/MetaEdValidation.test.ts | 398 - .../test/metaed/ResourceNameMapping.test.ts | 271 - .../AuthorizationMiddleware.test.ts | 2 +- .../ExtractDocumentInfoMiddleware.test.ts | 32 +- .../FindMetaEdModelMiddleware.test.ts | 107 - .../middleware/ParsePathMiddleware.test.ts | 12 +- .../ResponseLoggingMiddleware.test.ts | 55 +- .../ValidateDocumentMiddleware.test.ts | 6 +- ....ts => ValidateEndpointMiddleware.test.ts} | 115 +- .../ValidateQueryMiddleware.test.ts | 6 +- .../validation/DocumentIdValidator.test.ts | 28 +- .../test/validation/DocumentValidator.test.ts | 70 - .../DocumentValidatorForOverposting.test.ts | 207 + .../test/validation/EndpointValidator.test.ts | 265 + .../EqualityConstraintValidator.test.ts | 48 +- .../validation/QueryStringValidator.test.ts | 83 +- ...ueryStringValidatorForOverposting.test.ts} | 171 +- .../ReferenceAndIdentityEquivalence.test.ts | 106 +- .../test/validation/ResourceValidator.test.ts | 97 - .../meadowlark-utilities/test/Config.test.ts | 25 - .../services/meadowlark-fastify/.env.example | 3 +- .../meadowlark-fastify/src/Service.ts | 4 - .../src/handler/MetadataHandler.ts | 8 - .../tests/e2e/endpoints/Sections.test.ts | 73 +- .../tests/e2e/endpoints/Sessions.test.ts | 16 +- .../StudentInterventionAssociations.test.ts | 24 +- .../ApiPropertyMappingEnhancer.test.ts | 54 - .../DescriptorReferenceValidation.test.ts | 8 +- ...ipleEdorgTypesResourceAssociations.test.ts | 3 +- .../ResourcesReferenceValidation.test.ts | 28 +- .../e2e/scenarios/SchemaValidation.test.ts | 36 +- .../e2e/setup/TeardownTestEnvironment.ts | 5 +- 161 files changed, 108814 insertions(+), 6740 deletions(-) create mode 100644 Meadowlark-js/packages/meadowlark-core/src/api-schema/ApiSchemaLoader.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/api-schema/ProjectSchemaFinder.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/api-schema/ResourceSchemaFinder.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/ds-schemas/DataStandard-5.0.0-pre.1.json rename Meadowlark-js/packages/meadowlark-core/src/extraction/{DocumentInfoExtractor.ts => BuildDocumentInfo.ts} (51%) create mode 100644 Meadowlark-js/packages/meadowlark-core/src/extraction/SuperclassInfoExtractor.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/metaed/LoadMetaEd.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdModelFinder.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdProjectMetadata.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdValidation.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/metaed/ResourceNameMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/middleware/ApiSchemaLoadingMiddleware.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/middleware/FindMetaEdModelMiddleware.ts rename Meadowlark-js/packages/meadowlark-core/src/middleware/{ValidateResourceMiddleware.ts => ValidateEndpointMiddleware.ts} (61%) create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/BrandType.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/ProjectShortVersion.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/ResourceMatchResult.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceInfo.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ApiSchema.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentObjectKey.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPaths.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPathsMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EndpointName.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EqualityConstraint.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonPath.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonSchema.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdProjectName.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyFullName.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyPath.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdResourceName.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNameMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNamespace.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchema.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchemaMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceNameMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchema.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchemaMapping.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/model/api-schema/SemVer.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidationResult.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidator.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/src/validation/ResourceSchemaValidation.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/src/validation/ResourceValidator.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/test/TestHelper.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentInfoExtractor.test.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/test/integration/metaed/MetaEdValidation.test.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/test/metaed/ResourceNameMapping.test.ts delete mode 100644 Meadowlark-js/packages/meadowlark-core/test/middleware/FindMetaEdModelMiddleware.test.ts rename Meadowlark-js/packages/meadowlark-core/test/middleware/{ValidateResourceMiddleware.test.ts => ValidateEndpointMiddleware.test.ts} (61%) delete mode 100644 Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidator.test.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidatorForOverposting.test.ts create mode 100644 Meadowlark-js/packages/meadowlark-core/test/validation/EndpointValidator.test.ts rename Meadowlark-js/packages/meadowlark-core/test/{metaed/MetaEdValidation.test.ts => validation/QueryStringValidatorForOverposting.test.ts} (61%) delete mode 100644 Meadowlark-js/packages/meadowlark-core/test/validation/ResourceValidator.test.ts delete mode 100644 Meadowlark-js/tests/e2e/scenarios/ApiPropertyMappingEnhancer.test.ts diff --git a/Meadowlark-js/.env.example b/Meadowlark-js/.env.example index 0c5bbc21..b4196a49 100644 --- a/Meadowlark-js/.env.example +++ b/Meadowlark-js/.env.example @@ -14,8 +14,10 @@ MONGODB_MAX_NUMBER_OF_RETRIES=1 #### Environment variables for security OWN_OAUTH_CLIENT_ID_FOR_CLIENT_AUTH=meadowlark_verify-only_key_1 OWN_OAUTH_CLIENT_SECRET_FOR_CLIENT_AUTH=meadowlark_verify-only_secret_1 +## URLs may need to be 127.0.0.1 instead of localhost depending on Node version OAUTH_SERVER_ENDPOINT_FOR_OWN_TOKEN_REQUEST=http://localhost:3000/local/oauth/token OAUTH_SERVER_ENDPOINT_FOR_TOKEN_VERIFICATION=http://localhost:3000/local/oauth/verify + LOG_PRETTY_PRINT=true diff --git a/Meadowlark-js/.vscode/launch.json b/Meadowlark-js/.vscode/launch.json index 3b4bcba9..423eddd3 100644 --- a/Meadowlark-js/.vscode/launch.json +++ b/Meadowlark-js/.vscode/launch.json @@ -5,7 +5,7 @@ "type": "node", "request": "launch", "runtimeArgs": ["--inspect", "--debug-port=9229"], - "env": {"FASTIFY_NUM_THREADS": "1", "OAUTH_HARD_CODED_CREDENTIALS_ENABLED": "true"}, + "env": {"FASTIFY_NUM_THREADS": "1", "FASTIFY_PORT": "3000", "OAUTH_HARD_CODED_CREDENTIALS_ENABLED": "true" }, "program": "${workspaceFolder}/services/meadowlark-fastify/dist/index.js", "port": 9229, "console": "integratedTerminal", @@ -27,6 +27,21 @@ "internalConsoleOptions": "neverOpen", "port": 9229 }, + { + "name": "Jest :: File Linux e2e", + "type": "node", + "request": "launch", + "runtimeArgs": [ + "--inspect-brk", + "${workspaceRoot}/node_modules/.bin/jest", + "--runInBand", + "${relativeFile}", + ], + "env": {"FASTIFY_PORT": "3000" }, + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "port": 9229 + }, { "type": "node", "request": "launch", diff --git a/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/QueryElasticsearch.test.ts b/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/QueryElasticsearch.test.ts index 18569182..007065a3 100644 --- a/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/QueryElasticsearch.test.ts +++ b/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/QueryElasticsearch.test.ts @@ -12,16 +12,19 @@ import { AuthorizationStrategy, TraceId, ResourceInfo, + MetaEdProjectName, + MetaEdResourceName, + SemVer, } from '@edfi/meadowlark-core'; import { queryDocuments, indexFromResourceInfo } from '../src/repository/QueryElasticsearch'; const mock = new Mock(); const resourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; diff --git a/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/QueryElasticsearch.test.ts b/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/QueryElasticsearch.test.ts index 20a81bac..64e4e620 100644 --- a/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/QueryElasticsearch.test.ts +++ b/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/QueryElasticsearch.test.ts @@ -14,9 +14,14 @@ import { AuthorizationStrategy, DeleteRequest, DeleteResult, + generateDocumentUuid, + DocumentUuid, + MeadowlarkId, + TraceId, + MetaEdProjectName, + MetaEdResourceName, + SemVer, } from '@edfi/meadowlark-core'; -import { DocumentUuid, MeadowlarkId, TraceId } from '@edfi/meadowlark-core/src/model/IdTypes'; -import { generateDocumentUuid } from '@edfi/meadowlark-core/src/model/DocumentIdentity'; import { Client } from '@elastic/elasticsearch'; import { queryDocuments } from '../../src/repository/QueryElasticsearch'; import { afterDeleteDocumentById, afterUpsertDocument } from '../../src/repository/UpdateElasticsearch'; @@ -25,10 +30,10 @@ import { getNewTestClient } from '../setup/ElasticSearchSetupEnvironment'; jest.setTimeout(120_000); const resourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; @@ -130,7 +135,7 @@ describe('When querying for documents', () => { describe('when querying with wrong resource info', () => { it('should return invalid query', async () => { const invalidResourceInfo = { ...resourceInfo }; - invalidResourceInfo.projectName = 'wrong-project'; + invalidResourceInfo.projectName = 'wrong-project' as MetaEdProjectName; const result = await queryDocuments(setupQueryRequest({}, {}, invalidResourceInfo), client); expect(result.response).toEqual('QUERY_FAILURE_INDEX_NOT_FOUND'); @@ -237,10 +242,10 @@ describe('When querying for documents', () => { describe('when querying for descriptor', () => { const descriptorResourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'countryDescriptor', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'countryDescriptor' as MetaEdResourceName, isDescriptor: true, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; diff --git a/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/UpdateElasticsearch.test.ts b/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/UpdateElasticsearch.test.ts index 2b4434b8..8500a4ef 100644 --- a/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/UpdateElasticsearch.test.ts +++ b/Meadowlark-js/backends/meadowlark-elasticsearch-backend/test/integration/UpdateElasticsearch.test.ts @@ -8,11 +8,14 @@ import { DeleteResult, DocumentUuid, MeadowlarkId, + MetaEdProjectName, + MetaEdResourceName, newSecurity, NoDocumentInfo, PaginationParameters, QueryRequest, ResourceInfo, + SemVer, TraceId, UpdateRequest, UpdateResult, @@ -31,10 +34,10 @@ import { getNewTestClient } from '../setup/ElasticSearchSetupEnvironment'; jest.setTimeout(120_000); const resourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/src/model/MeadowlarkDocument.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/src/model/MeadowlarkDocument.ts index 3d8c55b8..104ebf05 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/src/model/MeadowlarkDocument.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/src/model/MeadowlarkDocument.ts @@ -12,6 +12,9 @@ import { MeadowlarkId, ResourceInfo, DocumentUuid, + MetaEdProjectName, + MetaEdResourceName, + SemVer, } from '@edfi/meadowlark-core'; export interface MeadowlarkDocumentId { @@ -36,19 +39,19 @@ export interface MeadowlarkDocument extends MeadowlarkDocumentId { /** * The MetaEd project name the API document resource is defined in e.g. "EdFi" for a data standard entity. */ - projectName: string; + projectName: MetaEdProjectName; /** * The name of the resource. Typically, this is the same as the corresponding MetaEd entity name. However, * there are exceptions, for example descriptors have a "Descriptor" suffix on their resource name. */ - resourceName: string; + resourceName: MetaEdResourceName; /** * The resource version as a string. This is the same as the MetaEd project version * the entity is defined in e.g. "3.3.1-b" for a 3.3b data standard entity. */ - resourceVersion: string; + resourceVersion: SemVer; /** * The Ed-Fi ODS/API document itself. @@ -96,12 +99,12 @@ export interface MeadowlarkDocument extends MeadowlarkDocumentId { createdBy: string; /* - * Creation date as as Unix timestamp, or null if this is a document to be updated and we don't know the create time yet + * Creation date as a Unix timestamp, or null if this is a document to be updated and we don't know the create time yet */ createdAt: number | null; /* - * Last modified date as as Unix timestamp. + * Last modified date as a Unix timestamp. */ lastModifiedAt: number; diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Config.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Config.ts index 17f47b58..769c0667 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Config.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Config.ts @@ -15,7 +15,12 @@ export const setupConfigForIntegration = async () => { return; } - const path = join(process.cwd(), '.env'); + // First look for .env file paired with this Config.ts file + let path = join(__dirname, '.env'); + + if (!existsSync(path)) { + path = join(process.cwd(), '.env'); + } if (!existsSync(path)) { // eslint-disable-next-line no-console diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Delete.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Delete.test.ts index c135d0be..74f21e19 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Delete.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Delete.test.ts @@ -21,6 +21,8 @@ import { MeadowlarkId, TraceId, UpsertResult, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import { Collection, MongoClient } from 'mongodb'; import { MeadowlarkDocument } from '../../src/model/MeadowlarkDocument'; @@ -53,7 +55,7 @@ describe('given the delete of a non-existent document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; beforeAll(async () => { @@ -84,11 +86,11 @@ describe('given the delete of an existing document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete2' }, + documentIdentity: [{ natural: 'delete2' }], }; beforeAll(async () => { @@ -135,12 +137,12 @@ describe('given the delete of a document referenced by an existing document with const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete5' }, + documentIdentity: [{ natural: 'delete5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -156,11 +158,11 @@ describe('given the delete of a document referenced by an existing document with const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete6' }, + documentIdentity: [{ natural: 'delete6' }], documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -218,7 +220,7 @@ describe('given the delete of a document referenced by an existing document with it('should still have the referenced document in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: referencedMeadowlarkId }); - expect(result.documentIdentity.natural).toBe('delete5'); + expect(result.documentIdentity[0].natural).toBe('delete5'); }); }); @@ -229,12 +231,12 @@ describe('given an delete of a document with an outbound reference only, with va const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete15' }, + documentIdentity: [{ natural: 'delete15' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -250,11 +252,11 @@ describe('given an delete of a document with an outbound reference only, with va const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete16' }, + documentIdentity: [{ natural: 'delete16' }], documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -323,11 +325,11 @@ describe('given the delete of a document referenced by an existing document with const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete5' }, + documentIdentity: [{ natural: 'delete5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -343,11 +345,11 @@ describe('given the delete of a document referenced by an existing document with const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete6' }, + documentIdentity: [{ natural: 'delete6' }], documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -416,20 +418,20 @@ describe('given the delete of a subclass document referenced by an existing docu const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -446,11 +448,11 @@ describe('given the delete of a subclass document referenced by an existing docu const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'delete6' }, + documentIdentity: [{ week: 'delete6' }], documentReferences: [referenceAsSuperclass], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -508,6 +510,6 @@ describe('given the delete of a subclass document referenced by an existing docu it('should still have the referenced document in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: referencedMeadowlarkId }); - expect(result.documentIdentity.schoolId).toBe('123'); + expect(result.documentIdentity[0].schoolId).toBe('123'); }); }); diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/OwnershipSecurity.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/OwnershipSecurity.test.ts index c15d021d..428279ba 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/OwnershipSecurity.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/OwnershipSecurity.test.ts @@ -17,9 +17,10 @@ import { UpsertRequest, TraceId, UpsertResult, + newFrontendRequestMiddleware, + newPathComponents, + MetaEdResourceName, } from '@edfi/meadowlark-core'; -import { newFrontendRequestMiddleware } from '@edfi/meadowlark-core/src/handler/FrontendRequest'; -import { newPathComponents } from '@edfi/meadowlark-core/src/model/PathComponents'; import { MongoClient } from 'mongodb'; import { getDocumentCollection, getNewClient } from '../../src/repository/Db'; import { rejectByOwnershipSecurity } from '../../src/repository/OwnershipSecurity'; @@ -135,11 +136,11 @@ describe('given the getById of a document owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -195,11 +196,11 @@ describe('given the getById of a document not owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); const upsertRequest: UpsertRequest = { diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Read.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Read.test.ts index e9a369f3..6af684ca 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Read.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Read.test.ts @@ -18,6 +18,7 @@ import { MeadowlarkId, DocumentUuid, UpdateRequest, + MetaEdResourceName, } from '@edfi/meadowlark-core'; import { Collection, MongoClient } from 'mongodb'; import { MeadowlarkDocument } from '../../src/model/MeadowlarkDocument'; @@ -61,11 +62,11 @@ describe('given the get of a non-existent document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get1' }, + documentIdentity: [{ natural: 'get1' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -99,11 +100,11 @@ describe('given the get of an existing document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], requestTimestamp: 1683326572053, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -151,17 +152,17 @@ describe('given the get of an updated document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo1: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'getUpdatedDocument' }, + documentIdentity: [{ natural: 'getUpdatedDocument' }], requestTimestamp: 1683326572053, }; const documentInfo2: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'getUpdatedDocument' }, + documentIdentity: [{ natural: 'getUpdatedDocument' }], requestTimestamp: 1683548337342, }; diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/SecurityMiddleware.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/SecurityMiddleware.test.ts index f91cf219..42e4eb6b 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/SecurityMiddleware.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/SecurityMiddleware.test.ts @@ -17,9 +17,10 @@ import { UpsertRequest, TraceId, UpsertResult, + newFrontendRequestMiddleware, + newPathComponents, + MetaEdResourceName, } from '@edfi/meadowlark-core'; -import { newFrontendRequestMiddleware } from '@edfi/meadowlark-core/src/handler/FrontendRequest'; -import { newPathComponents } from '@edfi/meadowlark-core/src/model/PathComponents'; import { MongoClient } from 'mongodb'; import { getDocumentCollection, getNewClient } from '../../src/repository/Db'; import { securityMiddleware } from '../../src/security/SecurityMiddleware'; @@ -100,11 +101,11 @@ describe('given the getById of a document owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -161,11 +162,11 @@ describe('given the getById of a document not owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Update.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Update.test.ts index 8a0d2307..81509447 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Update.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Update.test.ts @@ -22,6 +22,8 @@ import { UpdateResult, DocumentUuid, UpsertResult, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import { ClientSession, Collection, MongoClient } from 'mongodb'; import { MeadowlarkDocument } from '../../src/model/MeadowlarkDocument'; @@ -60,11 +62,11 @@ describe('given the update of a non-existent document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update1' }, + documentIdentity: [{ natural: 'update1' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -110,11 +112,11 @@ describe('given the update of an existing document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update2' }, + documentIdentity: [{ natural: 'update2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -157,7 +159,13 @@ describe('given the update of an existing document', () => { it('should have updated the document in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: meadowlarkId }); - expect(result.documentIdentity.natural).toBe('update2'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "natural": "update2", + }, + ] + `); expect(result.edfiDoc.changeToDoc).toBe(true); }); @@ -176,11 +184,11 @@ describe('given the attempted update of an existing document with a stale reques const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update2' }, + documentIdentity: [{ natural: 'update2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -223,7 +231,14 @@ describe('given the attempted update of an existing document with a stale reques it('should not have updated the document in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: meadowlarkId }); - expect(result.documentIdentity.natural).toBe('update2'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "natural": "update2", + }, + ] + `); + expect(result.edfiDoc.natural).toBe('key'); }); @@ -242,11 +257,11 @@ describe('given an update of a document that references a non-existent document const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update4' }, + documentIdentity: [{ natural: 'update4' }], requestTimestamp, }; @@ -258,7 +273,7 @@ describe('given an update of a document that references a non-existent document const invalidReference: DocumentReference = { projectName: documentWithReferencesResourceInfo.projectName, resourceName: documentWithReferencesResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], isDescriptor: false, }; @@ -310,7 +325,14 @@ describe('given an update of a document that references a non-existent document it('should have updated the document with an invalid reference in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: documentWithReferencesMeadowlarkId }); - expect(result.documentIdentity.natural).toBe('update4'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "natural": "update4", + }, + ] + `); + expect(result.outboundRefs).toMatchInlineSnapshot(` [ "QtykK4uDYZK7VOChNxRsMDtOcAu6a0oe9ozl2Q", @@ -333,11 +355,11 @@ describe('given an update of a document that references an existing document wit const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update5' }, + documentIdentity: [{ natural: 'update5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -353,11 +375,11 @@ describe('given an update of a document that references an existing document wit const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update6' }, + documentIdentity: [{ natural: 'update6' }], requestTimestamp, }; const documentWithReferencesMeadowlarkId: MeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -423,7 +445,14 @@ describe('given an update of a document that references an existing document wit it('should have updated the document with a valid reference in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: documentWithReferencesMeadowlarkId }); - expect(result.documentIdentity.natural).toBe('update6'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "natural": "update6", + }, + ] + `); + expect(result.outboundRefs).toMatchInlineSnapshot(` [ "Qw5FvPdKxAXWnGghsMh3I61yLFfls4Q949Fk2w", @@ -446,11 +475,11 @@ describe('given an update of a document with one existing and one non-existent r const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update7' }, + documentIdentity: [{ natural: 'update7' }], requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -468,17 +497,17 @@ describe('given an update of a document with one existing and one non-existent r const invalidReference: DocumentReference = { projectName: referencedResourceInfo.projectName, resourceName: referencedResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not valid' }], isDescriptor: false, }; const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update8' }, + documentIdentity: [{ natural: 'update8' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -541,9 +570,11 @@ describe('given an update of a document with one existing and one non-existent r { "failures": [ { - "identity": { - "natural": "not a valid reference", - }, + "identity": [ + { + "natural": "not valid", + }, + ], "resourceName": "School", }, ], @@ -566,20 +597,20 @@ describe('given an update of a subclass document referenced by an existing docum const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, requestTimestamp, }; @@ -597,11 +628,11 @@ describe('given an update of a subclass document referenced by an existing docum const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'update6' }, + documentIdentity: [{ week: 'update6' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -688,12 +719,12 @@ describe('given the update of an existing document changing meadowlarkId with al const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: false, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update 2' }, + documentIdentity: [{ natural: 'update 2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -710,7 +741,7 @@ describe('given the update of an existing document changing meadowlarkId with al }; const documentInfoUpdated: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'updated identity' }, + documentIdentity: [{ natural: 'updated identity' }], requestTimestamp: requestTimestamp + 1, }; const meadowlarkIdUpdated = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoUpdated.documentIdentity); @@ -749,12 +780,12 @@ describe('given the update of an existing document changing meadowlarkId with al const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: true, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'updated identity' }, + documentIdentity: [{ natural: 'updated identity' }], requestTimestamp, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -777,7 +808,7 @@ describe('given the update of an existing document changing meadowlarkId with al }; const documentInfoUpdated: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update 2' }, + documentIdentity: [{ natural: 'update 2' }], requestTimestamp: requestTimestamp + 1, }; meadowlarkIdUpdated = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoUpdated.documentIdentity); @@ -838,12 +869,12 @@ describe('given the attempted update of an existing document with a stale reques const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: true, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update2' }, + documentIdentity: [{ natural: 'update2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -886,7 +917,13 @@ describe('given the attempted update of an existing document with a stale reques it('should not have updated the document in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: meadowlarkId }); - expect(result.documentIdentity.natural).toBe('update2'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "natural": "update2", + }, + ] + `); expect(result.edfiDoc.natural).toBe('key'); }); diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Upsert.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Upsert.test.ts index af9ba7f3..34d2c5a4 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Upsert.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/Upsert.test.ts @@ -21,6 +21,8 @@ import { MeadowlarkId, TraceId, UpsertResult, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import { Collection, MongoClient } from 'mongodb'; import { MeadowlarkDocument } from '../../src/model/MeadowlarkDocument'; @@ -46,11 +48,11 @@ describe('given the upsert of a new document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert1' }, + documentIdentity: [{ natural: 'upsert1' }], requestTimestamp, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -108,11 +110,11 @@ describe('given the upsert of an existing document three times', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key' }, + documentIdentity: [{ natural: 'key' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -204,12 +206,12 @@ describe('given an upsert of an existing non-identity-update supporting document const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: false, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert3' }, + documentIdentity: [{ natural: 'upsert3' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -263,12 +265,12 @@ describe('given an upsert of an existing identity-update supporting document, ch const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: true, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert3' }, + documentIdentity: [{ natural: 'upsert3' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -324,17 +326,17 @@ describe('given an upsert of an existing non-identity update supporting document const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: false, }; const documentInfo1: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key1' }, + documentIdentity: [{ natural: 'key1' }], requestTimestamp, }; const documentInfo2: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key2' }, + documentIdentity: [{ natural: 'key2' }], requestTimestamp: requestTimestamp + 1, }; @@ -414,17 +416,17 @@ describe('given an upsert of an existing identity update supporting document, ch const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: true, }; const documentInfo1: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key1' }, + documentIdentity: [{ natural: 'key1' }], requestTimestamp, }; const documentInfo2: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key2' }, + documentIdentity: [{ natural: 'key2' }], requestTimestamp: requestTimestamp + 1, }; @@ -503,11 +505,11 @@ describe('given an upsert of a new document that references a non-existent docum const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert4' }, + documentIdentity: [{ natural: 'upsert4' }], }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -518,7 +520,7 @@ describe('given an upsert of a new document that references a non-existent docum const invalidReference: DocumentReference = { projectName: documentWithReferencesResourceInfo.projectName, resourceName: documentWithReferencesResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not valid' }], isDescriptor: false, }; documentWithReferencesInfo.documentReferences = [invalidReference]; @@ -553,7 +555,7 @@ describe('given an upsert of a new document that references a non-existent docum it('should have inserted the document with an invalid reference in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: documentWithReferencesId }); - expect(result.documentIdentity.natural).toBe('upsert4'); + expect(result.documentIdentity[0].natural).toBe('upsert4'); }); }); @@ -563,11 +565,11 @@ describe('given an upsert of a new document that references an existing document const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert5' }, + documentIdentity: [{ natural: 'upsert5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -583,11 +585,11 @@ describe('given an upsert of a new document that references an existing document const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert6' }, + documentIdentity: [{ natural: 'upsert6' }], documentReferences: [validReference], }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -636,7 +638,7 @@ describe('given an upsert of a new document that references an existing document it('should have inserted the document with a valid reference in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: documentWithReferencesId }); - expect(result.documentIdentity.natural).toBe('upsert6'); + expect(result.documentIdentity[0].natural).toBe('upsert6'); }); }); @@ -646,11 +648,11 @@ describe('given an upsert of a new document with one existing and one non-existe const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert7' }, + documentIdentity: [{ natural: 'upsert7' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -667,17 +669,17 @@ describe('given an upsert of a new document with one existing and one non-existe const invalidReference: DocumentReference = { projectName: referencedResourceInfo.projectName, resourceName: referencedResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not valid' }], isDescriptor: false, }; const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert8' }, + documentIdentity: [{ natural: 'upsert8' }], documentReferences: [validReference, invalidReference], }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -726,9 +728,11 @@ describe('given an upsert of a new document with one existing and one non-existe "error": { "failures": [ { - "identity": { - "natural": "not a valid reference", - }, + "identity": [ + { + "natural": "not valid", + }, + ], "resourceName": "School", }, ], @@ -751,20 +755,20 @@ describe('given an upsert of a subclass document referenced by an existing docum const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -781,11 +785,11 @@ describe('given an upsert of a subclass document referenced by an existing docum const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'update6' }, + documentIdentity: [{ week: 'update6' }], documentReferences: [referenceAsSuperclass], }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -846,22 +850,23 @@ describe('given an upsert of a subclass document when a different subclass has t let client; let upsertResult; - const documentIdentity: DocumentIdentity = { educationOrganizationId: '123' }; + const documentIdentity: DocumentIdentity = [{ educationOrganizationId: '123' }]; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), documentIdentity, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const existingSubclassResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const existingSubclassDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], + superclassInfo, }; const existingSubclassId = meadowlarkIdForDocumentIdentity( @@ -871,11 +876,11 @@ describe('given an upsert of a subclass document when a different subclass has t const sameSuperclassIdentityResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'LocalEducationAgency', + resourceName: 'LocalEducationAgency' as MetaEdResourceName, }; const sameSuperclassIdentityDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { localEducationAgencyId: '123' }, + documentIdentity: [{ localEducationAgencyId: '123' }], superclassInfo, }; const sameSuperclassIdentityId = meadowlarkIdForDocumentIdentity( @@ -939,11 +944,11 @@ describe('given an update of a document that references a non-existent document const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert4' }, + documentIdentity: [{ week: 'upsert4' }], requestTimestamp, }; @@ -955,7 +960,7 @@ describe('given an update of a document that references a non-existent document const invalidReference: DocumentReference = { projectName: documentWithReferencesResourceInfo.projectName, resourceName: documentWithReferencesResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not valid' }], isDescriptor: false, }; @@ -1002,10 +1007,10 @@ describe('given an update of a document that references a non-existent document it('should have updated the document with an invalid reference in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: documentWithReferencesId }); - expect(result.documentIdentity.natural).toBe('upsert4'); + expect(result.documentIdentity[0].week).toBe('upsert4'); expect(result.outboundRefs).toMatchInlineSnapshot(` [ - "QtykK4uDYZK7VOChNxRsMDtOcAu6a0oe9ozl2Q", + "QtykK4uDYZK7VOChzZNTfqxhrlznYfnql5kIHg", ] `); }); @@ -1017,11 +1022,11 @@ describe('given an update of a document that references an existing document wit const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert5' }, + documentIdentity: [{ week: 'upsert5' }], requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -1038,11 +1043,11 @@ describe('given an update of a document that references an existing document wit const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert6' }, + documentIdentity: [{ week: 'upsert6' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -1104,10 +1109,10 @@ describe('given an update of a document that references an existing document wit it('should have updated the document with a valid reference in the db', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: documentWithReferencesId }); - expect(result.documentIdentity.natural).toBe('upsert6'); + expect(result.documentIdentity[0].week).toBe('upsert6'); expect(result.outboundRefs).toMatchInlineSnapshot(` [ - "Qw5FvPdKxAXWnGghUWv5LKuA2cXaJPWJGJRDBQ", + "Qw5FvPdKxAXWnGghJNiT2FU22MBPJwl7FpuNdw", ] `); }); @@ -1119,11 +1124,11 @@ describe('given an update of a document with one existing and one non-existent r const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert7' }, + documentIdentity: [{ week: 'upsert7' }], requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -1141,17 +1146,17 @@ describe('given an update of a document with one existing and one non-existent r const invalidReference: DocumentReference = { projectName: referencedResourceInfo.projectName, resourceName: referencedResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not valid' }], isDescriptor: false, }; const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert8' }, + documentIdentity: [{ week: 'upsert8' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -1213,9 +1218,11 @@ describe('given an update of a document with one existing and one non-existent r "error": { "failures": [ { - "identity": { - "natural": "not a valid reference", - }, + "identity": [ + { + "natural": "not valid", + }, + ], "resourceName": "School", }, ], @@ -1238,20 +1245,20 @@ describe('given an update of a subclass document referenced by an existing docum const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, requestTimestamp, }; @@ -1269,11 +1276,11 @@ describe('given an update of a subclass document referenced by an existing docum const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'update6' }, + documentIdentity: [{ week: 'update6' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -1350,11 +1357,11 @@ describe('given the upsert of an existing document with a stale request timestam const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key' }, + documentIdentity: [{ natural: 'key' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Delete.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Delete.test.ts index aac7cf6a..01fb618d 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Delete.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Delete.test.ts @@ -15,6 +15,7 @@ import { newResourceInfo, DocumentUuid, TraceId, + MetaEdResourceName, } from '@edfi/meadowlark-core'; import { ClientSession, Collection, MongoClient, WithId } from 'mongodb'; import { MeadowlarkDocument, meadowlarkDocumentFrom } from '../../../src/model/MeadowlarkDocument'; @@ -60,12 +61,12 @@ const edfiSchoolDoc = { const schoolResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const schoolDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], }; const schoolMeadowlarkId = meadowlarkIdForDocumentIdentity(schoolResourceInfo, schoolDocumentInfo.documentIdentity); @@ -101,15 +102,11 @@ const schoolDocument: MeadowlarkDocument = meadowlarkDocumentFrom({ const academicWeekResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const academicWeekDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { - schoolId: '123', - weekIdentifier: '123456', - }, - + documentIdentity: [{ schoolId: '123' }, { weekIdentifier: '123456' }], documentReferences: [referenceToSchool], }; const academicWeekMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -242,6 +239,12 @@ describe('given a delete concurrent with an insert referencing the to-be-deleted it('should have still have the School document in the db - a success', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: schoolMeadowlarkId }); - expect(result.documentIdentity.schoolId).toBe('123'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "schoolId": "123", + }, + ] + `); }); }); diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Update.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Update.test.ts index 40a7f1d0..50e3842e 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Update.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/integration/locking/Update.test.ts @@ -15,6 +15,7 @@ import { newResourceInfo, DocumentUuid, TraceId, + MetaEdResourceName, } from '@edfi/meadowlark-core'; import { ClientSession, Collection, MongoClient, WithId } from 'mongodb'; import { MeadowlarkDocument, meadowlarkDocumentFrom } from '../../../src/model/MeadowlarkDocument'; @@ -60,12 +61,12 @@ const edfiSchoolDoc = { const schoolResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const schoolDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], }; const schoolMeadowlarkId = meadowlarkIdForDocumentIdentity(schoolResourceInfo, schoolDocumentInfo.documentIdentity); @@ -101,14 +102,18 @@ const schoolDocument: MeadowlarkDocument = meadowlarkDocumentFrom({ const academicWeekResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const academicWeekDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { - schoolId: '123', - weekIdentifier: '123456', - }, + documentIdentity: [ + { + schoolId: '123', + }, + { + weekIdentifier: '123456', + }, + ], documentReferences: [referenceToSchool], }; @@ -239,7 +244,13 @@ describe('given an upsert (update) concurrent with an insert referencing the to- it('should still have the initial nameOfInstitution: A School 123', async () => { const collection: Collection = getDocumentCollection(client); const result: any = await collection.findOne({ _id: schoolMeadowlarkId }); - expect(result.documentIdentity.schoolId).toBe('123'); + expect(result.documentIdentity).toMatchInlineSnapshot(` + [ + { + "schoolId": "123", + }, + ] + `); expect(result.edfiDoc.nameOfInstitution).toBe('A School 123'); }); diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/middleware/SecurityMiddleware.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/middleware/SecurityMiddleware.test.ts index f49cb24f..923c7c1d 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/middleware/SecurityMiddleware.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/middleware/SecurityMiddleware.test.ts @@ -3,9 +3,14 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { FrontendRequest, FrontendResponse, newFrontendRequest, newFrontendResponseSuccess } from '@edfi/meadowlark-core'; -import { newFrontendRequestMiddleware } from '@edfi/meadowlark-core/src/handler/FrontendRequest'; -import { newPathComponents } from '@edfi/meadowlark-core/src/model/PathComponents'; +import { + FrontendRequest, + FrontendResponse, + newFrontendRequest, + newFrontendResponseSuccess, + newFrontendRequestMiddleware, + newPathComponents, +} from '@edfi/meadowlark-core'; import { securityMiddleware } from '../../src/security/SecurityMiddleware'; import * as OwnershipSecurity from '../../src/repository/OwnershipSecurity'; diff --git a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/model/MeadowlarkDocument.test.ts b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/model/MeadowlarkDocument.test.ts index 4fc95f58..418c957e 100644 --- a/Meadowlark-js/backends/meadowlark-mongodb-backend/test/model/MeadowlarkDocument.test.ts +++ b/Meadowlark-js/backends/meadowlark-mongodb-backend/test/model/MeadowlarkDocument.test.ts @@ -10,6 +10,8 @@ import { ResourceInfo, newResourceInfo, DocumentUuid, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import { MeadowlarkDocument, meadowlarkDocumentFrom } from '../../src/model/MeadowlarkDocument'; @@ -18,11 +20,11 @@ describe('given non-superclass document info with no references', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key' }, + documentIdentity: [{ natural: 'key' }], }; const documentUuid = '3018d452-a7b7-4f1c-aa91-26ccc48cf4b8' as DocumentUuid; @@ -56,9 +58,11 @@ describe('given non-superclass document info with no references', () => { ], "createdAt": 1673827200000, "createdBy": "createdBy", - "documentIdentity": { - "natural": "key", - }, + "documentIdentity": [ + { + "natural": "key", + }, + ], "documentUuid": "3018d452-a7b7-4f1c-aa91-26ccc48cf4b8", "edfiDoc": { "edfi": "doc", @@ -80,25 +84,25 @@ describe('given non-superclass document info with references', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key' }, + documentIdentity: [{ natural: 'key' }], documentReferences: [ { - documentIdentity: { natural: 'key2' }, + documentIdentity: [{ natural: 'key2' }], isDescriptor: false, - projectName: 'projectName', - resourceName: 'resourceName', + projectName: 'projectName' as MetaEdProjectName, + resourceName: 'resourceName' as MetaEdResourceName, }, ], descriptorReferences: [ { - documentIdentity: { natural: 'key3' }, + documentIdentity: [{ natural: 'key3' }], isDescriptor: true, - projectName: 'projectName', - resourceName: 'resourceName2', + projectName: 'projectName' as MetaEdProjectName, + resourceName: 'resourceName2' as MetaEdResourceName, }, ], }; @@ -128,7 +132,7 @@ describe('given non-superclass document info with references', () => { expect(meadowlarkDocument.outboundRefs).toMatchInlineSnapshot(` [ "dfR7WrhrnYMh8lF_mnIhAN2Ur2Ji2MmlGBcSUg", - "t9LSXi1nFRmwyLTPkxiA9RG1ItGTlsxaGzTwKA", + "7tIjvqhWCIKdHjfSkxiA9RG1ItGTlsxaGzTwKA", ] `); }); @@ -139,12 +143,16 @@ describe('given superclass document info', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'key' }, - superclassInfo: { documentIdentity: { natural: 'key2' }, projectName: 'projectName', resourceName: 'resourceName' }, + documentIdentity: [{ natural: 'key' }], + superclassInfo: { + documentIdentity: [{ natural: 'key2' }], + projectName: 'projectName' as MetaEdProjectName, + resourceName: 'resourceName' as MetaEdResourceName, + }, }; const documentUuid = '3018d452-a7b7-4f1c-aa91-26ccc48cf4b8' as DocumentUuid; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); diff --git a/Meadowlark-js/backends/meadowlark-opensearch-backend/test/QueryOpensearch.test.ts b/Meadowlark-js/backends/meadowlark-opensearch-backend/test/QueryOpensearch.test.ts index 4a786060..07a4a20e 100644 --- a/Meadowlark-js/backends/meadowlark-opensearch-backend/test/QueryOpensearch.test.ts +++ b/Meadowlark-js/backends/meadowlark-opensearch-backend/test/QueryOpensearch.test.ts @@ -12,16 +12,19 @@ import { AuthorizationStrategy, TraceId, ResourceInfo, + MetaEdProjectName, + MetaEdResourceName, + SemVer, } from '@edfi/meadowlark-core'; import { indexFromResourceInfo, queryDocuments } from '../src/repository/QueryOpensearch'; const mock = new Mock(); const resourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; @@ -70,10 +73,10 @@ describe('when querying for students', () => { clientId = 'hi', ): QueryRequest => ({ resourceInfo: { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }, queryParameters, diff --git a/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/QueryOpensearch.test.ts b/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/QueryOpensearch.test.ts index 9ac46338..66ef4af0 100644 --- a/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/QueryOpensearch.test.ts +++ b/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/QueryOpensearch.test.ts @@ -14,9 +14,14 @@ import { AuthorizationStrategy, DeleteRequest, DeleteResult, + DocumentUuid, + MeadowlarkId, + TraceId, + generateDocumentUuid, + MetaEdProjectName, + MetaEdResourceName, + SemVer, } from '@edfi/meadowlark-core'; -import { DocumentUuid, MeadowlarkId, TraceId } from '@edfi/meadowlark-core/src/model/IdTypes'; -import { generateDocumentUuid } from '@edfi/meadowlark-core/src/model/DocumentIdentity'; import { Client } from '@opensearch-project/opensearch/.'; import { queryDocuments } from '../../src/repository/QueryOpensearch'; import { afterDeleteDocumentById, afterUpsertDocument } from '../../src/repository/UpdateOpensearch'; @@ -25,10 +30,10 @@ import { getNewTestClient } from '../setup/OpenSearchSetupEnvironment'; jest.setTimeout(120_000); const resourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; @@ -130,7 +135,7 @@ describe('When querying for documents', () => { describe('when querying with wrong resource info', () => { it('should return invalid query', async () => { const invalidResourceInfo = { ...resourceInfo }; - invalidResourceInfo.projectName = 'wrong-project'; + invalidResourceInfo.projectName = 'wrong-project' as MetaEdProjectName; const result = await queryDocuments(setupQueryRequest({}, {}, invalidResourceInfo), client); expect(result.response).toEqual('QUERY_FAILURE_INDEX_NOT_FOUND'); @@ -237,10 +242,10 @@ describe('When querying for documents', () => { describe('when querying for descriptor', () => { const descriptorResourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'countryDescriptor', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'countryDescriptor' as MetaEdResourceName, isDescriptor: true, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; diff --git a/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/UpdateOpensearch.test.ts b/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/UpdateOpensearch.test.ts index 94a329a5..6c2ae529 100644 --- a/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/UpdateOpensearch.test.ts +++ b/Meadowlark-js/backends/meadowlark-opensearch-backend/test/integration/UpdateOpensearch.test.ts @@ -8,11 +8,14 @@ import { DeleteResult, DocumentUuid, MeadowlarkId, + MetaEdProjectName, + MetaEdResourceName, newSecurity, NoDocumentInfo, PaginationParameters, QueryRequest, ResourceInfo, + SemVer, TraceId, UpdateRequest, UpdateResult, @@ -31,10 +34,10 @@ import { getNewTestClient } from '../setup/OpenSearchSetupEnvironment'; jest.setTimeout(120_000); const resourceInfo: ResourceInfo = { - projectName: 'ed-fi', - resourceName: 'student', + projectName: 'ed-fi' as MetaEdProjectName, + resourceName: 'student' as MetaEdResourceName, isDescriptor: false, - resourceVersion: '3.3.1-b', + resourceVersion: '3.3.1-b' as SemVer, allowIdentityUpdates: false, }; diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/src/model/MeadowlarkDocument.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/src/model/MeadowlarkDocument.ts index 74e59c01..639d6a5b 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/src/model/MeadowlarkDocument.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/src/model/MeadowlarkDocument.ts @@ -3,7 +3,14 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { DocumentIdentity, MeadowlarkId, NoDocumentIdentity, DocumentUuid } from '@edfi/meadowlark-core'; +import type { + DocumentIdentity, + MeadowlarkId, + DocumentUuid, + MetaEdProjectName, + MetaEdResourceName, + SemVer, +} from '@edfi/meadowlark-core'; export interface MeadowlarkDocumentId { /** @@ -40,19 +47,19 @@ export interface MeadowlarkDocument extends MeadowlarkDocumentId { /** * The MetaEd project name the API document resource is defined in e.g. "EdFi" for a data standard entity. */ - project_name: string; + project_name: MetaEdProjectName; /** * The name of the resource. Typically, this is the same as the corresponding MetaEd entity name. However, * there are exceptions, for example descriptors have a "Descriptor" suffix on their resource name. */ - resource_name: string; + resource_name: MetaEdResourceName; /** * The resource version as a string. This is the same as the MetaEd project version * the entity is defined in e.g. "3.3.1-b" for a 3.3b data standard entity. */ - resource_version: string; + resource_version: SemVer; /** * The Ed-Fi ODS/API document itself. @@ -90,12 +97,12 @@ export interface MeadowlarkDocument extends MeadowlarkDocumentId { */ export function newMeadowlarkDocument(): MeadowlarkDocument { return { - meadowlark_id: undefined as unknown as MeadowlarkId, - document_uuid: undefined as unknown as DocumentUuid, - document_identity: NoDocumentIdentity, - project_name: '', - resource_name: '', - resource_version: '', + meadowlark_id: '' as MeadowlarkId, + document_uuid: '' as DocumentUuid, + document_identity: [], + project_name: '' as MetaEdProjectName, + resource_name: '' as MetaEdResourceName, + resource_version: '' as SemVer, edfi_doc: null, validated: false, is_descriptor: false, diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/src/repository/authorization/GetAllAuthorizationClients.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/src/repository/authorization/GetAllAuthorizationClients.ts index b83b544e..21619915 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/src/repository/authorization/GetAllAuthorizationClients.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/src/repository/authorization/GetAllAuthorizationClients.ts @@ -8,8 +8,9 @@ export async function getAllAuthorizationClientDocuments( client: PoolClient, ): Promise { try { - const getAllAuthorizationClientsResult: GetAllAuthorizationClientsResult = - await getAuthorizationClientDocumentList(client); + const getAllAuthorizationClientsResult: GetAllAuthorizationClientsResult = await getAuthorizationClientDocumentList( + client, + ); return getAllAuthorizationClientsResult; } catch (e) { diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Delete.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Delete.test.ts index dd26a48f..d2f510c4 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Delete.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Delete.test.ts @@ -23,6 +23,8 @@ import { TraceId, generateDocumentUuid, UpsertResult, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import type { PoolClient } from 'pg'; import { deleteAll, retrieveReferencesByMeadowlarkIdSql } from './TestHelper'; @@ -61,7 +63,7 @@ describe('given the delete of a non-existent document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentUuid = generateDocumentUuid(); @@ -92,11 +94,11 @@ describe('given the delete of an existing document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete2' }, + documentIdentity: [{ natural: 'delete2' }], }; const documentUuid = generateDocumentUuid(); const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -141,12 +143,12 @@ describe('given an delete of a document referenced by an existing document with const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete5' }, + documentIdentity: [{ natural: 'delete5' }], }; const referencedDocumentId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -162,11 +164,11 @@ describe('given an delete of a document referenced by an existing document with const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete6' }, + documentIdentity: [{ natural: 'delete6' }], documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -218,7 +220,7 @@ describe('given an delete of a document referenced by an existing document with it('should still have the referenced document in the db', async () => { const docResult: MeadowlarkDocument = await findDocumentByMeadowlarkId(client, referencedDocumentId); - expect(docResult.document_identity.natural).toBe('delete5'); + expect(docResult.document_identity[0].natural).toBe('delete5'); }); }); @@ -228,12 +230,12 @@ describe('given an delete of a document with an outbound reference only, with va const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete15' }, + documentIdentity: [{ natural: 'delete15' }], }; const referencedDocumentId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -249,11 +251,11 @@ describe('given an delete of a document with an outbound reference only, with va const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete16' }, + documentIdentity: [{ natural: 'delete16' }], documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -332,11 +334,11 @@ describe('given an delete of a document referenced by an existing document with const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete5' }, + documentIdentity: [{ natural: 'delete5' }], }; const referencedDocumentId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -352,11 +354,11 @@ describe('given an delete of a document referenced by an existing document with const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'delete6' }, + documentIdentity: [{ natural: 'delete6' }], documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -425,20 +427,20 @@ describe('given the delete of a subclass document referenced by an existing docu const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, }; const referencedDocumentId = meadowlarkIdForDocumentIdentity( @@ -455,11 +457,11 @@ describe('given the delete of a subclass document referenced by an existing docu const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'delete6' }, + documentIdentity: [{ week: 'delete6' }], documentReferences: [referenceAsSuperclass], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -514,6 +516,6 @@ describe('given the delete of a subclass document referenced by an existing docu it('should still have the referenced document in the db', async () => { const result: MeadowlarkDocument = await findDocumentByMeadowlarkId(client, referencedDocumentId); - expect(result.document_identity.schoolId).toBe('123'); + expect(result.document_identity[0].schoolId).toBe('123'); }); }); diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/OwnershipSecurity.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/OwnershipSecurity.test.ts index fd67e8f8..d9557873 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/OwnershipSecurity.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/OwnershipSecurity.test.ts @@ -16,9 +16,10 @@ import { DocumentUuid, UpsertRequest, TraceId, + newFrontendRequestMiddleware, + newPathComponents, + MetaEdResourceName, } from '@edfi/meadowlark-core'; -import { newFrontendRequestMiddleware } from '@edfi/meadowlark-core/src/handler/FrontendRequest'; -import { newPathComponents } from '@edfi/meadowlark-core/src/model/PathComponents'; import type { PoolClient } from 'pg'; import { getSharedClient, resetSharedClient } from '../../src/repository/Db'; import { deleteAll } from './TestHelper'; @@ -97,11 +98,11 @@ describe('given the getById of a document owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -156,11 +157,11 @@ describe('given the getById of a document not owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Read.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Read.test.ts index 69df8859..10a0f54d 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Read.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Read.test.ts @@ -18,6 +18,7 @@ import { DocumentUuid, TraceId, MeadowlarkId, + MetaEdResourceName, } from '@edfi/meadowlark-core'; import type { PoolClient } from 'pg'; import { resetSharedClient, getSharedClient } from '../../src/repository/Db'; @@ -50,11 +51,11 @@ describe('given the get of a non-existent document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get1' }, + documentIdentity: [{ natural: 'get1' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); const documentUuid = 'ffb6ea15-fa93-4389-89a8-1428fb617490' as DocumentUuid; @@ -88,11 +89,11 @@ describe('given the get of an existing document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], requestTimestamp: 1000, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/SecurityMiddleware.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/SecurityMiddleware.test.ts index bcead7a9..d01f405e 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/SecurityMiddleware.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/SecurityMiddleware.test.ts @@ -17,9 +17,10 @@ import { DocumentUuid, UpsertRequest, TraceId, + newFrontendRequestMiddleware, + newPathComponents, + MetaEdResourceName, } from '@edfi/meadowlark-core'; -import { newFrontendRequestMiddleware } from '@edfi/meadowlark-core/src/handler/FrontendRequest'; -import { newPathComponents } from '@edfi/meadowlark-core/src/model/PathComponents'; import type { PoolClient } from 'pg'; import { resetSharedClient, getSharedClient } from '../../src/repository/Db'; import { securityMiddleware } from '../../src/security/SecurityMiddleware'; @@ -97,11 +98,11 @@ describe('given the getById of a document owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -155,11 +156,11 @@ describe('given the getById of a document not owned by the requestor', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'get2' }, + documentIdentity: [{ natural: 'get2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Update.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Update.test.ts index 10d31caf..0e2be266 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Update.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Update.test.ts @@ -23,6 +23,8 @@ import { TraceId, UpsertRequest, UpsertResult, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import type { PoolClient } from 'pg'; import { resetSharedClient, getSharedClient } from '../../src/repository/Db'; @@ -76,11 +78,11 @@ describe('given the update of a non-existent document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update1' }, + documentIdentity: [{ natural: 'update1' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -124,11 +126,11 @@ describe('given the update of an existing document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update2' }, + documentIdentity: [{ natural: 'update2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -177,7 +179,7 @@ describe('given the update of an existing document', () => { it('should have updated the document in the db', async () => { const result: MeadowlarkDocument = await findDocumentByDocumentUuid(client, resultDocumentUuid); - expect(result.document_identity.natural).toBe('update2'); + expect(result.document_identity[0].natural).toBe('update2'); expect(result.edfi_doc.changeToDoc).toBe(true); }); @@ -194,11 +196,11 @@ describe('given the attempted update of an existing document with a stale reques const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update2' }, + documentIdentity: [{ natural: 'update2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -247,7 +249,7 @@ describe('given the attempted update of an existing document with a stale reques it('should not have updated the document in the db', async () => { const result: MeadowlarkDocument = await findDocumentByDocumentUuid(client, resultDocumentUuid); - expect(result.document_identity.natural).toBe('update2'); + expect(result.document_identity[0].natural).toBe('update2'); expect(result.edfi_doc.changeToDoc).toBeUndefined(); }); @@ -264,11 +266,11 @@ describe('given an update of a document that references a non-existent document const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update4' }, + documentIdentity: [{ natural: 'update4' }], requestTimestamp, }; @@ -280,7 +282,7 @@ describe('given an update of a document that references a non-existent document const invalidReference: DocumentReference = { projectName: documentWithReferencesResourceInfo.projectName, resourceName: documentWithReferencesResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], isDescriptor: false, }; @@ -331,7 +333,7 @@ describe('given an update of a document that references a non-existent document const docResult: MeadowlarkDocument = await findDocumentByMeadowlarkId(client, documentWithReferencesId); const refsResult: any = await client.query(retrieveReferencesByMeadowlarkIdSql(documentWithReferencesId)); const outboundRefs = refsResult.rows.map((ref) => ref.referenced_meadowlark_id); - expect(docResult.document_identity.natural).toBe('update4'); + expect(docResult.document_identity[0].natural).toBe('update4'); expect(outboundRefs).toMatchInlineSnapshot(` [ "QtykK4uDYZK7VOChNxRsMDtOcAu6a0oe9ozl2Q", @@ -352,11 +354,11 @@ describe('given an update of a document that references an existing document wit const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update5' }, + documentIdentity: [{ natural: 'update5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -372,11 +374,11 @@ describe('given an update of a document that references an existing document wit const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update6' }, + documentIdentity: [{ natural: 'update6' }], requestTimestamp, }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -444,7 +446,7 @@ describe('given an update of a document that references an existing document wit const refsResult: any = await client.query(retrieveReferencesByMeadowlarkIdSql(documentWithReferencesId)); const outboundRefs = refsResult.rows.map((ref) => ref.referenced_meadowlark_id); - expect(docResult.document_identity.natural).toBe('update6'); + expect(docResult.document_identity[0].natural).toBe('update6'); expect(outboundRefs).toMatchInlineSnapshot(` [ "Qw5FvPdKxAXWnGghsMh3I61yLFfls4Q949Fk2w", @@ -465,11 +467,11 @@ describe('given an update of a document with one existing and one non-existent r const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update7' }, + documentIdentity: [{ natural: 'update7' }], requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -487,17 +489,17 @@ describe('given an update of a document with one existing and one non-existent r const invalidReference: DocumentReference = { projectName: referencedResourceInfo.projectName, resourceName: referencedResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], isDescriptor: false, }; const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update8' }, + documentIdentity: [{ natural: 'update8' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -560,9 +562,11 @@ describe('given an update of a document with one existing and one non-existent r "error": { "failures": [ { - "identity": { - "natural": "not a valid reference", - }, + "identity": [ + { + "natural": "not a valid reference", + }, + ], "resourceName": "School", }, ], @@ -586,20 +590,20 @@ describe('given an update of a subclass document referenced by an existing docum const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, requestTimestamp, }; @@ -617,11 +621,12 @@ describe('given an update of a subclass document referenced by an existing docum const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'update6' }, + documentIdentity: [{ week: 'update6' }], + requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesId = meadowlarkIdForDocumentIdentity( @@ -704,12 +709,12 @@ describe('given the update of an existing document changing meadowlarkId with al const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, allowIdentityUpdates: false, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update 2' }, + documentIdentity: [{ natural: 'update 2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -724,7 +729,8 @@ describe('given the update of an existing document changing meadowlarkId with al }; const documentInfoUpdated: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'updated identity' }, + documentIdentity: [{ natural: 'updated identity' }], + requestTimestamp: requestTimestamp + 1, }; const meadowlarkIdUpdated = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoUpdated.documentIdentity); @@ -763,11 +769,11 @@ describe('given the update of an existing document changing meadowlarkId with al const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update5' }, + documentIdentity: [{ natural: 'update5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -783,19 +789,21 @@ describe('given the update of an existing document changing meadowlarkId with al const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School Identity update', + resourceName: 'School Identity update' as MetaEdResourceName, allowIdentityUpdates: true, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'updated identity allow identity updates' }, + documentIdentity: [{ natural: 'updated identity allow identity updates' }], + documentReferences: [validReference], requestTimestamp, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); const documentInfoUpdated: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update 2' }, + documentIdentity: [{ natural: 'update 2' }], + documentReferences: [validReference], requestTimestamp: requestTimestamp + 1, }; @@ -882,12 +890,13 @@ describe('given the attempted update of an existing document with a stale reques const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School Identity update', + resourceName: 'School Identity update' as MetaEdResourceName, allowIdentityUpdates: true, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'update2' }, + documentIdentity: [{ natural: 'update2' }], + requestTimestamp, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -939,7 +948,7 @@ describe('given the attempted update of an existing document with a stale reques it('should not have updated the document in the db', async () => { const result: MeadowlarkDocument = await findDocumentByMeadowlarkId(client, meadowlarkId); - expect(result.document_identity.natural).toBe('update2'); + expect(result.document_identity[0].natural).toBe('update2'); expect(result.edfi_doc.natural).toBe('key'); }); diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Upsert.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Upsert.test.ts index 4b98845f..76a70373 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Upsert.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/Upsert.test.ts @@ -17,9 +17,10 @@ import { SuperclassInfo, newSuperclassInfo, UpsertResult, - DocumentIdentity, MeadowlarkId, TraceId, + MetaEdResourceName, + MetaEdProjectName, } from '@edfi/meadowlark-core'; import type { PoolClient } from 'pg'; import { getSharedClient, resetSharedClient } from '../../src/repository/Db'; @@ -46,11 +47,11 @@ describe('given the upsert of a new document', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert1' }, + documentIdentity: [{ natural: 'upsert1' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -95,11 +96,11 @@ describe('given the upsert of an existing document three times', () => { const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfoBase: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert2' }, + documentIdentity: [{ natural: 'upsert2' }], }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfoBase.documentIdentity); @@ -163,11 +164,12 @@ describe('given an upsert of an existing document that changes the edfiDoc', () const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert3' }, + documentIdentity: [{ natural: 'upsert3' }], + requestTimestamp, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -212,11 +214,11 @@ describe('given an attempted upsert of an existing document with a stale request const resourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const documentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert3' }, + documentIdentity: [{ natural: 'upsert3' }], requestTimestamp, }; const meadowlarkId = meadowlarkIdForDocumentIdentity(resourceInfo, documentInfo.documentIdentity); @@ -264,11 +266,11 @@ describe('given an upsert of a new document that references a non-existent docum const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert4' }, + documentIdentity: [{ natural: 'upsert4' }], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -279,7 +281,8 @@ describe('given an upsert of a new document that references a non-existent docum const invalidReference: DocumentReference = { projectName: documentWithReferencesResourceInfo.projectName, resourceName: documentWithReferencesResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], + isDescriptor: false, }; documentWithReferencesInfo.documentReferences = [invalidReference]; @@ -312,7 +315,7 @@ describe('given an upsert of a new document that references a non-existent docum it('should have inserted the document with an invalid reference in the db', async () => { const result: MeadowlarkDocument = await findDocumentByMeadowlarkId(client, documentWithReferencesMeadowlarkId); - expect(result.document_identity.natural).toBe('upsert4'); + expect(result.document_identity[0].natural).toBe('upsert4'); }); }); @@ -322,11 +325,11 @@ describe('given an upsert of a new document that references an existing document const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert5' }, + documentIdentity: [{ natural: 'upsert5' }], }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( referencedResourceInfo, @@ -342,11 +345,12 @@ describe('given an upsert of a new document that references an existing document const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert6' }, + documentIdentity: [{ natural: 'upsert6' }], + documentReferences: [validReference], }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -393,7 +397,7 @@ describe('given an upsert of a new document that references an existing document it('should have inserted the document with a valid reference in the db', async () => { const result: MeadowlarkDocument = await findDocumentByMeadowlarkId(client, documentWithReferencesMeadowlarkId); - expect(result.document_identity.natural).toBe('upsert6'); + expect(result.document_identity[0].natural).toBe('upsert6'); }); }); @@ -403,11 +407,12 @@ describe('given an upsert of a new document with one existing and one non-existe const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert7' }, + documentIdentity: [{ natural: 'upsert7' }], + requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -425,17 +430,18 @@ describe('given an upsert of a new document with one existing and one non-existe const invalidReference: DocumentReference = { projectName: referencedResourceInfo.projectName, resourceName: referencedResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], + isDescriptor: false, }; const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert8' }, + documentIdentity: [{ natural: 'upsert8' }], documentReferences: [validReference, invalidReference], requestTimestamp: requestTimestamp + 1, }; @@ -484,9 +490,11 @@ describe('given an upsert of a new document with one existing and one non-existe "error": { "failures": [ { - "identity": { - "natural": "not a valid reference", - }, + "identity": [ + { + "natural": "not a valid reference", + }, + ], "resourceName": "School", }, ], @@ -506,22 +514,20 @@ describe('given an upsert of a subclass document when a different subclass has t let client; let upsertResult; - const documentIdentity: DocumentIdentity = { educationOrganizationId: '123' }; - const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const existingSubclassResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const existingSubclassDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, }; const existingSubclassMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -531,11 +537,11 @@ describe('given an upsert of a subclass document when a different subclass has t const sameSuperclassIdentityResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'LocalEducationAgency', + resourceName: 'LocalEducationAgency' as MetaEdResourceName, }; const sameSuperclassIdentityDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { localEducationAgencyId: '123' }, + documentIdentity: [{ localEducationAgencyId: '123' }], superclassInfo, }; const sameSuperclassIdentityMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -597,11 +603,11 @@ describe('given an update of a document that references a non-existent document const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert4' }, + documentIdentity: [{ natural: 'upsert4' }], requestTimestamp, }; @@ -613,7 +619,8 @@ describe('given an update of a document that references a non-existent document const invalidReference: DocumentReference = { projectName: documentWithReferencesResourceInfo.projectName, resourceName: documentWithReferencesResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], + isDescriptor: false, }; @@ -661,7 +668,7 @@ describe('given an update of a document that references a non-existent document const refsResult: any = await client.query(retrieveReferencesByMeadowlarkIdSql(documentWithReferencesMeadowlarkId)); const outboundRefs = refsResult.rows.map((ref) => ref.referenced_meadowlark_id); - expect(docResult.document_identity.natural).toBe('upsert4'); + expect(docResult.document_identity[0].natural).toBe('upsert4'); expect(outboundRefs).toMatchInlineSnapshot(` [ "QtykK4uDYZK7VOChNxRsMDtOcAu6a0oe9ozl2Q", @@ -676,11 +683,12 @@ describe('given an update of a document that references an existing document wit const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert5' }, + documentIdentity: [{ natural: 'upsert5' }], + requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -697,11 +705,12 @@ describe('given an update of a document that references an existing document wit const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert6' }, + documentIdentity: [{ natural: 'upsert6' }], + requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -765,7 +774,7 @@ describe('given an update of a document that references an existing document wit const outboundRefs = refsResult.rows.map((ref) => ref.referenced_meadowlark_id); - expect(docResult.document_identity.natural).toBe('upsert6'); + expect(docResult.document_identity[0].natural).toBe('upsert6'); expect(outboundRefs).toMatchInlineSnapshot(` [ "Qw5FvPdKxAXWnGghUWv5LKuA2cXaJPWJGJRDBQ", @@ -780,11 +789,11 @@ describe('given an update of a document with one existing and one non-existent r const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert7' }, + documentIdentity: [{ natural: 'upsert7' }], requestTimestamp, }; const referencedMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -802,17 +811,18 @@ describe('given an update of a document with one existing and one non-existent r const invalidReference: DocumentReference = { projectName: referencedResourceInfo.projectName, resourceName: referencedResourceInfo.resourceName, - documentIdentity: { natural: 'not a valid reference' }, + documentIdentity: [{ natural: 'not a valid reference' }], + isDescriptor: false, }; const documentWithReferencesResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferencesInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { natural: 'upsert8' }, + documentIdentity: [{ natural: 'upsert8' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesMeadowlarkId: MeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -873,9 +883,11 @@ describe('given an update of a document with one existing and one non-existent r "error": { "failures": [ { - "identity": { - "natural": "not a valid reference", - }, + "identity": [ + { + "natural": "not a valid reference", + }, + ], "resourceName": "School", }, ], @@ -905,20 +917,20 @@ describe('given an update of a subclass document referenced by an existing docum const referencedResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', - projectName: 'Ed-Fi', + resourceName: 'School' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const superclassInfo: SuperclassInfo = { ...newSuperclassInfo(), - documentIdentity: { educationOrganizationId: '123' }, - resourceName: 'EducationOrganization', - projectName: 'Ed-Fi', + documentIdentity: [{ educationOrganizationId: '123' }], + resourceName: 'EducationOrganization' as MetaEdResourceName, + projectName: 'Ed-Fi' as MetaEdProjectName, }; const referencedDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], superclassInfo, requestTimestamp, }; @@ -936,11 +948,11 @@ describe('given an update of a subclass document referenced by an existing docum const documentWithReferenceResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const documentWithReferenceDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { week: 'update6' }, + documentIdentity: [{ week: 'update6' }], requestTimestamp: requestTimestamp + 1, }; const documentWithReferencesMeadowlarkId = meadowlarkIdForDocumentIdentity( diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/locking/Delete.test.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/locking/Delete.test.ts index fb3bf1bf..ad322423 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/locking/Delete.test.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/integration/locking/Delete.test.ts @@ -22,6 +22,7 @@ import { MeadowlarkId, TraceId, DocumentUuid, + MetaEdResourceName, } from '@edfi/meadowlark-core'; import { PoolClient } from 'pg'; import { getSharedClient, resetSharedClient } from '../../../src/repository/Db'; @@ -53,12 +54,12 @@ const newUpsertRequest = (): UpsertRequest => ({ const schoolResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'School', + resourceName: 'School' as MetaEdResourceName, }; const schoolDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { schoolId: '123' }, + documentIdentity: [{ schoolId: '123' }], }; const schoolMeadowlarkId = meadowlarkIdForDocumentIdentity(schoolResourceInfo, schoolDocumentInfo.documentIdentity); @@ -71,15 +72,11 @@ const referenceToSchool: DocumentReference = { const academicWeekResourceInfo: ResourceInfo = { ...newResourceInfo(), - resourceName: 'AcademicWeek', + resourceName: 'AcademicWeek' as MetaEdResourceName, }; const academicWeekDocumentInfo: DocumentInfo = { ...newDocumentInfo(), - documentIdentity: { - schoolId: '123', - weekIdentifier: '123456', - }, - + documentIdentity: [{ schoolId: '123' }, { weekIdentifier: '123456' }], documentReferences: [referenceToSchool], }; const academicWeekMeadowlarkId = meadowlarkIdForDocumentIdentity( @@ -193,7 +190,7 @@ describe('given a delete concurrent with an insert referencing the to-be-deleted it('should have still have the School document in the db - a success', async () => { const docResult: MeadowlarkDocument = await findDocumentByMeadowlarkId(insertClient, schoolMeadowlarkId); - expect(docResult.document_identity.schoolId).toBe('123'); + expect(docResult.document_identity[0].schoolId).toBe('123'); }); }); diff --git a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/setup/Config.ts b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/setup/Config.ts index eb5c0dcd..a3d0877e 100644 --- a/Meadowlark-js/backends/meadowlark-postgresql-backend/test/setup/Config.ts +++ b/Meadowlark-js/backends/meadowlark-postgresql-backend/test/setup/Config.ts @@ -9,9 +9,17 @@ import { CachedEnvironmentConfigProvider, Config } from '@edfi/meadowlark-utilit import { join } from 'path'; export const setupConfigForIntegration = async () => { - const path = join(process.cwd(), '.env'); + // First look for .env file paired with this Config.ts file + let path = join(__dirname, '.env'); + + if (!existsSync(path)) { + path = join(process.cwd(), '.env'); + } + if (!existsSync(path)) { - throw new Error('Cannot run integration tests because there is no .env file in the repository root directory.'); + // eslint-disable-next-line no-console + console.error(`Cannot run integration tests because there is no .env file in '${path}'`); + process.exit(-1); } dotenv.config({ path }); diff --git a/Meadowlark-js/package-lock.json b/Meadowlark-js/package-lock.json index 1e934fac..4b7a9506 100644 --- a/Meadowlark-js/package-lock.json +++ b/Meadowlark-js/package-lock.json @@ -35,7 +35,7 @@ "eslint-plugin-import": "^2.28.1", "eslint-plugin-jasmine": "4.1.3", "eslint-plugin-json": "3.1.0", - "eslint-plugin-prettier": "5.0.0", + "eslint-plugin-prettier": "4.2.1", "jest": "^29.7.0", "jest-environment-node": "^29.7.0", "kafkajs": "^2.2.4", @@ -43,7 +43,7 @@ "mongodb": "^5.9.0", "pg": "^8.11.3", "pg-format": "^1.0.4", - "prettier": "3.0.3", + "prettier": "2.8.8", "rimraf": "^5.0.5", "ts-jest": "^29.1.1", "ts-node": "10.9.1", @@ -127,9 +127,8 @@ }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -148,14 +147,12 @@ }, "node_modules/@assemblyscript/loader": { "version": "0.19.23", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.19.23.tgz", - "integrity": "sha512-ulkCYfFbYj01ie1MDOyxv2F6SpRN1TOj7fQxbP07D6HmeR+gr2JLSmINKjga2emB+b1L2KGrFKBTc+e00p54nw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@aws-crypto/crc32": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/util": "^3.0.0", @@ -165,14 +162,12 @@ }, "node_modules/@aws-crypto/crc32/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", "optional": true }, "node_modules/@aws-crypto/ie11-detection": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^1.11.1" @@ -180,14 +175,12 @@ }, "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", "optional": true }, "node_modules/@aws-crypto/sha256-browser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", @@ -202,14 +195,12 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", "optional": true }, "node_modules/@aws-crypto/sha256-js": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/util": "^3.0.0", @@ -219,14 +210,12 @@ }, "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", "optional": true }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^1.11.1" @@ -234,14 +223,12 @@ }, "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", "optional": true }, "node_modules/@aws-crypto/util": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "^3.222.0", @@ -251,14 +238,12 @@ }, "node_modules/@aws-crypto/util/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD", "optional": true }, "node_modules/@aws-sdk/client-cognito-identity": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.363.0.tgz", - "integrity": "sha512-tsJzgBSCpna85IVsuS7FBIK9wkSl7fs8TJ/QzapIgu8rKss0ySHVO6TeMVAdw2BvaQl7CxU9c3PosjhLWHu6KQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", @@ -304,8 +289,7 @@ }, "node_modules/@aws-sdk/client-sso": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.363.0.tgz", - "integrity": "sha512-PZ+HfKSgS4hlMnJzG+Ev8/mgHd/b/ETlJWPSWjC/f2NwVoBQkBnqHjdyEx7QjF6nksJozcVh5Q+kkYLKc/QwBQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", @@ -348,8 +332,7 @@ }, "node_modules/@aws-sdk/client-sso-oidc": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.363.0.tgz", - "integrity": "sha512-V3Ebiq/zNtDS/O92HUWGBa7MY59RYSsqWd+E0XrXv6VYTA00RlMTbNcseivNgp2UghOgB9a20Nkz6EqAeIN+RQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", @@ -392,8 +375,7 @@ }, "node_modules/@aws-sdk/client-sts": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.363.0.tgz", - "integrity": "sha512-0jj14WvBPJQ8xr72cL0mhlmQ90tF0O0wqXwSbtog6PsC8+KDE6Yf+WsxsumyI8E5O8u3eYijBL+KdqG07F/y/w==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", @@ -440,8 +422,7 @@ }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.363.0.tgz", - "integrity": "sha512-5x42JvqEsBUrm6/qdf0WWe4mlmJjPItxamQhRjuOzeQD/BxsA2W5VS/7n0Ws0e27DNhlnUErcIJd+bBy6j1fqA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.363.0", @@ -456,8 +437,7 @@ }, "node_modules/@aws-sdk/credential-provider-env": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.363.0.tgz", - "integrity": "sha512-VAQ3zITT2Q0acht0HezouYnMFKZ2vIOa20X4zQA3WI0HfaP4D6ga6KaenbDcb/4VFiqfqiRHfdyXHP0ThcDRMA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -471,8 +451,7 @@ }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.363.0.tgz", - "integrity": "sha512-ZYN+INoqyX5FVC3rqUxB6O8nOWkr0gHRRBm1suoOlmuFJ/WSlW/uUGthRBY5x1AQQnBF8cpdlxZzGHd41lFVNw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.363.0", @@ -492,8 +471,7 @@ }, "node_modules/@aws-sdk/credential-provider-node": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.363.0.tgz", - "integrity": "sha512-C1qXFIN2yMxD6pGgug0vR1UhScOki6VqdzuBHzXZAGu7MOjvgHNdscEcb3CpWnITHaPL2ztkiw75T1sZ7oIgQg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/credential-provider-env": "3.363.0", @@ -514,8 +492,7 @@ }, "node_modules/@aws-sdk/credential-provider-process": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.363.0.tgz", - "integrity": "sha512-fOKAINU7Rtj2T8pP13GdCt+u0Ml3gYynp8ki+1jMZIQ+Ju/MdDOqZpKMFKicMn3Z1ttUOgqr+grUdus6z8ceBQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -530,8 +507,7 @@ }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.363.0.tgz", - "integrity": "sha512-5RUZ5oM0lwZSo3EehT0dXggOjgtxFogpT3cZvoLGtIwrPBvm8jOQPXQUlaqCj10ThF1sYltEyukz/ovtDwYGew==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/client-sso": "3.363.0", @@ -548,8 +524,7 @@ }, "node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.363.0.tgz", - "integrity": "sha512-Z6w7fjgy79pAax580wdixbStQw10xfyZ+hOYLcPudoYFKjoNx0NQBejg5SwBzCF/HQL23Ksm9kDfbXDX9fkPhA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -563,8 +538,7 @@ }, "node_modules/@aws-sdk/credential-providers": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.363.0.tgz", - "integrity": "sha512-hVa1DdYasnLud2EKjDAlDHiV/+H/Zq52chHU00c/R8XwPu1s0kZX3NMmlt0D2HhYqC1mUwtdmE58Jra2POviQQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/client-cognito-identity": "3.363.0", @@ -589,8 +563,7 @@ }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.363.0.tgz", - "integrity": "sha512-FobpclDCf5Y1ueyJDmb9MqguAdPssNMlnqWQpujhYVABq69KHu73fSCWSauFPUrw7YOpV8kG1uagDF0POSxHzA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -604,8 +577,7 @@ }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.363.0.tgz", - "integrity": "sha512-SSGgthScYnFGTOw8EzbkvquqweFmvn7uJihkpFekbtBNGC/jGOGO+8ziHjTQ8t/iI/YKubEwv+LMi0f77HKSEg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -618,8 +590,7 @@ }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.363.0.tgz", - "integrity": "sha512-MWD/57QgI/N7fG8rtzDTUdSqNpYohQfgj9XCFAoVeI/bU4usrkOrew43L4smJG4XrDxlNT8lSJlDtd64tuiUZA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -633,8 +604,7 @@ }, "node_modules/@aws-sdk/middleware-sdk-sts": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.363.0.tgz", - "integrity": "sha512-1yy2Ac50FO8BrODaw5bPWvVrRhaVLqXTFH6iHB+dJLPUkwtY5zLM3Mp+9Ilm7kME+r7oIB1wuO6ZB1Lf4ZszIw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/middleware-signing": "3.363.0", @@ -648,8 +618,7 @@ }, "node_modules/@aws-sdk/middleware-signing": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.363.0.tgz", - "integrity": "sha512-/7qia715pt9JKYIPDGu22WmdZxD8cfF/5xB+1kmILg7ZtjO0pPuTaCNJ7xiIuFd7Dn7JXp5lop08anX/GOhNRQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -666,8 +635,7 @@ }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.363.0.tgz", - "integrity": "sha512-ri8YaQvXP6odteVTMfxPqFR26Q0h9ejtqhUDv47P34FaKXedEM4nC6ix6o+5FEYj6l8syGyktftZ5O70NoEhug==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -682,8 +650,7 @@ }, "node_modules/@aws-sdk/token-providers": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.363.0.tgz", - "integrity": "sha512-6+0aJ1zugNgsMmhTtW2LBWxOVSaXCUk2q3xyTchSXkNzallYaRiZMRkieW+pKNntnu0g5H1T0zyfCO0tbXwxEA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/client-sso-oidc": "3.363.0", @@ -699,8 +666,7 @@ }, "node_modules/@aws-sdk/types": { "version": "3.357.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.357.0.tgz", - "integrity": "sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -711,8 +677,7 @@ }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.357.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.357.0.tgz", - "integrity": "sha512-XHKyS5JClT9su9hDif715jpZiWHQF9gKZXER8tW0gOizU3R9cyWc9EsJ2BRhFNhi7nt/JF/CLUEc5qDx3ETbUw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -724,8 +689,7 @@ }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -736,8 +700,7 @@ }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.363.0.tgz", - "integrity": "sha512-fk9ymBUIYbxiGm99Cn+kAAXmvMCWTf/cHAcB79oCXV4ELXdPa9lN5xQhZRFNxLUeXG4OAMEuCAUUuZEj8Fnc1Q==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -748,8 +711,7 @@ }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.363.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.363.0.tgz", - "integrity": "sha512-Fli/dvgGA9hdnQUrYb1//wNSFlK2jAfdJcfNXA6SeBYzSeH5pVGYF4kXF0FCdnMA3Fef+Zn1zAP/hw9v8VJHWQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-sdk/types": "3.357.0", @@ -771,8 +733,7 @@ }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.3.1" @@ -780,8 +741,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.22.5" }, @@ -791,18 +752,16 @@ }, "node_modules/@babel/compat-data": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", - "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", - "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", @@ -835,9 +794,8 @@ }, "node_modules/@babel/generator": { "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", - "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -850,9 +808,8 @@ }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -864,9 +821,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz", - "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-validator-option": "^7.22.5", @@ -883,18 +839,16 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.22.5", "@babel/types": "^7.22.5" @@ -905,9 +859,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -917,9 +870,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -929,9 +881,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", @@ -948,18 +899,16 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -969,9 +918,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, @@ -981,35 +929,32 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.6", @@ -1021,8 +966,8 @@ }, "node_modules/@babel/highlight": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", @@ -1034,8 +979,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -1045,8 +990,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1058,37 +1003,37 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -1098,9 +1043,8 @@ }, "node_modules/@babel/parser": { "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", "dev": true, + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -1165,9 +1109,8 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1260,9 +1203,8 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1285,9 +1227,8 @@ }, "node_modules/@babel/template": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", @@ -1299,9 +1240,8 @@ }, "node_modules/@babel/traverse": { "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/generator": "^7.22.7", @@ -1320,18 +1260,16 @@ }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/types": { "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5", @@ -1343,22 +1281,18 @@ }, "node_modules/@balena/dockerignore": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha1-n/5HJpFSUejrafRO81R+DaLAPg0=", "dev": true, "license": "Apache-2.0" }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@clinic/bubbleprof": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@clinic/bubbleprof/-/bubbleprof-10.0.0.tgz", - "integrity": "sha512-7Y0uYO4cz7+Y1advV891uMJLXbZMIriLsV1IHSSVJxmf8tEFm8vogKi/GdYyi4CY0D5heuqOFze/WNrv+U3LRw==", "dev": true, + "license": "MIT", "dependencies": { "@clinic/clinic-common": "^7.0.0", "@clinic/node-trace-log-join": "^2.0.0", @@ -1388,9 +1322,8 @@ }, "node_modules/@clinic/clinic-common": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@clinic/clinic-common/-/clinic-common-7.1.0.tgz", - "integrity": "sha512-+e/g1foFFtBqHKc0A9mZkFgH+DiijCT3ZojALGLOgdkzBY3Pun+Oj/FET5xvQWDtJ4RiXWAq4J+odza0NK0aWQ==", "dev": true, + "license": "MIT", "dependencies": { "brfs": "^2.0.1", "browserify": "^17.0.0", @@ -1408,9 +1341,8 @@ }, "node_modules/@clinic/doctor": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@clinic/doctor/-/doctor-11.0.0.tgz", - "integrity": "sha512-sfi3etIHDdrziWcG1fOB2XSNIbA+jwnoFNcCwYQxkYG3vh1QUajTur4lZ27YfV1ZsjzLNZAYxV0fOdUin/NJAg==", "dev": true, + "license": "MIT", "dependencies": { "@clinic/clinic-common": "^7.0.0", "@clinic/node-trace-log-join": "^2.0.0", @@ -1445,9 +1377,8 @@ }, "node_modules/@clinic/flame": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@clinic/flame/-/flame-13.0.0.tgz", - "integrity": "sha512-3e//olko8YNl0aEUlzVJZybvmIXsmGuwMDxUlF7MKifCes8PICCusTHvuQ1AEIBvP73czbSLrE0xM4lUTWMYpg==", "dev": true, + "license": "MIT", "dependencies": { "@clinic/clinic-common": "^7.0.0", "0x": "^5.0.0", @@ -1464,9 +1395,8 @@ }, "node_modules/@clinic/flame/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -1479,9 +1409,8 @@ }, "node_modules/@clinic/heap-profiler": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@clinic/heap-profiler/-/heap-profiler-5.0.0.tgz", - "integrity": "sha512-1sAU3GuLk6mXGzMn6JGou6bMzP5vTpieZRgk0LVlauVDxq1+vxgiDrSO9Rn0IxHS7spMnHhOB/DigKFY6oci7Q==", "dev": true, + "license": "MIT", "dependencies": { "@clinic/clinic-common": "^7.0.0", "@nearform/heap-profiler": "^2.0.0", @@ -1500,9 +1429,8 @@ }, "node_modules/@clinic/heap-profiler/node_modules/fs-extra": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1514,9 +1442,8 @@ }, "node_modules/@clinic/node-trace-log-join": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@clinic/node-trace-log-join/-/node-trace-log-join-2.0.0.tgz", - "integrity": "sha512-oOXf4Qavmawsg3YCRiGiAwnn8ENItMvfCiXS9sgEk8Iox5pToNRE1hwLwCfn/x2VL8FzJUiJtIcgGA6fJST91Q==", "dev": true, + "license": "MIT", "dependencies": { "@clinic/trace-events-parser": "^2.0.0", "multistream": "^2.1.0", @@ -1529,15 +1456,15 @@ }, "node_modules/@clinic/trace-events-parser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@clinic/trace-events-parser/-/trace-events-parser-2.0.0.tgz", - "integrity": "sha512-hXpT4xJED7kW0+BNCSNSFNlYZO0xMYIBbx/lM8kbyW50SemOCk7JP0wEbmYpHNiW1wKT6ICuFaOK742R/w0vTQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "turbo-json-parse": "^2.2.0" } }, "node_modules/@colors/colors": { "version": "1.5.0", + "dev": true, "license": "MIT", "engines": { "node": ">=0.1.90" @@ -1565,6 +1492,7 @@ }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", + "dev": true, "license": "MIT", "dependencies": { "colorspace": "1.1.x", @@ -1574,20 +1502,9 @@ }, "node_modules/@edfi/antlr4": { "version": "4.6.1", - "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/antlr4/-/antlr4-4.6.1.tgz", - "integrity": "sha1-vLgI0jH1J94RP0tM6Aoxv1e/h1c=", + "dev": true, "license": "BSD" }, - "node_modules/@edfi/ed-fi-model-3.1": { - "version": "3.0.1", - "license": "private" - }, - "node_modules/@edfi/ed-fi-model-3.3b": { - "version": "3.0.2", - "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/ed-fi-model-3.3b/-/ed-fi-model-3.3b-3.0.2.tgz", - "integrity": "sha1-ycBH4itwLxSXRAnBdlKwKUHXmtE=", - "license": "private" - }, "node_modules/@edfi/meadowlark-authz-server": { "resolved": "packages/meadowlark-authz-server", "link": true @@ -1625,9 +1542,10 @@ "link": true }, "node_modules/@edfi/metaed-core": { - "version": "4.2.2-dev.11", - "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/metaed-core/-/metaed-core-4.2.2-dev.11.tgz", - "integrity": "sha1-y4RPrpXQofCh/+nEL+eUE0r71To=", + "version": "4.2.2-dev.15", + "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/metaed-core/-/metaed-core-4.2.2-dev.15.tgz", + "integrity": "sha1-1/k2MoNR22qZ5/+BC+cnIWixZvU=", + "dev": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@edfi/antlr4": "4.6.1", @@ -1650,6 +1568,7 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -1665,6 +1584,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1677,16 +1597,18 @@ "node_modules/@edfi/metaed-core/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/@edfi/metaed-plugin-edfi-api-schema": { - "version": "4.2.2-dev.11", - "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/metaed-plugin-edfi-api-schema/-/metaed-plugin-edfi-api-schema-4.2.2-dev.11.tgz", - "integrity": "sha1-OtumAxKPmglOgilibGGEtPg7Ou0=", + "version": "4.2.2-dev.15", + "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/metaed-plugin-edfi-api-schema/-/metaed-plugin-edfi-api-schema-4.2.2-dev.15.tgz", + "integrity": "sha1-R66wQZso1IlJiCV+VmpAxoKTgD8=", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@edfi/metaed-core": "4.2.2-dev.11", - "@edfi/metaed-plugin-edfi-unified": "4.2.2-dev.11", + "@edfi/metaed-core": "4.2.2-dev.15", + "@edfi/metaed-plugin-edfi-unified": "4.2.2-dev.15", "ajv": "^8.12.0", "deep-freeze": "^0.0.1", "inflection": "^2.0.1", @@ -1695,8 +1617,8 @@ }, "node_modules/@edfi/metaed-plugin-edfi-api-schema/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -1710,16 +1632,17 @@ }, "node_modules/@edfi/metaed-plugin-edfi-api-schema/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "dev": true, + "license": "MIT" }, "node_modules/@edfi/metaed-plugin-edfi-unified": { - "version": "4.2.2-dev.11", - "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/metaed-plugin-edfi-unified/-/metaed-plugin-edfi-unified-4.2.2-dev.11.tgz", - "integrity": "sha1-u2gpBbsn5zVwwSPxACUXYvuvclo=", + "version": "4.2.2-dev.15", + "resolved": "https://pkgs.dev.azure.com/ed-fi-alliance/Ed-Fi-Alliance-OSS/_packaging/EdFi/npm/registry/@edfi/metaed-plugin-edfi-unified/-/metaed-plugin-edfi-unified-4.2.2-dev.15.tgz", + "integrity": "sha1-8ZXvfBHDE3Je1CwQbzqAYlfGf1U=", + "dev": true, "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@edfi/metaed-core": "4.2.2-dev.11", + "@edfi/metaed-core": "4.2.2-dev.15", "ramda": "^0.29.0" } }, @@ -1737,9 +1660,8 @@ }, "node_modules/@elastic/elasticsearch-mock": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch-mock/-/elasticsearch-mock-2.0.0.tgz", - "integrity": "sha512-VACQF7GStt8DetY91aJhXCYog6zXM0Vyb62k592EEt3aB4plrOLot+JvlLMC4URjh2jt9qYfER9hn4AI+ULTSw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "fast-deep-equal": "^3.1.3", "find-my-way": "^5.2.0", @@ -1748,9 +1670,8 @@ }, "node_modules/@elastic/elasticsearch-mock/node_modules/find-my-way": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-5.6.0.tgz", - "integrity": "sha512-pFTzbl2u+iSrvVOGtfKenvDmNIhNtEcwbzvRMfx3TGO69fbO5udgTKtAZAaUfIUrHQWLkkWvhNafNz179kaCIw==", "dev": true, + "license": "MIT", "dependencies": { "fast-decode-uri-component": "^1.0.1", "fast-deep-equal": "^3.1.3", @@ -1762,8 +1683,7 @@ }, "node_modules/@elastic/transport": { "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.3.4.tgz", - "integrity": "sha512-+0o8o74sbzu3BO7oOZiP9ycjzzdOt4QwmMEjFc1zfO7M0Fh7QX1xrpKqZbSd8vBwihXNlSq/EnMPfgD2uFEmFg==", + "license": "Apache-2.0", "dependencies": { "debug": "^4.3.4", "hpagent": "^1.0.0", @@ -1778,14 +1698,12 @@ }, "node_modules/@elastic/transport/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "license": "MIT" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -1885,13 +1803,13 @@ }, "node_modules/@hapi/hoek": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -2041,8 +1959,7 @@ }, "node_modules/@isaacs/ttlcache": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", - "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2148,9 +2065,8 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -2165,9 +2081,8 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -2212,9 +2127,8 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -2227,9 +2141,8 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.7.0", "jest-snapshot": "^29.7.0" @@ -2240,9 +2153,8 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -2252,9 +2164,8 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -2269,9 +2180,8 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -2284,9 +2194,8 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -2326,10 +2235,9 @@ } }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.0", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -2343,9 +2251,8 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -2355,9 +2262,8 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -2369,9 +2275,8 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -2384,9 +2289,8 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -2399,9 +2303,8 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -2425,9 +2328,8 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -2474,13 +2376,12 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.18", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@lerna/child-process": { @@ -2767,6 +2668,15 @@ "node": "*" } }, + "node_modules/@lerna/legacy-package-management/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@lerna/legacy-package-management/node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -2787,6 +2697,39 @@ } } }, + "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", + "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@lerna/legacy-package-management/node_modules/npm-registry-fetch/node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/@lerna/legacy-package-management/node_modules/pretty-format": { "version": "29.4.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", @@ -2852,6 +2795,18 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@lerna/legacy-package-management/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/@lerna/legacy-package-management/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -2906,16 +2861,14 @@ }, "node_modules/@ljharb/through": { "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.9.tgz", - "integrity": "sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==", + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "license": "MIT", "optional": true, "dependencies": { "sparse-bitfield": "^3.0.3" @@ -2923,9 +2876,8 @@ }, "node_modules/@nearform/heap-profiler": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nearform/heap-profiler/-/heap-profiler-2.0.0.tgz", - "integrity": "sha512-846CWyq3Ky5rzcl8Z3S+VT3z6GQSlYD1G/dqbtANu29NUHoCO+W7tOZRK6eA6FjLHnNX0DvP1Mrt2oFBPnkxLw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "abort-controller": "^3.0.0", "sonic-boom": "^1.0.1" @@ -2936,9 +2888,8 @@ }, "node_modules/@nicolo-ribaudo/semver-v6": { "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", - "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -4042,61 +3993,10 @@ "node": ">=14" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@pkgr/utils/node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@shelf/jest-mongodb": { "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@shelf/jest-mongodb/-/jest-mongodb-4.1.7.tgz", - "integrity": "sha512-1sQXHmEirGL+apuOGEt6dkySsgq5SmIGj7uKWYZ6VWch7kg7imCn4CrbfHgotRoiS6QRRIIVBfMdpv7g3XoEMg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4.3.4", "mongodb-memory-server": "8.11.5" @@ -4121,21 +4021,21 @@ }, "node_modules/@sideway/address": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } }, "node_modules/@sideway/formula": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@sigstore/bundle": { "version": "1.1.0", @@ -4187,41 +4087,36 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@sinonjs/commons": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } }, "node_modules/@smithy/abort-controller": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.0.2.tgz", - "integrity": "sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4233,8 +4128,7 @@ }, "node_modules/@smithy/config-resolver": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-1.0.2.tgz", - "integrity": "sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4248,8 +4142,7 @@ }, "node_modules/@smithy/credential-provider-imds": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz", - "integrity": "sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/node-config-provider": "^1.0.2", @@ -4264,8 +4157,7 @@ }, "node_modules/@smithy/eventstream-codec": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz", - "integrity": "sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/crc32": "3.0.0", @@ -4276,8 +4168,7 @@ }, "node_modules/@smithy/fetch-http-handler": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz", - "integrity": "sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/protocol-http": "^1.1.1", @@ -4289,8 +4180,7 @@ }, "node_modules/@smithy/hash-node": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-1.0.2.tgz", - "integrity": "sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4304,8 +4194,7 @@ }, "node_modules/@smithy/invalid-dependency": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz", - "integrity": "sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4314,8 +4203,7 @@ }, "node_modules/@smithy/is-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz", - "integrity": "sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4326,8 +4214,7 @@ }, "node_modules/@smithy/middleware-content-length": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz", - "integrity": "sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/protocol-http": "^1.1.1", @@ -4340,8 +4227,7 @@ }, "node_modules/@smithy/middleware-endpoint": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz", - "integrity": "sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/middleware-serde": "^1.0.2", @@ -4356,8 +4242,7 @@ }, "node_modules/@smithy/middleware-retry": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz", - "integrity": "sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/protocol-http": "^1.1.1", @@ -4374,8 +4259,7 @@ }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "optional": true, "bin": { "uuid": "dist/bin/uuid" @@ -4383,8 +4267,7 @@ }, "node_modules/@smithy/middleware-serde": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz", - "integrity": "sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4396,8 +4279,7 @@ }, "node_modules/@smithy/middleware-stack": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz", - "integrity": "sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4408,8 +4290,7 @@ }, "node_modules/@smithy/node-config-provider": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz", - "integrity": "sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/property-provider": "^1.0.2", @@ -4423,8 +4304,7 @@ }, "node_modules/@smithy/node-http-handler": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz", - "integrity": "sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/abort-controller": "^1.0.2", @@ -4439,8 +4319,7 @@ }, "node_modules/@smithy/property-provider": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-1.0.2.tgz", - "integrity": "sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4452,8 +4331,7 @@ }, "node_modules/@smithy/protocol-http": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.1.1.tgz", - "integrity": "sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4465,8 +4343,7 @@ }, "node_modules/@smithy/querystring-builder": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz", - "integrity": "sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4479,8 +4356,7 @@ }, "node_modules/@smithy/querystring-parser": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz", - "integrity": "sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4492,8 +4368,7 @@ }, "node_modules/@smithy/service-error-classification": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz", - "integrity": "sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA==", + "license": "Apache-2.0", "optional": true, "engines": { "node": ">=14.0.0" @@ -4501,8 +4376,7 @@ }, "node_modules/@smithy/shared-ini-file-loader": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz", - "integrity": "sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/types": "^1.1.1", @@ -4514,8 +4388,7 @@ }, "node_modules/@smithy/signature-v4": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-1.0.2.tgz", - "integrity": "sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/eventstream-codec": "^1.0.2", @@ -4533,8 +4406,7 @@ }, "node_modules/@smithy/smithy-client": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-1.0.4.tgz", - "integrity": "sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/middleware-stack": "^1.0.2", @@ -4548,8 +4420,7 @@ }, "node_modules/@smithy/types": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.1.1.tgz", - "integrity": "sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4560,8 +4431,7 @@ }, "node_modules/@smithy/url-parser": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-1.0.2.tgz", - "integrity": "sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/querystring-parser": "^1.0.2", @@ -4571,8 +4441,7 @@ }, "node_modules/@smithy/util-base64": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-1.0.2.tgz", - "integrity": "sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/util-buffer-from": "^1.0.2", @@ -4584,8 +4453,7 @@ }, "node_modules/@smithy/util-body-length-browser": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz", - "integrity": "sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4593,8 +4461,7 @@ }, "node_modules/@smithy/util-body-length-node": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz", - "integrity": "sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4605,8 +4472,7 @@ }, "node_modules/@smithy/util-buffer-from": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz", - "integrity": "sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/is-array-buffer": "^1.0.2", @@ -4618,8 +4484,7 @@ }, "node_modules/@smithy/util-config-provider": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz", - "integrity": "sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4630,8 +4495,7 @@ }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz", - "integrity": "sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/property-provider": "^1.0.2", @@ -4645,8 +4509,7 @@ }, "node_modules/@smithy/util-defaults-mode-node": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz", - "integrity": "sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/config-resolver": "^1.0.2", @@ -4662,8 +4525,7 @@ }, "node_modules/@smithy/util-hex-encoding": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz", - "integrity": "sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4674,8 +4536,7 @@ }, "node_modules/@smithy/util-middleware": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-1.0.2.tgz", - "integrity": "sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4686,8 +4547,7 @@ }, "node_modules/@smithy/util-retry": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.0.4.tgz", - "integrity": "sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/service-error-classification": "^1.0.3", @@ -4699,8 +4559,7 @@ }, "node_modules/@smithy/util-stream": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-1.0.2.tgz", - "integrity": "sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/fetch-http-handler": "^1.0.2", @@ -4718,8 +4577,7 @@ }, "node_modules/@smithy/util-uri-escape": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz", - "integrity": "sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg==", + "license": "Apache-2.0", "optional": true, "dependencies": { "tslib": "^2.5.0" @@ -4730,8 +4588,7 @@ }, "node_modules/@smithy/util-utf8": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-1.0.2.tgz", - "integrity": "sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw==", + "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/util-buffer-from": "^1.0.2", @@ -4743,9 +4600,8 @@ }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dev": true, + "license": "MIT", "dependencies": { "defer-to-connect": "^1.0.1" }, @@ -4755,9 +4611,8 @@ }, "node_modules/@tensorflow/tfjs-backend-cpu": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.21.0.tgz", - "integrity": "sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/seedrandom": "^2.4.28", "seedrandom": "^3.0.5" @@ -4771,9 +4626,8 @@ }, "node_modules/@tensorflow/tfjs-core": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz", - "integrity": "sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/long": "^4.0.1", "@types/offscreencanvas": "~2019.3.0", @@ -4790,18 +4644,16 @@ }, "node_modules/@testcontainers/mongodb": { "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@testcontainers/mongodb/-/mongodb-10.2.1.tgz", - "integrity": "sha512-B/y/tLFv9ieuWFEjtRFMGZTOcTgwgH+VeqyInYNkMmsxm7cAqNgfsC2a0XTuFxEIyIVHRz3GxHRqdJbXjZ/2tg==", "dev": true, + "license": "MIT", "dependencies": { "testcontainers": "^10.2.1" } }, "node_modules/@testcontainers/postgresql": { "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@testcontainers/postgresql/-/postgresql-10.2.1.tgz", - "integrity": "sha512-snIB11wyHUYPzQNNgoHpiRcZO3sR0mDwU28cwOd0lAT4kzTvTihZTmz4gv8MYppcXlRsLAIE0QqzGauZsfFQiA==", "dev": true, + "license": "MIT", "dependencies": { "testcontainers": "^10.2.1" } @@ -4892,9 +4744,8 @@ }, "node_modules/@types/babel__core": { "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -4905,18 +4756,16 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -4924,29 +4773,26 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/chance": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/chance/-/chance-1.1.4.tgz", - "integrity": "sha512-et3alUWI9jEPnGai+QRCyDdRMYS+atq32IaldWURyxPRZBYg+cSwppxK2UHnDv9X/0pdoxR3Ufbz5hRmjD/uNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cookiejar": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/eslint": { - "version": "8.44.3", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.3.tgz", - "integrity": "sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==", + "version": "8.44.4", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.4.tgz", + "integrity": "sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==", "dev": true, "dependencies": { "@types/estree": "*", @@ -4960,9 +4806,8 @@ }, "node_modules/@types/fs-extra": { "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz", - "integrity": "sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/jsonfile": "*", "@types/node": "*" @@ -4970,9 +4815,8 @@ }, "node_modules/@types/graceful-fs": { "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5014,9 +4858,9 @@ } }, "node_modules/@types/js-yaml": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.6.tgz", - "integrity": "sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.7.tgz", + "integrity": "sha512-RJZP9WAMMr1514KbdSXkLRrKvYQacjr1+HWnY8pui/uBTBoSgD9ZGR17u/d4nb9NpERp0FkdLBe7hq8NIPBgkg==", "dev": true }, "node_modules/@types/json-schema": { @@ -5031,18 +4875,16 @@ }, "node_modules/@types/jsonfile": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", - "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/long": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/minimatch": { "version": "3.0.5", @@ -5069,9 +4911,8 @@ }, "node_modules/@types/offscreencanvas": { "version": "2019.3.0", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", - "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -5080,9 +4921,9 @@ "dev": true }, "node_modules/@types/pg": { - "version": "8.10.3", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.10.3.tgz", - "integrity": "sha512-BACzsw64lCZesclRpZGu55tnqgFAYcrCBP92xLh1KLypZLCOsvJTSTgaoFVTy3lCys/aZTQzfeDxtjwrvdzL2g==", + "version": "8.10.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.10.5.tgz", + "integrity": "sha512-GS3ebGcSJQqKSnq4/WnSH1XQvx0vTDLEmqLENk7onKvTnry9BWPsZiZeUMJlEPw+5bCQDzfxZFhxlUztpNCKgQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -5098,9 +4939,8 @@ }, "node_modules/@types/pg/node_modules/pg-types": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.1.tgz", - "integrity": "sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==", "dev": true, + "license": "MIT", "dependencies": { "pg-int8": "1.0.1", "pg-numeric": "1.0.2", @@ -5116,18 +4956,16 @@ }, "node_modules/@types/pg/node_modules/postgres-array": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", - "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/@types/pg/node_modules/postgres-bytea": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", - "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", "dev": true, + "license": "MIT", "dependencies": { "obuf": "~1.1.2" }, @@ -5137,18 +4975,16 @@ }, "node_modules/@types/pg/node_modules/postgres-date": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.0.1.tgz", - "integrity": "sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/@types/pg/node_modules/postgres-interval": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", - "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -5170,9 +5006,8 @@ }, "node_modules/@types/seedrandom": { "version": "2.4.30", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.30.tgz", - "integrity": "sha512-AnxLHewubLVzoF/A4qdxBGHCKifw8cY32iro3DQX9TPcetE95zBeVt3jnsvtvAUf1vwzMfwzp4t/L2yqPlnjkQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.5.3", @@ -5182,9 +5017,8 @@ }, "node_modules/@types/ssh2": { "version": "0.5.52", - "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.52.tgz", - "integrity": "sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/ssh2-streams": "*" @@ -5205,9 +5039,8 @@ }, "node_modules/@types/superagent": { "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz", - "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookiejar": "*", "@types/node": "*" @@ -5224,22 +5057,24 @@ }, "node_modules/@types/tmp": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha1-kIv7ETQZ/WpCJzZ0wAmU1AkCwWU=", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.3", "dev": true, "license": "MIT" }, "node_modules/@types/uuid": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", - "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.5.tgz", + "integrity": "sha512-xfHdwa1FMJ082prjSJpoEI57GZITiQz10r3vEJCHa2khEFQjKy91aWKz6+zybzssCvXUwE1LQWgWVwZ4nYUvHQ==", "dev": true }, "node_modules/@types/webgl-ext": { "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", - "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/webidl-conversions": { "version": "7.0.0", @@ -5255,9 +5090,8 @@ }, "node_modules/@types/xml2js": { "version": "0.4.12", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.12.tgz", - "integrity": "sha512-CZPpQKBZ8db66EP5hCjwvYrLThgZvnyZrPXK2W+UI1oOaWezGt34iOaUCX4Jah2X8+rQqjvl9VKEIT8TR1I0rA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5277,9 +5111,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -5311,9 +5144,8 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -5338,9 +5170,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -5355,9 +5186,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -5382,9 +5212,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5395,9 +5224,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -5422,9 +5250,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -5448,9 +5275,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -5465,9 +5291,8 @@ }, "node_modules/@webgpu/types": { "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.16.tgz", - "integrity": "sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", @@ -5523,10 +5348,9 @@ } }, "node_modules/0x": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/0x/-/0x-5.7.0.tgz", - "integrity": "sha512-oc5lqaJP7lu3C5zx+MRbsigfRlTTUg0LKjFDCr0NmR9g+nkZcR7yRU6jzMOiedSVKZ0p0b4y2TBQ+YYo6O3sZg==", + "version": "5.6.0", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.8.2", "browserify": "^17.0.0", @@ -5566,9 +5390,8 @@ }, "node_modules/0x/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -5582,24 +5405,21 @@ }, "node_modules/0x/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/0x/node_modules/split2": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10.x" } }, "node_modules/0x/node_modules/through2": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "3" } @@ -5615,8 +5435,7 @@ }, "node_modules/abort-controller": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -5630,9 +5449,8 @@ }, "node_modules/acorn": { "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5651,9 +5469,8 @@ }, "node_modules/acorn-node": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -5662,9 +5479,8 @@ }, "node_modules/acorn-node/node_modules/acorn": { "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5674,9 +5490,8 @@ }, "node_modules/acorn-node/node_modules/acorn-walk": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -5780,9 +5595,8 @@ }, "node_modules/ansi-align": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } @@ -5798,8 +5612,7 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -5812,8 +5625,7 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5843,15 +5655,13 @@ }, "node_modules/any-shell-escape": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", - "integrity": "sha512-36j4l5HVkboyRhIWgtMh1I9i8LTdFqVwDEHy1cp+QioJyKgAUG40X0W8s7jakWRta/Sjvm8mUG1fU6Tj8mWagQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5910,9 +5720,8 @@ }, "node_modules/archiver-utils/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5960,6 +5769,7 @@ }, "node_modules/argparse": { "version": "2.0.1", + "dev": true, "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { @@ -5986,15 +5796,13 @@ }, "node_modules/array-flatten": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-from": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-ify": { "version": "1.0.0", @@ -6066,9 +5874,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6127,9 +5934,8 @@ }, "node_modules/asn1.js": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6139,15 +5945,13 @@ }, "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/assert": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4.1.1", "util": "0.10.3" @@ -6155,43 +5959,37 @@ }, "node_modules/assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/assert/node_modules/inherits": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/assert/node_modules/util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "2.0.1" } }, "node_modules/async": { "version": "3.2.4", + "dev": true, "license": "MIT" }, "node_modules/async-lock": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", - "integrity": "sha1-yLZjDv9o+73Ypbbrdj2sO/u4vwI=", "dev": true, "license": "MIT" }, "node_modules/async-mutex": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", - "integrity": "sha1-FIXtpb2hsOx8jfGsLoFXV60YMd8=", "dev": true, "license": "MIT", "dependencies": { @@ -6200,8 +5998,6 @@ }, "node_modules/async-retry": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha1-Dn82wE2EeOeli9vtgM7fl3eF8oA=", "license": "MIT", "dependencies": { "retry": "0.13.1" @@ -6209,8 +6005,7 @@ }, "node_modules/async-retry/node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -6237,18 +6032,16 @@ }, "node_modules/atomically": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.12.0" } }, "node_modules/autocannon": { "version": "7.12.0", - "resolved": "https://registry.npmjs.org/autocannon/-/autocannon-7.12.0.tgz", - "integrity": "sha512-SZwtwykFZaoz5pKg7WY7gw1Dayqv9buXSjvc99sSzZIfguUc4FmFEFJr3INtfXJ7o9Xyn5bJM093wxipVV59ZA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "char-spinner": "^1.0.1", @@ -6301,9 +6094,8 @@ }, "node_modules/aws-sign2": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } @@ -6333,15 +6125,13 @@ }, "node_modules/b4a": { "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/babel-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -6375,9 +6165,8 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -6412,9 +6201,8 @@ }, "node_modules/babel-preset-jest": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -6470,19 +6258,10 @@ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/bin-links": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.2.tgz", - "integrity": "sha512-jxJ0PbXR8eQyPlExCvCs3JFnikvs1Yp4gUJt6nmgathdOwvur+q22KWC3h20gvWl4T/14DXKj2IlkJwwZkZPOw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.3.tgz", + "integrity": "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA==", "dev": true, "dependencies": { "cmd-shim": "^6.0.0", @@ -6539,14 +6318,12 @@ }, "node_modules/bit-twiddle": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", - "integrity": "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -6555,21 +6332,18 @@ }, "node_modules/bn.js": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bowser": { "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT", "optional": true }, "node_modules/boxen": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -6589,9 +6363,8 @@ }, "node_modules/boxen/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6601,9 +6374,8 @@ }, "node_modules/boxen/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -6616,18 +6388,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "dev": true, @@ -6650,9 +6410,8 @@ }, "node_modules/brfs": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", - "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==", "dev": true, + "license": "MIT", "dependencies": { "quote-stream": "^1.0.1", "resolve": "^1.1.5", @@ -6665,15 +6424,13 @@ }, "node_modules/brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browser-pack": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", "dev": true, + "license": "MIT", "dependencies": { "combine-source-map": "~0.8.0", "defined": "^1.0.0", @@ -6688,24 +6445,21 @@ }, "node_modules/browser-process-hrtime": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/browser-resolve": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.17.0" } }, "node_modules/browserify": { "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", "dev": true, + "license": "MIT", "dependencies": { "assert": "^1.4.0", "browser-pack": "^6.0.1", @@ -6765,9 +6519,8 @@ }, "node_modules/browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -6779,9 +6532,8 @@ }, "node_modules/browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -6790,9 +6542,8 @@ }, "node_modules/browserify-des": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -6802,9 +6553,8 @@ }, "node_modules/browserify-rsa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -6812,9 +6562,8 @@ }, "node_modules/browserify-sign": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, + "license": "ISC", "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -6829,18 +6578,16 @@ }, "node_modules/browserify-zlib": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, + "license": "MIT", "dependencies": { "pako": "~1.0.5" } }, "node_modules/browserify/node_modules/buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "dev": true, + "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -6848,12 +6595,11 @@ }, "node_modules/browserify/node_modules/concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -6863,21 +6609,18 @@ }, "node_modules/browserify/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browserify/node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browserify/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6890,23 +6633,19 @@ }, "node_modules/browserify/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/browserify/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/browserslist": { "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "funding": [ { @@ -6922,6 +6661,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001503", "electron-to-chromium": "^1.4.431", @@ -6948,9 +6688,8 @@ }, "node_modules/bser": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } @@ -6995,18 +6734,16 @@ }, "node_modules/buffer-equal": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/buffer-writer": { "version": "2.0.0", @@ -7017,15 +6754,13 @@ }, "node_modules/buffer-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builtins": { "version": "5.0.1", @@ -7036,25 +6771,8 @@ "semver": "^7.0.0" } }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/busboy": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { "streamsearch": "^1.1.0" }, @@ -7171,9 +6889,8 @@ }, "node_modules/cacheable-request": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, + "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -7189,9 +6906,8 @@ }, "node_modules/cacheable-request/node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -7204,18 +6920,16 @@ }, "node_modules/cacheable-request/node_modules/lowercase-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cached-path-relative": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/call-bind": { "version": "1.0.2", @@ -7231,6 +6945,7 @@ }, "node_modules/callsites": { "version": "3.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -7238,9 +6953,8 @@ }, "node_modules/camel-case": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^2.2.0", "upper-case": "^1.1.1" @@ -7273,8 +6987,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001514", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001514.tgz", - "integrity": "sha512-ENcIpYBmwAAOm/V2cXgM7rZUrKKaqisZl4ZAI520FIkqGXUxJjmaIssbRW5HVVR5tyV6ygTLIm15aU8LUmQSaQ==", "dev": true, "funding": [ { @@ -7289,19 +7001,18 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/cephes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cephes/-/cephes-1.2.0.tgz", - "integrity": "sha512-twuUuJRrIrsELHz6foJtZlqrz6FC36zoHZJvvThsrM1UWPKxyoilw1Rka6Hk0AmPFKHKUoGwGfAtvNZNtNZu0g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/chalk": { "version": "4.1.2", @@ -7319,24 +7030,21 @@ }, "node_modules/chance": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.11.tgz", - "integrity": "sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/char-regex": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/char-spinner": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/char-spinner/-/char-spinner-1.0.1.tgz", - "integrity": "sha512-acv43vqJ0+N0rD+Uw3pDHSxP30FHrywu2NO6/wBaHChJIizpDeBUd6NjqhNhy9LGaEAhZAXn46QzmlAvIWd16g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/chardet": { "version": "0.7.0", @@ -7352,9 +7060,7 @@ } }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "3.8.0", "dev": true, "funding": [ { @@ -7362,15 +7068,15 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7378,9 +7084,8 @@ }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/clean-stack": { "version": "2.2.0", @@ -7393,9 +7098,8 @@ }, "node_modules/cli-boxes": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -7405,8 +7109,7 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -7416,8 +7119,7 @@ }, "node_modules/cli-spinners": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -7427,9 +7129,8 @@ }, "node_modules/cli-table3": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -7442,17 +7143,15 @@ }, "node_modules/cli-width": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", "engines": { "node": ">= 12" } }, "node_modules/clinic": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/clinic/-/clinic-13.0.0.tgz", - "integrity": "sha512-QAD3cLgA1OqEC7fJSDbAt4U0BKGAK1c5yopN5tu1OtmmsbRHHYxBeSMiElQfuMMdbkAuLEE7HOffZ0hKMzaYVw==", "dev": true, + "license": "MIT", "dependencies": { "@clinic/bubbleprof": "^10.0.0", "@clinic/doctor": "^11.0.0", @@ -7481,15 +7180,13 @@ }, "node_modules/clinic/node_modules/cross-argv": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cross-argv/-/cross-argv-1.0.0.tgz", - "integrity": "sha512-uAVe/bgNHlPdP1VE4Sk08u9pAJ7o1x/tVQtX77T5zlhYhuwOWtVkPBEtHdvF5cq48VzeCG5i1zN4dQc8pwLYrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/clinic/node_modules/open": { "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -7503,9 +7200,8 @@ }, "node_modules/clinic/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -7518,8 +7214,6 @@ }, "node_modules/clipboard-copy": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-4.0.1.tgz", - "integrity": "sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==", "dev": true, "funding": [ { @@ -7534,7 +7228,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/cliui": { "version": "7.0.4", @@ -7597,9 +7292,8 @@ }, "node_modules/clone-response": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dev": true, + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -7621,9 +7315,8 @@ }, "node_modules/co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -7631,21 +7324,20 @@ }, "node_modules/code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/collect-v8-coverage": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/color": { "version": "3.2.1", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.3", @@ -7668,6 +7360,7 @@ }, "node_modules/color-string": { "version": "1.9.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "^1.0.0", @@ -7676,15 +7369,15 @@ }, "node_modules/color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/color/node_modules/color-convert": { "version": "1.9.3", + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -7692,15 +7385,16 @@ }, "node_modules/color/node_modules/color-name": { "version": "1.1.3", + "dev": true, "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + "license": "MIT" }, "node_modules/colorspace": { "version": "1.1.4", + "dev": true, "license": "MIT", "dependencies": { "color": "^3.1.3", @@ -7722,9 +7416,8 @@ }, "node_modules/combine-source-map": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", "dev": true, + "license": "MIT", "dependencies": { "convert-source-map": "~1.1.0", "inline-source-map": "~0.6.0", @@ -7734,21 +7427,18 @@ }, "node_modules/combine-source-map/node_modules/convert-source-map": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combine-source-map/node_modules/lodash.memoize": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combine-source-map/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7773,9 +7463,8 @@ }, "node_modules/commist": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", "dev": true, + "license": "MIT", "dependencies": { "leven": "^2.1.0", "minimist": "^1.1.0" @@ -7783,9 +7472,8 @@ }, "node_modules/commist/node_modules/leven": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7798,8 +7486,6 @@ }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true, "license": "MIT" }, @@ -7827,9 +7513,8 @@ }, "node_modules/component-emitter": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compress-commons": { "version": "4.1.1", @@ -7852,12 +7537,11 @@ }, "node_modules/concat-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "engines": [ "node >= 6.0" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -7867,9 +7551,8 @@ }, "node_modules/conf": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.6.3", "ajv-formats": "^2.1.1", @@ -7891,9 +7574,8 @@ }, "node_modules/conf/node_modules/ajv": { "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -7907,9 +7589,8 @@ }, "node_modules/conf/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/config-chain": { "version": "1.1.12", @@ -7923,9 +7604,8 @@ }, "node_modules/configstore": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", @@ -7940,9 +7620,8 @@ }, "node_modules/configstore/node_modules/dot-prop": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -7952,9 +7631,8 @@ }, "node_modules/configstore/node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -7969,8 +7647,6 @@ }, "node_modules/console-browserify": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, "node_modules/console-control-strings": { @@ -7981,9 +7657,8 @@ }, "node_modules/constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/conventional-changelog-angular": { "version": "5.0.12", @@ -8205,15 +7880,13 @@ }, "node_modules/cookiejar": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/copy-to-clipboard": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", "dev": true, + "license": "MIT", "dependencies": { "toggle-selection": "^1.0.6" } @@ -8237,15 +7910,14 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "version": "1.0.3", + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -8292,9 +7964,8 @@ }, "node_modules/create-ecdh": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -8302,15 +7973,13 @@ }, "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -8321,9 +7990,8 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -8335,9 +8003,8 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -8361,9 +8028,8 @@ }, "node_modules/cross-argv": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cross-argv/-/cross-argv-2.0.0.tgz", - "integrity": "sha512-YIaY9TR5Nxeb8SMdtrU8asWVM4jqJDNDYlKV21LxtYcfNJhp1kEsgSa6qXwXgzN0WQWGODps0+TlGp2xQSHwOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-env": { "version": "7.0.3", @@ -8397,9 +8063,8 @@ }, "node_modules/crypto-browserify": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -8419,9 +8084,8 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8440,18 +8104,16 @@ }, "node_modules/cwise-compiler": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cwise-compiler/-/cwise-compiler-1.1.3.tgz", - "integrity": "sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==", "dev": true, + "license": "MIT", "dependencies": { "uniq": "^1.0.0" } }, "node_modules/d": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, + "license": "ISC", "dependencies": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -8459,36 +8121,31 @@ }, "node_modules/d3-array": { "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" } }, "node_modules/d3-axis": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", - "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-color": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", - "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-dispatch": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", - "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-drag": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", - "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-selection": "1" @@ -8496,15 +8153,13 @@ }, "node_modules/d3-ease": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", - "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-fg": { "version": "6.14.0", - "resolved": "https://registry.npmjs.org/d3-fg/-/d3-fg-6.14.0.tgz", - "integrity": "sha512-M4QpFZOEvAq4ZDzwabJp2inL+KXS85T2SQl00zWwjnolaCJR+gHxUbT7Ha4GxTeW1NXwzbykhv/38I1fxQqbyg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "d3-array": "^2.2.0", "d3-dispatch": "^1.0.5", @@ -8519,45 +8174,39 @@ }, "node_modules/d3-fg/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/d3-format": { "version": "1.4.5", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", - "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-hierarchy": { "version": "1.1.9", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", - "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-interpolate": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", - "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1" } }, "node_modules/d3-path": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-scale": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-array": "^2.3.0", "d3-format": "1 - 2", @@ -8568,54 +8217,47 @@ }, "node_modules/d3-scale/node_modules/d3-time": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-array": "2" } }, "node_modules/d3-selection": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", - "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-shape": { "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } }, "node_modules/d3-time": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", - "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-time-format": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", - "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-time": "1" } }, "node_modules/d3-timer": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", - "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/d3-transition": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", - "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-color": "1", "d3-dispatch": "1", @@ -8627,9 +8269,8 @@ }, "node_modules/d3-zoom": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", - "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "d3-dispatch": "1", "d3-drag": "1", @@ -8640,24 +8281,21 @@ }, "node_modules/dargs": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/dash-ast": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", - "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -8676,15 +8314,13 @@ }, "node_modules/debounce": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debounce-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^3.0.0" }, @@ -8697,9 +8333,8 @@ }, "node_modules/debounce-fn/node_modules/mimic-fn": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8721,9 +8356,8 @@ }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8755,9 +8389,8 @@ }, "node_modules/decompress-response": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -8773,15 +8406,15 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-freeze": { "version": "0.0.1", + "dev": true, "license": "public domain" }, "node_modules/deep-is": { @@ -8791,168 +8424,11 @@ }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-browser/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/default-browser/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defaults": { "version": "1.0.4", "license": "MIT", @@ -8965,14 +8441,13 @@ }, "node_modules/defer-to-connect": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -9011,9 +8486,8 @@ }, "node_modules/defined": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9076,9 +8550,8 @@ }, "node_modules/deps-sort": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", "dev": true, + "license": "MIT", "dependencies": { "JSONStream": "^1.0.3", "shasum-object": "^1.0.0", @@ -9091,9 +8564,8 @@ }, "node_modules/des.js": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -9110,18 +8582,16 @@ }, "node_modules/detect-newline": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/detective": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.8.2", "defined": "^1.0.0", @@ -9145,9 +8615,7 @@ }, "node_modules/didyoumean2": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/didyoumean2/-/didyoumean2-6.0.1.tgz", - "integrity": "sha512-PSy0zQwMg5O+LjT5Mz7vnKC8I7DfWLPF6M7oepqW7WP5mn2CY3hz46xZOa1GJY+KVfyXhdmz6+tdgXwrHlZc5g==", - "hasInstallScript": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.19.0", "fastest-levenshtein": "^1.0.12", @@ -9167,18 +8635,16 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -9187,9 +8653,8 @@ }, "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -9204,18 +8669,16 @@ }, "node_modules/distributions": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/distributions/-/distributions-2.1.0.tgz", - "integrity": "sha512-4eov7WXRip5Tu0K7Y51W1oVt+DcvkoE0EzsvbLzgedC/n4PUpYXHqk6vo/OH1HteBHp5Vm6cmfnInf9NAXM4qQ==", "dev": true, + "license": "MIT", "dependencies": { "cephes": "^1.1.2" } }, "node_modules/docker-compose": { "version": "0.24.2", - "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.2.tgz", - "integrity": "sha512-2/WLvA7UZ6A2LDLQrYW0idKipmNBWhtfvrn2yzjC5PnHDzuFVj1zAZN6MJxVMKP0zZH8uzAK6OwVZYHGuyCmTw==", "dev": true, + "license": "MIT", "dependencies": { "yaml": "^2.2.2" }, @@ -9224,18 +8687,15 @@ } }, "node_modules/docker-compose/node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "version": "2.3.1", "dev": true, + "license": "ISC", "engines": { "node": ">= 14" } }, "node_modules/docker-modem": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz", - "integrity": "sha1-72LIvf9uin0S8BYJiMKV6ocF53o=", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9250,8 +8710,6 @@ }, "node_modules/dockerode": { "version": "3.3.5", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz", - "integrity": "sha1-euP0DyvsU65emnQc5lX/9Fl0Vik=", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9265,15 +8723,13 @@ }, "node_modules/dockerode/node_modules/chownr": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/dockerode/node_modules/tar-fs": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", "dev": true, + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -9294,9 +8750,8 @@ }, "node_modules/domain-browser": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4", "npm": ">=1.2" @@ -9304,9 +8759,8 @@ }, "node_modules/dot-prop": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -9319,8 +8773,7 @@ }, "node_modules/dotenv": { "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -9330,9 +8783,8 @@ }, "node_modules/dup": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz", - "integrity": "sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/duplexer": { "version": "0.1.2", @@ -9342,24 +8794,21 @@ }, "node_modules/duplexer2": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, "node_modules/duplexer2/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/duplexer2/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9372,30 +8821,26 @@ }, "node_modules/duplexer2/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/duplexer2/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/duplexer3": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/duplexify": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", @@ -9411,9 +8856,8 @@ }, "node_modules/ecc-jsbn": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -9443,15 +8887,13 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.455", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.455.tgz", - "integrity": "sha512-8tgdX0Odl24LtmLwxotpJCVjIndN559AvaOtd67u+2mo+IDsgsTF580NB+uuDCqsHw8yFg53l5+imFV9Fw3cbA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/elliptic": { "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -9464,9 +8906,8 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emittery": { "version": "0.13.1", @@ -9480,11 +8921,11 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/enabled": { "version": "2.0.0", + "dev": true, "license": "MIT" }, "node_modules/encoding": { @@ -9517,9 +8958,8 @@ }, "node_modules/endpoint": { "version": "0.4.5", - "resolved": "https://registry.npmjs.org/endpoint/-/endpoint-0.4.5.tgz", - "integrity": "sha512-oA2ALUF+d4Y0I8/WMV/0BuAZGHxfIdAygr9ZXP4rfzmp5zpYZmYKHKAbqRQnrE1YGdPhVg4D24CQkyx2qYEoHg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1" } @@ -9553,23 +8993,21 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/env-string": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/env-string/-/env-string-1.0.1.tgz", - "integrity": "sha512-/DhCJDf5DSFK32joQiWRpWrT0h7p3hVQfMKxiBb7Nt8C8IF8BYyPtclDnuGGLOoj16d/8udKeiE7JbkotDmorQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -9586,6 +9024,7 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -9683,10 +9122,9 @@ }, "node_modules/es5-ext": { "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "dev": true, "hasInstallScript": true, + "license": "ISC", "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -9698,9 +9136,8 @@ }, "node_modules/es6-iterator": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, + "license": "MIT", "dependencies": { "d": "1", "es5-ext": "^0.10.35", @@ -9709,9 +9146,8 @@ }, "node_modules/es6-map": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", "dev": true, + "license": "MIT", "dependencies": { "d": "1", "es5-ext": "~0.10.14", @@ -9723,9 +9159,8 @@ }, "node_modules/es6-set": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", - "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", "dev": true, + "license": "ISC", "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.62", @@ -9740,15 +9175,13 @@ }, "node_modules/es6-set/node_modules/type": { "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/es6-symbol": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, + "license": "ISC", "dependencies": { "d": "^1.0.1", "ext": "^1.1.2" @@ -9764,9 +9197,8 @@ }, "node_modules/escape-goat": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9784,9 +9216,8 @@ }, "node_modules/escodegen": { "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -9806,9 +9237,8 @@ }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -9819,9 +9249,8 @@ }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -9836,8 +9265,6 @@ }, "node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -9845,9 +9272,8 @@ }, "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -9929,9 +9355,8 @@ }, "node_modules/eslint-config-airbnb-base/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -9961,9 +9386,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.11.0", @@ -9972,9 +9396,8 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -10038,9 +9461,8 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -10058,9 +9480,8 @@ }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -10087,29 +9508,21 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/prettier" + "node": ">=12.0.0" }, "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "prettier": ">=3.0.0" + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" }, "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, "eslint-config-prettier": { "optional": true } @@ -10117,9 +9530,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -10196,9 +9608,8 @@ }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -10208,18 +9619,16 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -10229,33 +9638,29 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-is-function": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", - "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/estree-is-member-expression": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", - "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/esutils": { "version": "2.0.3", @@ -10267,9 +9672,8 @@ }, "node_modules/event-emitter": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, + "license": "MIT", "dependencies": { "d": "1", "es5-ext": "~0.10.14" @@ -10277,8 +9681,7 @@ }, "node_modules/event-target-shim": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -10291,17 +9694,15 @@ }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -10309,9 +9710,8 @@ }, "node_modules/execa": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -10332,17 +9732,14 @@ }, "node_modules/execspawn": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz", - "integrity": "sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg==", "dev": true, + "license": "MIT", "dependencies": { "util-extend": "^1.0.1" } }, "node_modules/exit": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -10350,9 +9747,8 @@ }, "node_modules/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -10372,24 +9768,21 @@ }, "node_modules/ext": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, + "license": "ISC", "dependencies": { "type": "^2.7.2" } }, "node_modules/ext/node_modules/type": { "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/external-editor": { "version": "3.1.0", @@ -10405,22 +9798,19 @@ }, "node_modules/extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-content-type-parse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz", - "integrity": "sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==" + "license": "MIT" }, "node_modules/fast-copy": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", - "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==" + "license": "MIT" }, "node_modules/fast-decode-uri-component": { "version": "1.0.1", @@ -10437,15 +9827,13 @@ }, "node_modules/fast-fifo": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz", - "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.0", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -10507,8 +9895,6 @@ }, "node_modules/fast-xml-parser": { "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", "funding": [ { "type": "paypal", @@ -10519,6 +9905,7 @@ "url": "https://github.com/sponsors/NaturalIntelligence" } ], + "license": "MIT", "optional": true, "dependencies": { "strnum": "^1.0.5" @@ -10536,8 +9923,7 @@ }, "node_modules/fastify": { "version": "3.29.5", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-3.29.5.tgz", - "integrity": "sha512-FBDgb1gkenZxxh4sTD6AdI6mFnZnsgckpjIXzIvfLSYCa4isfQeD8QWGPib63dxq6btnY0l1j8I0xYhMvUb+sw==", + "license": "MIT", "dependencies": { "@fastify/ajv-compiler": "^1.0.0", "@fastify/error": "^2.0.0", @@ -10570,17 +9956,14 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/fd-slicer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "license": "MIT", "dependencies": { @@ -10589,6 +9972,7 @@ }, "node_modules/fecha": { "version": "4.2.3", + "dev": true, "license": "MIT" }, "node_modules/figures": { @@ -10683,9 +10067,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -10728,9 +10111,8 @@ }, "node_modules/flame-gradient": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flame-gradient/-/flame-gradient-1.0.0.tgz", - "integrity": "sha512-9ejk16/DqvQJ4dHsh68W/4N0zmVQ60zukyUuEHrTbf5pJvP4JqlIdke86Z9174PZokRCXAntY5+H1txSyC7mUA==", "dev": true, + "license": "MIT", "dependencies": { "sinusoidal-decimal": "^1.0.0" } @@ -10758,9 +10140,8 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -10782,6 +10163,7 @@ }, "node_modules/fn.name": { "version": "1.1.0", + "dev": true, "license": "MIT" }, "node_modules/follow-redirects": { @@ -10840,9 +10222,8 @@ }, "node_modules/forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } @@ -10861,9 +10242,8 @@ }, "node_modules/formidable": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", - "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", "dev": true, + "license": "MIT", "dependencies": { "dezalgo": "^1.0.4", "hexoid": "^1.0.0", @@ -10892,9 +10272,8 @@ }, "node_modules/from2-string": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/from2-string/-/from2-string-1.1.0.tgz", - "integrity": "sha512-m8vCh+KnXXXBtfF2VUbiYlQ+nczLcntB0BrtNgpmLkHylhObe9WF1b2LZjBBzrZzA6P4mkEla6ZYQoOUTG8cYA==", "dev": true, + "license": "MIT", "dependencies": { "from2": "^2.0.3" } @@ -10906,9 +10285,8 @@ }, "node_modules/from2/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10966,20 +10344,6 @@ "version": "1.0.0", "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "dev": true, @@ -11033,18 +10397,16 @@ }, "node_modules/generate-function": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "dev": true, + "license": "MIT", "dependencies": { "is-property": "^1.0.2" } }, "node_modules/generate-object-property": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", "dev": true, + "license": "MIT", "dependencies": { "is-property": "^1.0.0" } @@ -11059,9 +10421,8 @@ }, "node_modules/get-assigned-identifiers": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/get-caller-file": { "version": "2.0.5", @@ -11163,9 +10524,8 @@ }, "node_modules/get-stream": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -11190,9 +10550,8 @@ }, "node_modules/getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } @@ -11302,9 +10661,8 @@ }, "node_modules/glob": { "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11330,9 +10688,8 @@ }, "node_modules/global-dirs": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, + "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -11345,9 +10702,8 @@ }, "node_modules/global-dirs/node_modules/ini": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -11413,9 +10769,8 @@ }, "node_modules/got": { "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dev": true, + "license": "MIT", "dependencies": { "@sindresorhus/is": "^0.14.0", "@szmarczak/http-timer": "^1.1.2", @@ -11435,9 +10790,8 @@ }, "node_modules/got/node_modules/get-stream": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -11447,14 +10801,12 @@ }, "node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/handlebars": { "version": "4.7.8", @@ -11479,19 +10831,16 @@ }, "node_modules/har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true, + "license": "ISC", "engines": { "node": ">=4" } }, "node_modules/har-validator": { "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -11522,9 +10871,8 @@ }, "node_modules/has-ansi": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -11534,18 +10882,16 @@ }, "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/has-async-hooks": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-async-hooks/-/has-async-hooks-1.0.0.tgz", - "integrity": "sha512-YF0VPGjkxr7AyyQQNykX8zK4PvtEDsUJAPqwu06UFz1lb6EvI53sPh5H1kWxg8NXI5LsfRCZ8uX9NkYDZBb/mw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/has-bigints": { "version": "1.0.2", @@ -11611,24 +10957,21 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/has-yarn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hash-base": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -11640,9 +10983,8 @@ }, "node_modules/hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -11650,9 +10992,8 @@ }, "node_modules/hdr-histogram-js": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-3.0.0.tgz", - "integrity": "sha512-/EpvQI2/Z98mNFYEnlqJ8Ogful8OpArLG/6Tf2bPnkutBVLIeMVNHjk1ZDfshF2BUweipzbk+dB1hgSB7SIakw==", "dev": true, + "license": "BSD", "dependencies": { "@assemblyscript/loader": "^0.19.21", "base64-js": "^1.2.0", @@ -11664,14 +11005,12 @@ }, "node_modules/hdr-histogram-percentiles-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/help-me": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", - "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "license": "MIT", "dependencies": { "glob": "^8.0.0", "readable-stream": "^3.6.0" @@ -11679,16 +11018,14 @@ }, "node_modules/help-me/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/help-me/node_modules/glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11705,8 +11042,7 @@ }, "node_modules/help-me/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11716,18 +11052,16 @@ }, "node_modules/hexoid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hidden-markov-model-tf": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hidden-markov-model-tf/-/hidden-markov-model-tf-4.0.0.tgz", - "integrity": "sha512-q8VeBNCyQ5CNsUlbt4T5JXc+pUeKqq7LEGjs4HiH+thgZ2fuyJ9pf/V66ZFx9jZobXkwxVuQRWKZa3TwOFW+zw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "ml-kmeans": "^4.0.1", "ndarray": "^1.0.18", @@ -11743,18 +11077,16 @@ }, "node_modules/hidden-markov-model-tf/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dev": true, + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -11763,9 +11095,8 @@ }, "node_modules/hoek": { "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/hosted-git-info": { "version": "6.1.1", @@ -11790,44 +11121,38 @@ }, "node_modules/hpagent": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", - "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/hsl-to-rgb-for-reals": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz", - "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/htmlescape": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-parser-js": { "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy-agent": { "version": "5.0.0", @@ -11845,9 +11170,8 @@ }, "node_modules/http-signature": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -11860,9 +11184,8 @@ }, "node_modules/https-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "5.0.1", @@ -11878,9 +11201,8 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -11896,9 +11218,8 @@ }, "node_modules/hyperid": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", - "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", "dev": true, + "license": "MIT", "dependencies": { "uuid": "^8.3.2", "uuid-parse": "^1.1.0" @@ -11906,24 +11227,21 @@ }, "node_modules/hyperid/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/hyperscript-attribute-to-property": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hyperscript-attribute-to-property/-/hyperscript-attribute-to-property-1.0.2.tgz", - "integrity": "sha512-oerMul16jZCmrbNsUw8QgrtDzF8lKgFri1bKQjReLw1IhiiNkI59CWuzZjJDGT79UQ1YiWqXhJMv/tRMVqgtkA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hyperx": { "version": "2.5.4", - "resolved": "https://registry.npmjs.org/hyperx/-/hyperx-2.5.4.tgz", - "integrity": "sha512-iOkSh7Yse7lsN/B9y7OsevLWjeXPqGuHQ5SbwaiJM5xAhWFqhoN6erpK1dQsS12OFU36lyai1pnx1mmzWLQqcA==", "dev": true, + "license": "BSD", "dependencies": { "hyperscript-attribute-to-property": "^1.0.0" } @@ -11999,8 +11317,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -12014,9 +11332,8 @@ }, "node_modules/import-lazy": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -12064,8 +11381,8 @@ }, "node_modules/inflection": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-2.0.1.tgz", - "integrity": "sha512-wzkZHqpb4eGrOKBl34xy3umnYHx8Si5R1U4fwmdxLo5gdH6mEK8gclckTj/qWqy4Je0bsDYe/qazZYuO7xe3XQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -12084,9 +11401,8 @@ }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/init-package-json": { "version": "3.0.2", @@ -12153,26 +11469,23 @@ }, "node_modules/inline-source-map": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.5.3" } }, "node_modules/inline-source-map/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/inquirer": { "version": "9.2.11", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.11.tgz", - "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "license": "MIT", "dependencies": { "@ljharb/through": "^2.3.9", "ansi-escapes": "^4.3.2", @@ -12196,8 +11509,7 @@ }, "node_modules/inquirer/node_modules/chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -12207,25 +11519,22 @@ }, "node_modules/inquirer/node_modules/mute-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/inquirer/node_modules/run-async": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/insert-module-globals": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.5.2", "combine-source-map": "^0.8.0", @@ -12244,12 +11553,11 @@ }, "node_modules/insert-module-globals/node_modules/concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -12259,15 +11567,13 @@ }, "node_modules/insert-module-globals/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/insert-module-globals/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -12280,24 +11586,21 @@ }, "node_modules/insert-module-globals/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/insert-module-globals/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/insight": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/insight/-/insight-0.11.1.tgz", - "integrity": "sha512-TBcZ0qC9dgdmcxL93OoqkY/RZXJtIi0i07phX/QyYk2ysmJtZex59dgTj4Doq50N9CG9dLRe/RIudc/5CCoFNw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "async": "^2.6.2", "chalk": "^4.1.1", @@ -12315,27 +11618,24 @@ }, "node_modules/insight/node_modules/ansi-escapes": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/insight/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/insight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -12345,18 +11645,16 @@ }, "node_modules/insight/node_modules/async": { "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } }, "node_modules/insight/node_modules/cli-cursor": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -12366,39 +11664,34 @@ }, "node_modules/insight/node_modules/cli-width": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/insight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/insight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/insight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/insight/node_modules/figures": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -12408,18 +11701,16 @@ }, "node_modules/insight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/insight/node_modules/inquirer": { "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -12441,9 +11732,8 @@ }, "node_modules/insight/node_modules/inquirer/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -12455,33 +11745,29 @@ }, "node_modules/insight/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/insight/node_modules/mimic-fn": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/insight/node_modules/mute-stream": { "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/insight/node_modules/onetime": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -12491,9 +11777,8 @@ }, "node_modules/insight/node_modules/restore-cursor": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -12504,9 +11789,8 @@ }, "node_modules/insight/node_modules/rxjs": { "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^1.9.0" }, @@ -12516,9 +11800,8 @@ }, "node_modules/insight/node_modules/string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -12529,18 +11812,16 @@ }, "node_modules/insight/node_modules/string-width/node_modules/ansi-regex": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/insight/node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -12550,9 +11831,8 @@ }, "node_modules/insight/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -12562,9 +11842,8 @@ }, "node_modules/insight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -12574,15 +11853,13 @@ }, "node_modules/insight/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/insight/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -12603,9 +11880,8 @@ }, "node_modules/internmap": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/into-stream": { "version": "6.0.0", @@ -12624,9 +11900,8 @@ }, "node_modules/iota-array": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz", - "integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ip": { "version": "2.0.0", @@ -12641,15 +11916,13 @@ }, "node_modules/is-any-array": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz", - "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-arguments": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -12677,6 +11950,7 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "dev": true, "license": "MIT" }, "node_modules/is-bigint": { @@ -12692,9 +11966,8 @@ }, "node_modules/is-boolean-attribute": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/is-boolean-attribute/-/is-boolean-attribute-0.0.1.tgz", - "integrity": "sha512-0kXT52Scokg2Miscvsn5UVqg6y1691vcLJcagie1YHJB4zOEuAhMERLX992jtvaStGy2xQTqOtJhvmG/MK1T5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-boolean-object": { "version": "1.1.2", @@ -12713,9 +11986,8 @@ }, "node_modules/is-buffer": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", @@ -12730,9 +12002,8 @@ }, "node_modules/is-ci": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, + "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, @@ -12742,9 +12013,8 @@ }, "node_modules/is-ci/node_modules/ci-info": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-core-module": { "version": "2.13.0", @@ -12774,9 +12044,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -12804,18 +12073,16 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-generator-function": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -12837,44 +12104,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-installed-globally": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, + "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -12888,8 +12121,7 @@ }, "node_modules/is-interactive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", "engines": { "node": ">=8" } @@ -12913,9 +12145,8 @@ }, "node_modules/is-npm": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -12947,9 +12178,8 @@ }, "node_modules/is-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12991,9 +12221,8 @@ }, "node_modules/is-property": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-regex": { "version": "1.1.4", @@ -13042,8 +12271,8 @@ }, "node_modules/is-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13105,9 +12334,8 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "1.3.0", @@ -13132,9 +12360,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -13144,9 +12371,8 @@ }, "node_modules/is-yarn-global": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isarray": { "version": "0.0.1", @@ -13169,9 +12395,8 @@ }, "node_modules/isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -13198,18 +12423,16 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -13221,9 +12444,8 @@ }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -13236,9 +12458,8 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -13250,9 +12471,8 @@ }, "node_modules/istanbul-reports": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -13299,9 +12519,8 @@ }, "node_modules/jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -13325,9 +12544,8 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^5.0.0", "jest-util": "^29.7.0", @@ -13339,9 +12557,8 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -13370,9 +12587,8 @@ }, "node_modules/jest-circus/node_modules/dedent": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, + "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -13384,9 +12600,8 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -13417,9 +12632,8 @@ }, "node_modules/jest-cli/node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -13431,9 +12645,8 @@ }, "node_modules/jest-cli/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -13448,9 +12661,8 @@ }, "node_modules/jest-cli/node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -13466,18 +12678,16 @@ }, "node_modules/jest-cli/node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/jest-config": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -13520,9 +12730,8 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -13535,9 +12744,8 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, + "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -13547,9 +12755,8 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -13563,9 +12770,8 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -13580,18 +12786,16 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -13614,9 +12818,8 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -13627,9 +12830,8 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -13642,9 +12844,8 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -13662,9 +12863,8 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -13676,9 +12876,8 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -13693,18 +12892,16 @@ }, "node_modules/jest-regex-util": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -13722,9 +12919,8 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, + "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -13735,9 +12931,8 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -13767,9 +12962,8 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -13800,9 +12994,8 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -13831,9 +13024,8 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -13848,9 +13040,8 @@ }, "node_modules/jest-validate": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -13865,9 +13056,8 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -13877,9 +13067,8 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -13896,9 +13085,8 @@ }, "node_modules/jest-worker": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -13911,9 +13099,8 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13925,9 +13112,9 @@ } }, "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", + "version": "17.10.1", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", @@ -13938,19 +13125,19 @@ }, "node_modules/joycon": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -13961,15 +13148,13 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -14076,9 +13261,8 @@ }, "node_modules/json-buffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -14088,8 +13272,8 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "dev": true, + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", @@ -14101,9 +13285,8 @@ }, "node_modules/json-schema-typed": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -14121,9 +13304,8 @@ }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/json5": { "version": "2.2.3", @@ -14153,17 +13335,15 @@ }, "node_modules/jsonparse": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/jsonpath-plus": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz", - "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==", + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -14177,9 +13357,8 @@ }, "node_modules/JSONStream": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -14193,9 +13372,8 @@ }, "node_modules/jsonstream2": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonstream2/-/jsonstream2-3.0.0.tgz", - "integrity": "sha512-8ngq2XB8NjYrpe3+Xtl9lFJl6RoV2dNT4I7iyaHwxUpTBwsj0AlAR7epGfeYVP0z4Z7KxMoSxRgJWrd2jmBT/Q==", "dev": true, + "license": "MIT", "dependencies": { "jsonparse": "1.3.1", "through2": "^3.0.1", @@ -14210,9 +13388,8 @@ }, "node_modules/jsonstream2/node_modules/through2": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "2 || 3" @@ -14220,9 +13397,8 @@ }, "node_modules/jsprim": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -14247,18 +13423,16 @@ }, "node_modules/kafkajs": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", - "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/keyv": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.0" } @@ -14274,30 +13448,29 @@ }, "node_modules/klaw-sync": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11" } }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/kuler": { "version": "2.0.0", + "dev": true, "license": "MIT" }, "node_modules/labeled-stream-splicer": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "stream-splicer": "^2.0.0" @@ -14305,9 +13478,8 @@ }, "node_modules/latest-version": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "dev": true, + "license": "MIT", "dependencies": { "package-json": "^6.3.0" }, @@ -14333,9 +13505,8 @@ }, "node_modules/lazystream/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -14581,10 +13752,9 @@ } }, "node_modules/lerna/node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "version": "8.2.5", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -14600,7 +13770,7 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6", - "wrap-ansi": "^6.0.1" + "wrap-ansi": "^7.0.0" }, "engines": { "node": ">=12.0.0" @@ -14721,6 +13891,22 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/lerna/node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/lerna/node_modules/write-file-atomic": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", @@ -15156,8 +14342,8 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "dev": true, + "license": "MIT" }, "node_modules/load-json-file": { "version": "6.2.0", @@ -15203,21 +14389,18 @@ }, "node_modules/lodash.chunk": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.deburr": { "version": "4.1.0", @@ -15266,8 +14449,7 @@ }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -15281,8 +14463,7 @@ }, "node_modules/log-symbols/node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -15291,10 +14472,12 @@ } }, "node_modules/logform": { - "version": "2.4.2", + "version": "2.5.1", + "dev": true, "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", @@ -15303,15 +14486,13 @@ }, "node_modules/long": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -15321,15 +14502,13 @@ }, "node_modules/lower-case": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lowercase-keys": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15344,9 +14523,8 @@ }, "node_modules/macos-release": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", - "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -15356,9 +14534,8 @@ }, "node_modules/magic-string": { "version": "0.25.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", - "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", "dev": true, + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.1" } @@ -15379,9 +14556,8 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -15458,18 +14634,16 @@ }, "node_modules/makeerror": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/manage-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/manage-path/-/manage-path-2.0.0.tgz", - "integrity": "sha512-NJhyB+PJYTpxhxZJ3lecIGgh4kwIY2RAh44XvAz9UlqthlQwtPBf62uBVR8XaD8CRuSjQ6TnZH2lNJkbLPZM2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/map-obj": { "version": "4.3.0", @@ -15485,8 +14659,6 @@ }, "node_modules/md5-file": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", - "integrity": "sha1-5Rn2Mf7KnDnn+eoXgLY8R0UBLiA=", "dev": true, "license": "MIT", "bin": { @@ -15498,9 +14670,8 @@ }, "node_modules/md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -15509,8 +14680,7 @@ }, "node_modules/memory-pager": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT", "optional": true }, "node_modules/meow": { @@ -15726,27 +14896,24 @@ }, "node_modules/merge-source-map": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "^0.5.6" } }, "node_modules/merge-source-map/node_modules/source-map": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", @@ -15758,9 +14925,8 @@ }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15779,9 +14945,8 @@ }, "node_modules/miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -15792,15 +14957,13 @@ }, "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mime": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -15834,9 +14997,8 @@ }, "node_modules/mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -15852,9 +15014,8 @@ }, "node_modules/minify-stream": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minify-stream/-/minify-stream-2.1.0.tgz", - "integrity": "sha512-P5xE4EQRkn7Td54VGcgfDMFx1jmKPPIXCdcMfrbXS6cNHK4dO1LXwtYFb48hHrSmZfT+jlGImvHgSZEkbpNtCw==", "dev": true, + "license": "MIT", "dependencies": { "concat-stream": "^2.0.0", "convert-source-map": "^1.5.0", @@ -15869,21 +15030,18 @@ }, "node_modules/minify-stream/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/minimatch": { "version": "3.1.2", @@ -16154,27 +15312,24 @@ }, "node_modules/ml-array-max": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz", - "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", "dev": true, + "license": "MIT", "dependencies": { "is-any-array": "^2.0.0" } }, "node_modules/ml-array-min": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz", - "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", "dev": true, + "license": "MIT", "dependencies": { "is-any-array": "^2.0.0" } }, "node_modules/ml-array-rescale": { "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", - "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", "dev": true, + "license": "MIT", "dependencies": { "is-any-array": "^2.0.0", "ml-array-max": "^1.2.4", @@ -16183,15 +15338,13 @@ }, "node_modules/ml-distance-euclidean": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ml-distance-euclidean/-/ml-distance-euclidean-2.0.0.tgz", - "integrity": "sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ml-kmeans": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ml-kmeans/-/ml-kmeans-4.2.1.tgz", - "integrity": "sha512-MyXoWfDuoH+eYjPCIvfMXBuQ0K473APoc57oeFSFcGCHPZuppVv8cQKnhxYb8ZDEMN47MgcPtcHmueTeq6JmVQ==", "dev": true, + "license": "MIT", "dependencies": { "ml-distance-euclidean": "^2.0.0", "ml-matrix": "^5.1.1", @@ -16201,9 +15354,8 @@ }, "node_modules/ml-matrix": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-5.3.0.tgz", - "integrity": "sha512-DuvdXYwfGRpM+7MVdvi/zSjiazn+8QPrACT3Xi0pQpYx5SXZ1WuFYwUDXTSmV9+hrCxRhrC4hrzesNcfjpvOsw==", "dev": true, + "license": "MIT", "dependencies": { "ml-array-max": "^1.1.1", "ml-array-rescale": "^1.2.1" @@ -16211,27 +15363,24 @@ }, "node_modules/ml-nearest-vector": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ml-nearest-vector/-/ml-nearest-vector-2.0.1.tgz", - "integrity": "sha512-gMPwNm3eed59ewJYiCK/+wElWBfNoD6JizH965ePiQgCo0pvQL63w4YdZhLs5eUV0iWcq6brVMUBL6iMySHnqg==", "dev": true, + "license": "MIT", "dependencies": { "ml-distance-euclidean": "^2.0.0" } }, "node_modules/ml-random": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ml-random/-/ml-random-0.5.0.tgz", - "integrity": "sha512-zLJBmNb34LOz+vN6BD8l3aYm/VWYWbmAunrLMPs4dHf4gTl8BWlhil72j56HubPg86zrXioIs4qoHq7Topy6tw==", "dev": true, + "license": "MIT", "dependencies": { "ml-xsadd": "^2.0.0" } }, "node_modules/ml-xsadd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ml-xsadd/-/ml-xsadd-2.0.0.tgz", - "integrity": "sha512-VoAYUqmPRmzKbbqRejjqceGFp3VF81Qe8XXFGU0UXLxB7Mf4GGvyGq5Qn3k4AiQgDEV6WzobqlPOd+j0+m6IrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/modify-values": { "version": "1.0.1", @@ -16244,9 +15393,8 @@ }, "node_modules/module-deps": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", "dev": true, + "license": "MIT", "dependencies": { "browser-resolve": "^2.0.0", "cached-path-relative": "^1.0.2", @@ -16273,12 +15421,11 @@ }, "node_modules/module-deps/node_modules/concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -16288,15 +15435,13 @@ }, "node_modules/module-deps/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/module-deps/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -16309,15 +15454,13 @@ }, "node_modules/module-deps/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/module-deps/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -16372,10 +15515,9 @@ }, "node_modules/mongodb-memory-server": { "version": "8.11.5", - "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-8.11.5.tgz", - "integrity": "sha512-/yiw3L2TIMpi9I6GXg379k6d+RG3k+9V9o24kK5h+NBTtYLNuWa5iEvtce/O3jqhg6yo31T5XG2e/Hm4UwBM1A==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "mongodb-memory-server-core": "8.11.5", "tslib": "^2.4.1" @@ -16386,9 +15528,8 @@ }, "node_modules/mongodb-memory-server-core": { "version": "8.11.5", - "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-8.11.5.tgz", - "integrity": "sha512-bhptlOruCEYrLofCbjACMoClgP1rFkhSNDzI/bbG/pUAg41UB00eaDPerYVvRf2jvOJqKF4+U9xqXiSvkbMvXw==", "dev": true, + "license": "MIT", "dependencies": { "@types/tmp": "^0.2.3", "async-mutex": "^0.3.2", @@ -16413,9 +15554,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/bson": { "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "buffer": "^5.6.0" }, @@ -16425,9 +15565,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -16437,9 +15576,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/mongodb": { "version": "4.17.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz", - "integrity": "sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bson": "^4.7.2", "mongodb-connection-string-url": "^2.6.0", @@ -16455,9 +15593,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -16470,9 +15607,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/tmp": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, + "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -16482,9 +15618,8 @@ }, "node_modules/morphdom": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.0.tgz", - "integrity": "sha512-8L8DwbdjjWwM/aNqj7BSoSn4G7SQLNiDcxCnMWbf506jojR6lNQ5YOmQqXEIE8u3C492UlkN4d0hQwz97+M1oQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ms": { "version": "2.1.2", @@ -16520,9 +15655,8 @@ }, "node_modules/multistream": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz", - "integrity": "sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.5" @@ -16530,15 +15664,13 @@ }, "node_modules/multistream/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/multistream/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -16551,15 +15683,13 @@ }, "node_modules/multistream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/multistream/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -16571,31 +15701,27 @@ }, "node_modules/mutexify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz", - "integrity": "sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==", "dev": true, + "license": "MIT", "dependencies": { "queue-tick": "^1.0.0" } }, "node_modules/nan": { "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/nanoassert": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", - "integrity": "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/nanobench": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", - "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", "dev": true, + "license": "MIT", "dependencies": { "browser-process-hrtime": "^0.1.2", "chalk": "^1.1.3", @@ -16609,27 +15735,24 @@ }, "node_modules/nanobench/node_modules/ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nanobench/node_modules/ansi-styles": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/nanobench/node_modules/chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -16643,18 +15766,16 @@ }, "node_modules/nanobench/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/nanobench/node_modules/strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -16664,18 +15785,16 @@ }, "node_modules/nanobench/node_modules/supports-color": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/nanohtml": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/nanohtml/-/nanohtml-1.10.0.tgz", - "integrity": "sha512-r/3AQl+jxAxUIJRiKExUjBtFcE1cm4yTOsTIdVqqlxPNtBxJh522ANrcQYzdNHhPzbPgb7j6qujq6eGehBX0kg==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.8.2", "camel-case": "^3.0.0", @@ -16692,14 +15811,11 @@ }, "node_modules/nanohtml/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, "funding": [ { @@ -16707,6 +15823,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -16726,9 +15843,8 @@ }, "node_modules/ndarray": { "version": "1.0.19", - "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz", - "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==", "dev": true, + "license": "MIT", "dependencies": { "iota-array": "^1.0.0", "is-buffer": "^1.0.2" @@ -16736,15 +15852,13 @@ }, "node_modules/ndarray-blas-level1": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ndarray-blas-level1/-/ndarray-blas-level1-1.1.3.tgz", - "integrity": "sha512-g0Qzf+W0J2S/w1GeYlGuFjGRGGE+f+u8x4O8lhBtsrCaf++n/+YLTPKk1tovYmciL3zUePmwi/szoP5oj8zQvg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ndarray-cholesky-factorization": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ndarray-cholesky-factorization/-/ndarray-cholesky-factorization-1.0.2.tgz", - "integrity": "sha512-8mXl8mMCDgv9plZem0ifolu39hHYu+IchdBX39VWS8X3f4935JDq5uGpxOJr2gXiy7QgY6MglAmoCjyHRWyqlQ==", "dev": true, + "license": "MIT", "dependencies": { "ndarray": "^1.0.16", "ndarray-blas-level1": "^1.0.2", @@ -16753,15 +15867,13 @@ }, "node_modules/ndarray-crout-decomposition": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ndarray-crout-decomposition/-/ndarray-crout-decomposition-1.1.0.tgz", - "integrity": "sha512-jcww9T/4thrVvBDCk5PivUScolTW1Lu6QWzvrxHMHAhZzTUzznvT/U/xfn40EfseiITLkHlST/0df5pn2yQHUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ndarray-determinant": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ndarray-determinant/-/ndarray-determinant-1.0.0.tgz", - "integrity": "sha512-fJUlUhFZHwKP0lFsF2Si14dnkXBoiqKVzlv2nsUAcycsjjpuUkJGF0SXLHbRgl1wI6sgordV4P86bJ4ulcR6Yw==", "dev": true, + "license": "MIT", "dependencies": { "ndarray-crout-decomposition": "^1.1.0", "ndarray-diagonal": "^1.0.0", @@ -16771,18 +15883,16 @@ }, "node_modules/ndarray-diagonal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ndarray-diagonal/-/ndarray-diagonal-1.0.0.tgz", - "integrity": "sha512-r+LgakWgIt9xiRES42fwP6nc3pn4DjGSrs+OCPqiVTxtzCJ2L31KFypcHplSXG008j0IWZt6bx1+ZRbx+aQkfA==", "dev": true, + "license": "MIT", "dependencies": { "ndarray": "^1.0.15" } }, "node_modules/ndarray-inv": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ndarray-inv/-/ndarray-inv-0.2.0.tgz", - "integrity": "sha512-rl+5PMUrP3WCYktFOK3myIiOwA6Q1oQddvQl2TN0tROcTXciCakha0QRMdE5t8ywlkbp1rmIKtWKFrEO7BAEUQ==", "dev": true, + "license": "MIT", "dependencies": { "ndarray": "^1.0.18", "ndarray-scratch": "^1.2.0" @@ -16790,18 +15900,16 @@ }, "node_modules/ndarray-ops": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ndarray-ops/-/ndarray-ops-1.2.2.tgz", - "integrity": "sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw==", "dev": true, + "license": "MIT", "dependencies": { "cwise-compiler": "^1.0.0" } }, "node_modules/ndarray-scratch": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ndarray-scratch/-/ndarray-scratch-1.2.0.tgz", - "integrity": "sha512-a4pASwB1jQyJcKLYrwrladVfDZDUGc78qLJZbHyb1Q4rhte0URhzc6ALQpBcauwgov0sXLwZz3vYH5jKAhSMIg==", "dev": true, + "license": "MIT", "dependencies": { "ndarray": "^1.0.14", "ndarray-ops": "^1.2.1", @@ -16825,8 +15933,6 @@ }, "node_modules/new-find-package-json": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz", - "integrity": "sha1-llU2OHgds1Bh81HozLTQcSa2QH0=", "dev": true, "license": "MIT", "dependencies": { @@ -16838,14 +15944,12 @@ }, "node_modules/next-tick": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/njwt": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/njwt/-/njwt-2.0.0.tgz", - "integrity": "sha512-1RcqirhCqThBEe4KO83pFg0wPBa1c9NiXNCrocD2EbZqb6ksWWDVnp/w/p0gsyUcVa05PhhaaPjs9rc/GLmdxQ==", + "license": "Apache-2.0", "dependencies": { "@types/node": "^15.0.1", "ecdsa-sig-formatter": "^1.0.5", @@ -16868,9 +15972,8 @@ }, "node_modules/no-case": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^1.1.1" } @@ -16882,10 +15985,9 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", + "version": "2.6.12", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -16994,15 +16096,13 @@ }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/noms": { "version": "0.0.0", @@ -17046,9 +16146,8 @@ }, "node_modules/normalize-html-whitespace": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-0.2.0.tgz", - "integrity": "sha512-5CZAEQ4bQi8Msqw0GAT6rrkrjNN4ZKqAG3+jJMwms4O6XoMvh6ekwOueG4mRS1LbPUR1r9EdnhxxfpzMTOdzKw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -17078,9 +16177,8 @@ }, "node_modules/normalize-url": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -17293,13 +16391,13 @@ } }, "node_modules/npm-registry-fetch": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz", - "integrity": "sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==", + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dev": true, "dependencies": { "make-fetch-happen": "^11.0.0", - "minipass": "^4.0.0", + "minipass": "^5.0.0", "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", @@ -17311,9 +16409,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { "node": ">=8" @@ -17348,9 +16446,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -17375,9 +16472,8 @@ }, "node_modules/number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17658,18 +16754,16 @@ }, "node_modules/oauth-sign": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17768,20 +16862,17 @@ }, "node_modules/obuf": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-exit-leak-free": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + "license": "MIT" }, "node_modules/on-net-listen": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/on-net-listen/-/on-net-listen-1.1.2.tgz", - "integrity": "sha512-y1HRYy8s/RlcBvDUwKXSmkODMdx4KSuIvloCnQYJ2LdBBC1asY4HtfhXwe3UWknLakATZDnbzht2Ijw3M1EqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=9.4.0 || ^8.9.4" } @@ -17795,6 +16886,7 @@ }, "node_modules/one-time": { "version": "1.0.0", + "dev": true, "license": "MIT", "dependencies": { "fn.name": "1.x.x" @@ -17832,9 +16924,8 @@ }, "node_modules/opn": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, + "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" }, @@ -17844,18 +16935,16 @@ }, "node_modules/opn/node_modules/is-wsl": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -17870,8 +16959,7 @@ }, "node_modules/ora": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -17892,8 +16980,7 @@ }, "node_modules/ora/node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -17903,15 +16990,13 @@ }, "node_modules/os-browserify": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/os-name": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", - "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", "dev": true, + "license": "MIT", "dependencies": { "macos-release": "^2.5.0", "windows-release": "^4.0.0" @@ -17932,9 +17017,8 @@ }, "node_modules/p-cancelable": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -18082,9 +17166,8 @@ }, "node_modules/package-json": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "dev": true, + "license": "MIT", "dependencies": { "got": "^9.6.0", "registry-auth-token": "^4.0.0", @@ -18097,9 +17180,8 @@ }, "node_modules/package-json/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -18333,14 +17415,13 @@ }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "dev": true, + "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -18350,18 +17431,16 @@ }, "node_modules/parents": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", "dev": true, + "license": "MIT", "dependencies": { "path-platform": "~0.11.15" } }, "node_modules/parse-asn1": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, + "license": "ISC", "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -18397,6 +17476,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -18430,9 +17510,8 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", @@ -18465,9 +17544,8 @@ }, "node_modules/path-platform": { "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -18499,6 +17577,7 @@ }, "node_modules/path-type": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -18506,9 +17585,8 @@ }, "node_modules/pbkdf2": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, + "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -18522,21 +17600,17 @@ }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true, "license": "MIT" }, "node_modules/performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pg": { "version": "8.11.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", - "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "license": "MIT", "dependencies": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -18563,14 +17637,12 @@ }, "node_modules/pg-cloudflare": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", - "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + "license": "MIT" }, "node_modules/pg-format": { "version": "1.0.4", @@ -18588,25 +17660,22 @@ }, "node_modules/pg-numeric": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", - "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", "dev": true, + "license": "ISC", "engines": { "node": ">=4" } }, "node_modules/pg-pool": { "version": "3.6.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", - "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", @@ -18631,17 +17700,15 @@ }, "node_modules/pgpass/node_modules/split2": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", "engines": { "node": ">= 10.x" } }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -18684,8 +17751,7 @@ }, "node_modules/pino-abstract-transport": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", - "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", + "license": "MIT", "dependencies": { "readable-stream": "^4.0.0", "split2": "^4.0.0" @@ -18693,8 +17759,6 @@ }, "node_modules/pino-abstract-transport/node_modules/buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -18709,6 +17773,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -18716,8 +17781,7 @@ }, "node_modules/pino-abstract-transport/node_modules/readable-stream": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -18731,8 +17795,7 @@ }, "node_modules/pino-abstract-transport/node_modules/split2": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", "engines": { "node": ">= 10.x" } @@ -18763,8 +17826,6 @@ }, "node_modules/pino-pretty/node_modules/buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -18779,6 +17840,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -18786,16 +17848,14 @@ }, "node_modules/pino-pretty/node_modules/dateformat": { "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", "engines": { "node": "*" } }, "node_modules/pino-pretty/node_modules/readable-stream": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -18808,9 +17868,8 @@ } }, "node_modules/pino-pretty/node_modules/sonic-boom": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz", - "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==", + "version": "3.3.0", + "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" } @@ -18888,9 +17947,8 @@ }, "node_modules/pkg-up": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -18900,9 +17958,8 @@ }, "node_modules/pkg-up/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -18912,9 +17969,8 @@ }, "node_modules/pkg-up/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -18925,9 +17981,8 @@ }, "node_modules/pkg-up/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -18940,9 +17995,8 @@ }, "node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -18952,17 +18006,14 @@ }, "node_modules/pkg-up/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.27", "dev": true, "funding": [ { @@ -18978,6 +18029,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", @@ -18989,9 +18041,8 @@ }, "node_modules/postcss-import": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-13.0.0.tgz", - "integrity": "sha512-LPUbm3ytpYopwQQjqgUH4S3EM/Gb9QsaSPP/5vnoi+oKVy3/mIk2sc0Paqw7RL57GpScm9MdIMUypw2znWiBpg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -19019,9 +18070,8 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postgres-array": { "version": "2.0.0", @@ -19056,9 +18106,8 @@ }, "node_modules/postgres-range": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.3.tgz", - "integrity": "sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -19070,23 +18119,22 @@ }, "node_modules/prepend-http": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { - "prettier": "bin/prettier.cjs" + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=14" + "node": ">=10.13.0" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -19105,9 +18153,8 @@ }, "node_modules/pretty-bytes": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -19117,9 +18164,8 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -19142,9 +18188,8 @@ }, "node_modules/pretty-hrtime": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -19160,8 +18205,7 @@ }, "node_modules/process": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -19177,9 +18221,8 @@ }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -19223,9 +18266,8 @@ }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -19245,9 +18287,8 @@ }, "node_modules/proper-lockfile": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", @@ -19273,9 +18314,8 @@ }, "node_modules/protocol-buffers": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/protocol-buffers/-/protocol-buffers-4.2.0.tgz", - "integrity": "sha512-hNp56d5uuREVde7UqP+dmBkwzxrhJwYU5nL/mdivyFfkRZdgAgojkyBeU3jKo7ZHrjdSx6Q1CwUmYJI6INt20g==", "dev": true, + "license": "MIT", "dependencies": { "generate-function": "^2.0.0", "generate-object-property": "^1.2.0", @@ -19290,20 +18330,23 @@ }, "node_modules/protocol-buffers-encodings": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-encodings/-/protocol-buffers-encodings-1.2.0.tgz", - "integrity": "sha512-daeNPuKh1NlLD1uDfbLpD+xyUTc07nEtfHwmBZmt/vH0B7VOM+JOCOpDcx9ZRpqHjAiIkGqyTDi+wfGSl17R9w==", "dev": true, + "license": "MIT", "dependencies": { "b4a": "^1.6.0", "signed-varint": "^2.0.1", "varint": "5.0.0" } }, + "node_modules/protocol-buffers-encodings/node_modules/varint": { + "version": "5.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/protocol-buffers-schema": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/protocols": { "version": "2.0.1", @@ -19328,15 +18371,13 @@ }, "node_modules/psl": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -19348,9 +18389,8 @@ }, "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", @@ -19362,9 +18402,8 @@ }, "node_modules/pumpify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", "dev": true, + "license": "MIT", "dependencies": { "duplexify": "^4.1.1", "inherits": "^2.0.3", @@ -19372,18 +18411,16 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.2.0", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pupa": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", "dev": true, + "license": "MIT", "dependencies": { "escape-goat": "^2.0.0" }, @@ -19393,8 +18430,6 @@ }, "node_modules/pure-rand": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", - "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", "dev": true, "funding": [ { @@ -19405,7 +18440,8 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" }, "node_modules/q": { "version": "1.5.1", @@ -19419,9 +18455,8 @@ }, "node_modules/qs": { "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -19434,8 +18469,6 @@ }, "node_modules/querystring-es3": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, "engines": { "node": ">=0.4.x" @@ -19443,9 +18476,8 @@ }, "node_modules/querystringify": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -19467,9 +18499,8 @@ }, "node_modules/queue-tick": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/quick-format-unescaped": { "version": "4.0.4", @@ -19486,9 +18517,8 @@ }, "node_modules/quote-stream": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==", "dev": true, + "license": "MIT", "dependencies": { "buffer-equal": "0.0.1", "minimist": "^1.1.3", @@ -19509,18 +18539,16 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/randomfill": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -19528,9 +18556,8 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -19543,9 +18570,8 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -19569,18 +18595,16 @@ }, "node_modules/read-cache": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } }, "node_modules/read-cache/node_modules/pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -19596,24 +18620,21 @@ }, "node_modules/read-only-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "^2.0.2" } }, "node_modules/read-only-stream/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/read-only-stream/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -19626,15 +18647,13 @@ }, "node_modules/read-only-stream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/read-only-stream/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -19939,8 +18958,7 @@ }, "node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -19968,9 +18986,8 @@ }, "node_modules/readdir-glob/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -19980,8 +18997,7 @@ }, "node_modules/real-require": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", "engines": { "node": ">= 12.13.0" } @@ -20034,9 +19050,8 @@ }, "node_modules/registry-auth-token": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", "dev": true, + "license": "MIT", "dependencies": { "rc": "1.2.8" }, @@ -20046,9 +19061,8 @@ }, "node_modules/registry-url": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "dev": true, + "license": "MIT", "dependencies": { "rc": "^1.2.8" }, @@ -20058,16 +19072,13 @@ }, "node_modules/reinterval": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/request": { "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -20096,9 +19107,8 @@ }, "node_modules/request/node_modules/form-data": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -20110,18 +19120,16 @@ }, "node_modules/request/node_modules/qs": { "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, "node_modules/request/node_modules/tough-cookie": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -20132,10 +19140,8 @@ }, "node_modules/request/node_modules/uuid": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, + "license": "MIT", "bin": { "uuid": "bin/uuid" } @@ -20157,15 +19163,13 @@ }, "node_modules/require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.1", @@ -20204,34 +19208,31 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/resolve.exports": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/responselike": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, + "license": "MIT", "dependencies": { "lowercase-keys": "^1.0.0" } }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -20249,15 +19250,13 @@ }, "node_modules/retimer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", - "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -20340,29 +19339,13 @@ }, "node_modules/ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/run-async": { "version": "2.4.1", "dev": true, @@ -20395,8 +19378,7 @@ }, "node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -20480,9 +19462,8 @@ }, "node_modules/scope-analyzer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", - "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "array-from": "^2.1.1", "dash-ast": "^2.0.1", @@ -20503,14 +19484,12 @@ }, "node_modules/seedrandom": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -20523,9 +19502,8 @@ }, "node_modules/semver-diff": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.3.0" }, @@ -20535,9 +19513,8 @@ }, "node_modules/semver-diff/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -20562,9 +19539,8 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-cookie-parser": { "version": "2.5.1", @@ -20586,9 +19562,8 @@ }, "node_modules/sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -20611,15 +19586,13 @@ }, "node_modules/shallow-copy": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/shasum-object": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "fast-safe-stringify": "^2.0.7" } @@ -20645,18 +19618,16 @@ }, "node_modules/shell-quote": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/showdown": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", - "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "yargs": "^14.2" }, @@ -20666,18 +19637,16 @@ }, "node_modules/showdown/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/showdown/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -20687,9 +19656,8 @@ }, "node_modules/showdown/node_modules/cliui": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -20698,30 +19666,26 @@ }, "node_modules/showdown/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/showdown/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/showdown/node_modules/emoji-regex": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/showdown/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -20731,18 +19695,16 @@ }, "node_modules/showdown/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/showdown/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -20753,9 +19715,8 @@ }, "node_modules/showdown/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -20768,9 +19729,8 @@ }, "node_modules/showdown/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -20780,18 +19740,16 @@ }, "node_modules/showdown/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/showdown/node_modules/string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -20803,9 +19761,8 @@ }, "node_modules/showdown/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -20815,9 +19772,8 @@ }, "node_modules/showdown/node_modules/wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -20829,15 +19785,13 @@ }, "node_modules/showdown/node_modules/y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/showdown/node_modules/yargs": { "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^5.0.0", "decamelize": "^1.2.0", @@ -20854,9 +19808,8 @@ }, "node_modules/showdown/node_modules/yargs-parser": { "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -20881,9 +19834,8 @@ }, "node_modules/signed-varint": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", - "integrity": "sha512-abgDPg1106vuZZOvw7cFwdCABddfJRz5akcCcchzTbhyhYnsG31y4AlZEgp315T7W3nQq5P4xeOm186ZiPVFzw==", "dev": true, + "license": "MIT", "dependencies": { "varint": "~5.0.0" } @@ -20909,8 +19861,6 @@ }, "node_modules/simple-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true, "funding": [ { @@ -20925,10 +19875,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-swizzle": { "version": "0.2.2", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" @@ -20936,31 +19888,29 @@ }, "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", + "dev": true, "license": "MIT" }, "node_modules/single-line-log": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha512-awzaaIPtYFdexLr6TBpcZSGPB6D1RInNO/qNetgaJloPDF/D0GkVtLvGEp8InfmLV7CyLyQ5fIRP+tVN/JmWQA==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^1.0.1" } }, "node_modules/single-line-log/node_modules/ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/single-line-log/node_modules/is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, + "license": "MIT", "dependencies": { "number-is-nan": "^1.0.0" }, @@ -20970,9 +19920,8 @@ }, "node_modules/single-line-log/node_modules/string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, + "license": "MIT", "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -20984,9 +19933,8 @@ }, "node_modules/single-line-log/node_modules/strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -20996,15 +19944,13 @@ }, "node_modules/sinusoidal-decimal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sinusoidal-decimal/-/sinusoidal-decimal-1.0.0.tgz", - "integrity": "sha512-KPUi1ZqLocV64n0AuV+g4VDjAM+tEEY66nUd+rYaVBHIfeheGGUvIxe9bf7Mpc1PonDTVW2uRr9nigQa9odvuA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", @@ -21070,27 +20016,24 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -21098,15 +20041,12 @@ }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sparse-bitfield": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", "optional": true, "dependencies": { "memory-pager": "^1.0.2" @@ -21158,8 +20098,6 @@ }, "node_modules/split-ca": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=", "dev": true, "license": "ISC" }, @@ -21204,9 +20142,8 @@ }, "node_modules/sshpk": { "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "dev": true, + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -21264,6 +20201,7 @@ }, "node_modules/stack-trace": { "version": "0.0.10", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -21290,18 +20228,16 @@ }, "node_modules/static-eval": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", "dev": true, + "license": "MIT", "dependencies": { "escodegen": "^1.11.1" } }, "node_modules/static-module": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz", - "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.3.0", "concat-stream": "~1.6.0", @@ -21321,12 +20257,11 @@ }, "node_modules/static-module/node_modules/concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -21336,21 +20271,18 @@ }, "node_modules/static-module/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/static-module/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/static-module/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21363,24 +20295,21 @@ }, "node_modules/static-module/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/static-module/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/stream-browserify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -21388,18 +20317,16 @@ }, "node_modules/stream-collector": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-collector/-/stream-collector-1.0.1.tgz", - "integrity": "sha512-b9/C+HonJNmPmdBFGa0aJc9cai07YksAFvmchnSobiIitppiBn6wfAN7rLGEz6fE30Rj9EC/UVkovzoLJTpC5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.3.1" } }, "node_modules/stream-combiner2": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", "dev": true, + "license": "MIT", "dependencies": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" @@ -21407,15 +20334,13 @@ }, "node_modules/stream-combiner2/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-combiner2/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21428,24 +20353,21 @@ }, "node_modules/stream-combiner2/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-combiner2/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/stream-http": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dev": true, + "license": "MIT", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -21455,15 +20377,13 @@ }, "node_modules/stream-shift": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-splicer": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.2" @@ -21471,15 +20391,13 @@ }, "node_modules/stream-splicer/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-splicer/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21492,24 +20410,21 @@ }, "node_modules/stream-splicer/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-splicer/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/stream-template": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stream-template/-/stream-template-0.0.10.tgz", - "integrity": "sha512-whIqf/ljJ88dr0z6iNFtJq09rs4R6JxJOnIqGthC3rHFEMYq6ssm4sPYILXEPrFYncMjF39An6MBys1o5BC19w==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.4.1", "readable-stream": "^2.3.6" @@ -21520,15 +20435,13 @@ }, "node_modules/stream-template/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-template/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21541,24 +20454,21 @@ }, "node_modules/stream-template/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stream-template/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/streaming-json-stringify": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/streaming-json-stringify/-/streaming-json-stringify-3.1.0.tgz", - "integrity": "sha512-axtfs3BDxAsrZ9swD163FBrXZ8dhJJp6kUI6C97TvUZG9RHKfbg9nFbXqEheFNOb3IYMEt2ag9F62sWLFUZ4ug==", "dev": true, + "license": "MIT", "dependencies": { "json-stringify-safe": "5", "readable-stream": "2" @@ -21566,15 +20476,13 @@ }, "node_modules/streaming-json-stringify/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/streaming-json-stringify/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21587,32 +20495,27 @@ }, "node_modules/streaming-json-stringify/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/streaming-json-stringify/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/streamsearch": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "engines": { "node": ">=10.0.0" } }, "node_modules/streamx": { "version": "2.15.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", - "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", "dev": true, + "license": "MIT", "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -21627,9 +20530,8 @@ }, "node_modules/string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -21644,8 +20546,7 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -21740,18 +20641,16 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -21782,8 +20681,7 @@ }, "node_modules/strnum": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT", "optional": true }, "node_modules/strong-log-transformer": { @@ -21805,15 +20703,15 @@ }, "node_modules/subarg": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.1.0" } }, "node_modules/sugar": { "version": "2.0.6", + "dev": true, "license": "MIT", "dependencies": { "sugar-core": "^2.0.0" @@ -21824,6 +20722,7 @@ }, "node_modules/sugar-core": { "version": "2.0.6", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.23" @@ -21831,15 +20730,13 @@ }, "node_modules/summary": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/summary/-/summary-2.1.0.tgz", - "integrity": "sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/superagent": { "version": "8.0.9", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", - "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", "dev": true, + "license": "MIT", "dependencies": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.4", @@ -21858,9 +20755,8 @@ }, "node_modules/supertest": { "version": "6.3.3", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", - "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", "dev": true, + "license": "MIT", "dependencies": { "methods": "^1.1.2", "superagent": "^8.0.5" @@ -21890,36 +20786,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dev": true, - "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/syntax-error": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.2.0" } }, "node_modules/tachyons": { "version": "4.12.0", - "resolved": "https://registry.npmjs.org/tachyons/-/tachyons-4.12.0.tgz", - "integrity": "sha512-2nA2IrYFy3raCM9fxJ2KODRGHVSZNTW3BR0YnlGsLUf1DA3pk3YfWZ/DdfbnZK6zLZS+jUenlUGJsKcA5fUiZg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tar": { "version": "6.1.11", @@ -21940,9 +20818,8 @@ }, "node_modules/tar-fs": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, + "license": "MIT", "dependencies": { "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", @@ -21951,9 +20828,8 @@ }, "node_modules/tar-fs/node_modules/tar-stream": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dev": true, + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -22056,9 +20932,8 @@ }, "node_modules/terser": { "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -22073,9 +20948,8 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/test-exclude": { "version": "6.0.0", @@ -22092,9 +20966,8 @@ }, "node_modules/testcontainers": { "version": "10.2.1", - "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.2.1.tgz", - "integrity": "sha512-R9LUMUEkKGSL2M4cP466Jah+Vi+ZLFlvrT4BENjEKJKNzubATOmDk26RHe8DHeFT+hnMD6fvVii+McXr0UTO7g==", "dev": true, + "license": "MIT", "dependencies": { "@balena/dockerignore": "^1.0.2", "archiver": "^5.3.1", @@ -22114,9 +20987,8 @@ }, "node_modules/testcontainers/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -22129,9 +21001,8 @@ }, "node_modules/testcontainers/node_modules/tmp": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, + "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -22150,6 +21021,7 @@ }, "node_modules/text-hex": { "version": "1.0.0", + "dev": true, "license": "MIT" }, "node_modules/text-table": { @@ -22159,8 +21031,7 @@ }, "node_modules/thread-stream": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.0.tgz", - "integrity": "sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw==", + "license": "MIT", "dependencies": { "real-require": "^0.2.0" } @@ -22186,9 +21057,8 @@ }, "node_modules/through2/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22214,8 +21084,6 @@ }, "node_modules/timers-browserify": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", "dev": true, "dependencies": { "process": "~0.11.0" @@ -22226,9 +21094,8 @@ }, "node_modules/timestring": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/timestring/-/timestring-6.0.0.tgz", - "integrity": "sha512-wMctrWD2HZZLuIlchlkE2dfXJh7J2KDI9Dwl+2abPYg0mswQHfOAyQW3jJg1pY5VfttSINZuKcXoB3FGypVklA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -22240,18 +21107,6 @@ "node": ">=6" } }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tmp": { "version": "0.0.33", "license": "MIT", @@ -22264,9 +21119,8 @@ }, "node_modules/tmpl": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/to-fast-properties": { "version": "2.0.0", @@ -22278,9 +21132,8 @@ }, "node_modules/to-readable-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -22298,24 +21151,21 @@ }, "node_modules/toggle-selection": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/topo": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { "hoek": "6.x.x" } }, "node_modules/tough-cookie": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -22328,9 +21178,8 @@ }, "node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -22347,9 +21196,8 @@ }, "node_modules/transform-ast": { "version": "2.4.4", - "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", - "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", "dev": true, + "license": "MIT", "dependencies": { "acorn-node": "^1.3.0", "convert-source-map": "^1.5.1", @@ -22362,20 +21210,16 @@ }, "node_modules/transform-ast/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/transform-ast/node_modules/dash-ast": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/transform-ast/node_modules/is-buffer": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, "funding": [ { @@ -22391,15 +21235,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/transform-ast/node_modules/magic-string": { "version": "0.23.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", - "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", "dev": true, + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.1" } @@ -22423,8 +21267,12 @@ } }, "node_modules/triple-beam": { - "version": "1.3.0", - "license": "MIT" + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } }, "node_modules/ts-invariant": { "version": "0.10.3", @@ -22438,9 +21286,8 @@ }, "node_modules/ts-jest": { "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", @@ -22531,15 +21378,13 @@ }, "node_modules/ts-toolbelt": { "version": "9.6.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -22567,15 +21412,13 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.0", + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -22588,15 +21431,13 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/ttest": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ttest/-/ttest-3.0.0.tgz", - "integrity": "sha512-bLo+LdYokiDZHVFIWJmC5afoh7wZ+o1h++0XXKh01+yprzz8CnaiGNcbcbqP0e3+iyDqclLI+rM0j/9AwmRljw==", "dev": true, + "license": "MIT", "dependencies": { "distributions": "^2.1.0", "summary": "^2.0.0" @@ -22604,9 +21445,8 @@ }, "node_modules/tty-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tuf-js": { "version": "1.1.7", @@ -22624,9 +21464,8 @@ }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -22636,9 +21475,8 @@ }, "node_modules/turbo-json-parse": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/turbo-json-parse/-/turbo-json-parse-2.3.0.tgz", - "integrity": "sha512-f1CWo4TNqwicXXUAOU5K9RZX6MhEdtOPT+FmgPhiet0a698+46KiXzMHpl8V4fieUa6qXr968uuNbHDSfXjkcQ==", "dev": true, + "license": "MIT", "dependencies": { "generate-function": "^2.3.1" } @@ -22650,9 +21488,8 @@ }, "node_modules/type": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/type-check": { "version": "0.4.0", @@ -22667,24 +21504,20 @@ }, "node_modules/type-component": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/type-component/-/type-component-0.0.1.tgz", - "integrity": "sha512-mDZRBQS2yZkwRQKfjJvQ8UIYJeBNNWCq+HBNstl9N5s9jZ4dkVYXEGkVPsSCEh5Ld4JM1kmrZTzjnrqSAIQ7dw==", "dev": true }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -22758,15 +21591,13 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/typedarray-pool": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/typedarray-pool/-/typedarray-pool-1.2.0.tgz", - "integrity": "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==", "dev": true, + "license": "MIT", "dependencies": { "bit-twiddle": "^1.0.0", "dup": "^1.0.0" @@ -22774,27 +21605,24 @@ }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/types-ramda": { "version": "0.29.4", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.4.tgz", - "integrity": "sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ==", "dev": true, + "license": "MIT", "dependencies": { "ts-toolbelt": "^9.6.0" } }, "node_modules/typescript": { "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "devOptional": true, + "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -22818,9 +21646,8 @@ }, "node_modules/umd": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", "dev": true, + "license": "MIT", "bin": { "umd": "bin/cli.js" } @@ -22841,9 +21668,8 @@ }, "node_modules/undeclared-identifiers": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "acorn-node": "^1.3.0", "dash-ast": "^1.0.0", @@ -22857,14 +21683,12 @@ }, "node_modules/undeclared-identifiers/node_modules/dash-ast": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/undici": { "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", + "license": "MIT", "dependencies": { "busboy": "^1.6.0" }, @@ -22874,9 +21698,8 @@ }, "node_modules/uniq": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unique-filename": { "version": "3.0.0", @@ -22904,9 +21727,8 @@ }, "node_modules/unique-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, + "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -22947,8 +21769,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { @@ -22964,6 +21784,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -22977,9 +21798,8 @@ }, "node_modules/update-notifier": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boxen": "^5.0.0", "chalk": "^4.1.0", @@ -23005,9 +21825,8 @@ }, "node_modules/upper-case": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/uri-js": { "version": "4.4.1", @@ -23018,9 +21837,8 @@ }, "node_modules/url": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.0" @@ -23028,9 +21846,8 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -23038,9 +21855,8 @@ }, "node_modules/url-parse-lax": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, + "license": "MIT", "dependencies": { "prepend-http": "^2.0.0" }, @@ -23050,15 +21866,13 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -23073,27 +21887,24 @@ }, "node_modules/util-extend": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", - "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/uuid": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/uuid-parse": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", - "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-compile-cache": { "version": "2.3.0", @@ -23108,9 +21919,8 @@ }, "node_modules/v8-to-istanbul": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -23122,9 +21932,8 @@ }, "node_modules/v8-to-istanbul/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -23149,30 +21958,32 @@ } }, "node_modules/varint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha512-gC13b/bWrqQoKY2EmROCZ+AR0jitc6DnDGaQ6Ls9QpKmuSgJB1eQ7H3KETtQm7qSdMWMKCmsshyCmUwMLh3OAA==", - "dev": true + "version": "5.0.2", + "dev": true, + "license": "MIT" }, "node_modules/verror": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, "node_modules/vm-browserify": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/vscode-json-languageservice": { "version": "4.2.1", @@ -23214,9 +22025,8 @@ }, "node_modules/walker": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -23230,9 +22040,8 @@ }, "node_modules/webfontloader": { "version": "1.6.28", - "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz", - "integrity": "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "7.0.0", @@ -23283,9 +22092,8 @@ }, "node_modules/which-module": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.11", @@ -23317,9 +22125,8 @@ }, "node_modules/widest-line": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^4.0.0" }, @@ -23329,9 +22136,8 @@ }, "node_modules/windows-release": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", - "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^4.0.2" }, @@ -23344,9 +22150,8 @@ }, "node_modules/windows-release/node_modules/execa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -23367,9 +22172,8 @@ }, "node_modules/windows-release/node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -23382,17 +22186,16 @@ }, "node_modules/windows-release/node_modules/human-signals": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } }, "node_modules/winston": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", + "dev": true, + "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "@dabh/diagnostics": "^2.0.2", @@ -23412,6 +22215,7 @@ }, "node_modules/winston-transport": { "version": "4.5.0", + "dev": true, "license": "MIT", "dependencies": { "logform": "^2.3.2", @@ -23424,9 +22228,8 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23439,8 +22242,7 @@ }, "node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -23568,17 +22370,15 @@ }, "node_modules/xdg-basedir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/xml2js": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -23650,8 +22450,6 @@ }, "node_modules/yauzl": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "license": "MIT", "dependencies": { @@ -23750,12 +22548,7 @@ "license": "Apache-2.0", "dependencies": { "@apideck/better-ajv-errors": "^0.3.6", - "@edfi/ed-fi-model-3.1": "3.0.1", - "@edfi/ed-fi-model-3.3b": "3.0.2", "@edfi/meadowlark-utilities": "^v0.3.6-pre-36", - "@edfi/metaed-core": "^4.2.2-dev.11", - "@edfi/metaed-plugin-edfi-api-schema": "^4.2.2-dev.11", - "@edfi/metaed-plugin-edfi-unified": "^4.2.2-dev.11", "@isaacs/ttlcache": "^1.4.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", @@ -23776,6 +22569,9 @@ "xml2js": "^0.6.2" }, "devDependencies": { + "@edfi/metaed-core": "^4.2.2-dev.15", + "@edfi/metaed-plugin-edfi-api-schema": "^4.2.2-dev.15", + "@edfi/metaed-plugin-edfi-unified": "^4.2.2-dev.15", "@types/fs-extra": "^11.0.2", "@types/inflection": "^1.13.0", "@types/js-yaml": "^4.0.6", @@ -23820,8 +22616,7 @@ }, "packages/meadowlark-core/node_modules/fs-extra": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -23837,9 +22632,8 @@ }, "packages/meadowlark-core/node_modules/regenerator-runtime": { "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true + "dev": true, + "license": "MIT" }, "packages/meadowlark-utilities": { "name": "@edfi/meadowlark-utilities", @@ -23873,13 +22667,11 @@ }, "packages/meadowlark-utilities/node_modules/pino-std-serializers": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", - "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + "license": "MIT" }, "packages/meadowlark-utilities/node_modules/process-warning": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", - "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==" + "license": "MIT" }, "packages/meadowlark-utilities/node_modules/sonic-boom": { "version": "3.7.0", @@ -23928,9 +22720,8 @@ }, "tests/e2e/node_modules/fs-extra": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -23939,11 +22730,6 @@ "engines": { "node": ">=14.14" } - }, - "tests/profiling": { - "name": "meadowlark-autocannon", - "extraneous": true, - "devDependencies": {} } } } diff --git a/Meadowlark-js/package.json b/Meadowlark-js/package.json index 272200cf..4b1206ec 100644 --- a/Meadowlark-js/package.json +++ b/Meadowlark-js/package.json @@ -24,7 +24,7 @@ "eslint-plugin-import": "^2.28.1", "eslint-plugin-jasmine": "4.1.3", "eslint-plugin-json": "3.1.0", - "eslint-plugin-prettier": "5.0.0", + "eslint-plugin-prettier": "4.2.1", "jest": "^29.7.0", "jest-environment-node": "^29.7.0", "kafkajs": "^2.2.4", @@ -32,7 +32,7 @@ "mongodb": "^5.9.0", "pg": "^8.11.3", "pg-format": "^1.0.4", - "prettier": "3.0.3", + "prettier": "2.8.8", "rimraf": "^5.0.5", "ts-jest": "^29.1.1", "ts-node": "10.9.1", diff --git a/Meadowlark-js/packages/meadowlark-authz-server/src/handler/CreateClient.ts b/Meadowlark-js/packages/meadowlark-authz-server/src/handler/CreateClient.ts index 85eef3cf..df768a3f 100644 --- a/Meadowlark-js/packages/meadowlark-authz-server/src/handler/CreateClient.ts +++ b/Meadowlark-js/packages/meadowlark-authz-server/src/handler/CreateClient.ts @@ -148,8 +148,9 @@ export async function createClient(authorizationRequest: AuthorizationRequest): return tryCreateBootstrapAdmin(createRequest, clientSecretBuffer.toString('hex'), authorizationRequest.path); } - const createResult: CreateAuthorizationClientResult = - await getAuthorizationStore().createAuthorizationClient(createRequest); + const createResult: CreateAuthorizationClientResult = await getAuthorizationStore().createAuthorizationClient( + createRequest, + ); const { response } = createResult; diff --git a/Meadowlark-js/packages/meadowlark-authz-server/src/handler/ResetClientSecret.ts b/Meadowlark-js/packages/meadowlark-authz-server/src/handler/ResetClientSecret.ts index 1d9b534e..b29257eb 100644 --- a/Meadowlark-js/packages/meadowlark-authz-server/src/handler/ResetClientSecret.ts +++ b/Meadowlark-js/packages/meadowlark-authz-server/src/handler/ResetClientSecret.ts @@ -53,8 +53,9 @@ export async function resetAuthorizationClientSecret( traceId: authorizationRequest.traceId, }; - const updateResult: ResetAuthorizationClientSecretResult = - await getAuthorizationStore().resetAuthorizationClientSecret(updateSecretRequest); + const updateResult: ResetAuthorizationClientSecretResult = await getAuthorizationStore().resetAuthorizationClientSecret( + updateSecretRequest, + ); const { response } = updateResult; diff --git a/Meadowlark-js/packages/meadowlark-authz-server/src/handler/UpdateClient.ts b/Meadowlark-js/packages/meadowlark-authz-server/src/handler/UpdateClient.ts index cfc37119..f8312811 100644 --- a/Meadowlark-js/packages/meadowlark-authz-server/src/handler/UpdateClient.ts +++ b/Meadowlark-js/packages/meadowlark-authz-server/src/handler/UpdateClient.ts @@ -74,8 +74,9 @@ export async function updateClient(authorizationRequest: AuthorizationRequest): traceId: authorizationRequest.traceId, }; - const updateResult: UpdateAuthorizationClientResult = - await getAuthorizationStore().updateAuthorizationClient(updateRequest); + const updateResult: UpdateAuthorizationClientResult = await getAuthorizationStore().updateAuthorizationClient( + updateRequest, + ); const { response } = updateResult; diff --git a/Meadowlark-js/packages/meadowlark-core/package.json b/Meadowlark-js/packages/meadowlark-core/package.json index 693e65d4..c98cfbed 100644 --- a/Meadowlark-js/packages/meadowlark-core/package.json +++ b/Meadowlark-js/packages/meadowlark-core/package.json @@ -14,12 +14,7 @@ ], "dependencies": { "@apideck/better-ajv-errors": "^0.3.6", - "@edfi/ed-fi-model-3.1": "3.0.1", - "@edfi/ed-fi-model-3.3b": "3.0.2", "@edfi/meadowlark-utilities": "^v0.3.6-pre-36", - "@edfi/metaed-core": "^4.2.2-dev.11", - "@edfi/metaed-plugin-edfi-api-schema": "^4.2.2-dev.11", - "@edfi/metaed-plugin-edfi-unified": "^4.2.2-dev.11", "@isaacs/ttlcache": "^1.4.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", @@ -40,6 +35,9 @@ "xml2js": "^0.6.2" }, "devDependencies": { + "@edfi/metaed-core": "^4.2.2-dev.15", + "@edfi/metaed-plugin-edfi-api-schema": "^4.2.2-dev.15", + "@edfi/metaed-plugin-edfi-unified": "^4.2.2-dev.15", "@types/fs-extra": "^11.0.2", "@types/inflection": "^1.13.0", "@types/js-yaml": "^4.0.6", diff --git a/Meadowlark-js/packages/meadowlark-core/src/Constants.ts b/Meadowlark-js/packages/meadowlark-core/src/Constants.ts index 553f556e..236ba461 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/Constants.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/Constants.ts @@ -4,14 +4,6 @@ // See the LICENSE and NOTICES files in the project root for more information. export abstract class Constants { - static readonly uriVersion31: string = 'v3.1'; - - static readonly projectVersion31: string = '3.1.0'; - - static readonly uriVersion33b: string = 'v3.3b'; - - static readonly projectVersion33b: string = '3.3.1-b'; - static readonly swaggerResourceUrl: string = 'https://edfidata.s3.us-west-2.amazonaws.com/Meadowlark/3.3.0-b-resource.json'; diff --git a/Meadowlark-js/packages/meadowlark-core/src/Logger.ts b/Meadowlark-js/packages/meadowlark-core/src/Logger.ts index a45e2945..da027112 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/Logger.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/Logger.ts @@ -6,32 +6,23 @@ import { isDebugEnabled, isInfoEnabled, Logger, writeErrorToLog as logError } from '@edfi/meadowlark-utilities'; import { FrontendRequest } from './handler/FrontendRequest'; +import { TraceId } from './model/IdTypes'; export function writeDebugStatusToLog( moduleName: string, - request: FrontendRequest, + traceId: TraceId, method: string, statusCode?: number, message?: string, extra?: any, ): void { if (isDebugEnabled()) { - Logger.debug(`${moduleName}.${method} ${statusCode ?? ''} ${message ?? ''}`.trimEnd(), request.traceId, extra); + Logger.debug(`${moduleName}.${method} ${statusCode ?? ''} ${message ?? ''}`.trimEnd(), traceId, extra); } } -export function writeDebugObject( - moduleName: string, - request: FrontendRequest, - method: string, - statusCode?: number, - messageBody?: object, -): void { - Logger.debug(`${moduleName}.${method} ${statusCode}`, request.traceId, messageBody); -} - -export function writeDebugMessage(moduleName: string, request: FrontendRequest, method: string, message: string): void { - Logger.debug(`${moduleName}.${method}`, request.traceId, message); +export function writeDebugMessage(moduleName: string, method: string, traceId: TraceId, message: string): void { + Logger.debug(`${moduleName}.${method}`, traceId, message); } export function writeRequestToLog(moduleName: string, request: FrontendRequest, method: string, extra?: any): void { @@ -40,6 +31,6 @@ export function writeRequestToLog(moduleName: string, request: FrontendRequest, } } -export function writeErrorToLog(moduleName: string, traceId: string, functionName: string, error: any): void { +export function writeErrorToLog(moduleName: string, traceId: TraceId, functionName: string, error: any): void { logError(moduleName, traceId, functionName, undefined, error); } diff --git a/Meadowlark-js/packages/meadowlark-core/src/api-schema/ApiSchemaLoader.ts b/Meadowlark-js/packages/meadowlark-core/src/api-schema/ApiSchemaLoader.ts new file mode 100644 index 00000000..6cdbed2b --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/api-schema/ApiSchemaLoader.ts @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import path from 'path'; +import fs from 'fs-extra'; +import { writeDebugMessage, writeErrorToLog } from '../Logger'; +import { ApiSchema, NoApiSchema } from '../model/api-schema/ApiSchema'; +import { TraceId } from '../model/IdTypes'; +import { ProjectNamespace } from '../model/api-schema/ProjectNamespace'; + +const moduleName = 'ApiSchemaFinder'; + +const dataStandard50pre1Path: string = path.resolve(__dirname, '../ds-schemas/DataStandard-5.0.0-pre.1.json'); + +export const projectNamespaceEdfi: ProjectNamespace = 'ed-fi' as ProjectNamespace; + +/** + * This is a simple cache implementation that works in Lambdas, see: https://rewind.io/blog/simple-caching-in-aws-lambda-functions/ + */ +let apiSchemaCache: ApiSchema | null = null; + +/** + * Loads ApiSchema from an ApiSchema JSON file + */ +async function loadApiSchemaFromFile(filePath: string, traceId: TraceId): Promise { + const apiSchema: ApiSchema = (await fs.readJson(filePath)) as ApiSchema; + apiSchemaCache = apiSchema; + writeDebugMessage(moduleName, 'loadApiSchemaFromFile', traceId, `Loading ApiSchema from ${filePath}`); + return apiSchema; +} + +/** + * Entry point for loading ApiSchemas from a file + */ +export async function findApiSchema(traceId: TraceId): Promise { + if (apiSchemaCache != null) return apiSchemaCache; + + try { + return await loadApiSchemaFromFile(dataStandard50pre1Path, traceId); + } catch (e) { + writeErrorToLog(moduleName, traceId, 'getApiSchema', e); + } + return NoApiSchema; +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/api-schema/ProjectSchemaFinder.ts b/Meadowlark-js/packages/meadowlark-core/src/api-schema/ProjectSchemaFinder.ts new file mode 100644 index 00000000..3d2a4140 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/api-schema/ProjectSchemaFinder.ts @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Logger } from '@edfi/meadowlark-utilities'; +import type { TraceId } from '../model/IdTypes'; +import { NoProjectSchema, ProjectSchema } from '../model/api-schema/ProjectSchema'; +import { ApiSchema } from '../model/api-schema/ApiSchema'; +import { ProjectNamespace } from '../model/api-schema/ProjectNamespace'; + +/** + * Finds the ProjectSchema that represents the given ProjectNamespace. + */ +export async function findProjectSchema( + apiSchema: ApiSchema, + projectNamespace: ProjectNamespace, + traceId: TraceId, +): Promise { + const projectSchema: ProjectSchema | undefined = apiSchema.projectSchemas[projectNamespace]; + + if (projectSchema == null) { + Logger.warn(`findProjectSchema: projectNamespace '${projectNamespace}' does not exist in ApiSchema`, traceId); + return NoProjectSchema; + } + return projectSchema; +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/api-schema/ResourceSchemaFinder.ts b/Meadowlark-js/packages/meadowlark-core/src/api-schema/ResourceSchemaFinder.ts new file mode 100644 index 00000000..c581623d --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/api-schema/ResourceSchemaFinder.ts @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import type { PathComponents } from '../model/PathComponents'; +import type { ResourceSchema } from '../model/api-schema/ResourceSchema'; +import type { TraceId } from '../model/IdTypes'; +import { ProjectSchema } from '../model/api-schema/ProjectSchema'; +import { ApiSchema } from '../model/api-schema/ApiSchema'; +import { findProjectSchema } from './ProjectSchemaFinder'; + +/** + * Finds the ResourceSchema that represents the given REST resource path. + */ +export async function findResourceSchema( + apiSchema: ApiSchema, + pathComponents: PathComponents, + traceId: TraceId, +): Promise { + const projectSchema: ProjectSchema = await findProjectSchema(apiSchema, pathComponents.projectNamespace, traceId); + return projectSchema.resourceSchemas[pathComponents.endpointName]; +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/ds-schemas/DataStandard-5.0.0-pre.1.json b/Meadowlark-js/packages/meadowlark-core/src/ds-schemas/DataStandard-5.0.0-pre.1.json new file mode 100644 index 00000000..e18ec1fc --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/ds-schemas/DataStandard-5.0.0-pre.1.json @@ -0,0 +1,103662 @@ +{ + "projectSchemas": { + "ed-fi": { + "projectName": "Ed-Fi", + "projectVersion": "5.0.0-pre.1", + "isExtensionProject": false, + "description": "The Ed-Fi Data Standard v5.0-pre.1", + "resourceSchemas": { + "academicWeeks": { + "resourceName": "AcademicWeek", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AcademicWeek", + "description": "This entity represents the academic weeks for a school year, optionally captured to support analyses.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "weekIdentifier": { + "type": "string", + "description": "The school label for the week.", + "minLength": 5, + "maxLength": 80 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The start date for the academic week." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date for the academic week." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "The total instructional days during the academic week.", + "minimum": 0 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "schoolReference", + "weekIdentifier", + "beginDate", + "endDate", + "totalInstructionalDays" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AcademicWeek", + "description": "This entity represents the academic weeks for a school year, optionally captured to support analyses.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "weekIdentifier": { + "type": "string", + "description": "The school label for the week.", + "minLength": 5, + "maxLength": 80 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The start date for the academic week." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date for the academic week." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "The total instructional days during the academic week.", + "minimum": 0 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "schoolReference", + "weekIdentifier", + "beginDate", + "endDate", + "totalInstructionalDays" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AcademicWeek", + "description": "This entity represents the academic weeks for a school year, optionally captured to support analyses.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "weekIdentifier": { + "type": "string", + "description": "The school label for the week.", + "minLength": 5, + "maxLength": 80 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The start date for the academic week." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date for the academic week." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "The total instructional days during the academic week.", + "minimum": 0 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "School", + "WeekIdentifier" + ], + "documentPathsMapping": { + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "WeekIdentifier": { + "paths": { + "weekIdentifier": "$.weekIdentifier" + }, + "pathOrder": [ + "weekIdentifier" + ], + "isReference": false + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "TotalInstructionalDays": { + "paths": { + "totalInstructionalDays": "$.totalInstructionalDays" + }, + "pathOrder": [ + "totalInstructionalDays" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "schoolId", + "weekIdentifier" + ], + "isSubclass": false + }, + "accountabilityRatings": { + "resourceName": "AccountabilityRating", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AccountabilityRating", + "description": "An accountability rating for a school or district.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "ratingTitle": { + "type": "string", + "description": "The title of the rating.", + "minLength": 1, + "maxLength": 60 + }, + "rating": { + "type": "string", + "description": "An accountability rating level, designation, or assessment.", + "minLength": 1, + "maxLength": 35 + }, + "ratingDate": { + "type": "string", + "format": "date", + "description": "The date the rating was awarded." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "ratingOrganization": { + "type": "string", + "description": "The organization that assessed the rating.", + "minLength": 1, + "maxLength": 35 + }, + "ratingProgram": { + "type": "string", + "description": "The program associated with the accountability rating (e.g., NCLB, AEIS).", + "minLength": 1, + "maxLength": 30 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationReference", + "ratingTitle", + "rating", + "schoolYearTypeReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AccountabilityRating", + "description": "An accountability rating for a school or district.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "ratingTitle": { + "type": "string", + "description": "The title of the rating.", + "minLength": 1, + "maxLength": 60 + }, + "rating": { + "type": "string", + "description": "An accountability rating level, designation, or assessment.", + "minLength": 1, + "maxLength": 35 + }, + "ratingDate": { + "type": "string", + "format": "date", + "description": "The date the rating was awarded." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "ratingOrganization": { + "type": "string", + "description": "The organization that assessed the rating.", + "minLength": 1, + "maxLength": 35 + }, + "ratingProgram": { + "type": "string", + "description": "The program associated with the accountability rating (e.g., NCLB, AEIS).", + "minLength": 1, + "maxLength": 30 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationReference", + "ratingTitle", + "rating", + "schoolYearTypeReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AccountabilityRating", + "description": "An accountability rating for a school or district.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "ratingTitle": { + "type": "string", + "description": "The title of the rating.", + "minLength": 1, + "maxLength": 60 + }, + "rating": { + "type": "string", + "description": "An accountability rating level, designation, or assessment.", + "minLength": 1, + "maxLength": 35 + }, + "ratingDate": { + "type": "string", + "format": "date", + "description": "The date the rating was awarded." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "ratingOrganization": { + "type": "string", + "description": "The organization that assessed the rating.", + "minLength": 1, + "maxLength": 35 + }, + "ratingProgram": { + "type": "string", + "description": "The program associated with the accountability rating (e.g., NCLB, AEIS).", + "minLength": 1, + "maxLength": 30 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "RatingTitle", + "SchoolYear" + ], + "documentPathsMapping": { + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "RatingTitle": { + "paths": { + "ratingTitle": "$.ratingTitle" + }, + "pathOrder": [ + "ratingTitle" + ], + "isReference": false + }, + "Rating": { + "paths": { + "rating": "$.rating" + }, + "pathOrder": [ + "rating" + ], + "isReference": false + }, + "RatingDate": { + "paths": { + "ratingDate": "$.ratingDate" + }, + "pathOrder": [ + "ratingDate" + ], + "isReference": false + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "RatingOrganization": { + "paths": { + "ratingOrganization": "$.ratingOrganization" + }, + "pathOrder": [ + "ratingOrganization" + ], + "isReference": false + }, + "RatingProgram": { + "paths": { + "ratingProgram": "$.ratingProgram" + }, + "pathOrder": [ + "ratingProgram" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "ratingTitle", + "schoolYear" + ], + "isSubclass": false + }, + "assessments": { + "resourceName": "Assessment", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Assessment", + "description": "This entity represents a tool, instrument, process, or exhibition composed of a systematic sampling of behavior for measuring a student's competence, knowledge, skills, or behavior. An assessment can be used to measure differences in individuals or groups and changes in performance from one occasion to the next.", + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentTitle": { + "type": "string", + "description": "The title or name of the assessment.", + "minLength": 1, + "maxLength": 255 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to an assessment." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the assessment identification code.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "assessmentIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentCategoryDescriptor": { + "type": "string", + "description": "The category of an assessment based on format and content." + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "assessedGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "contentStandard": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 75 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The person or organization chiefly responsible for the intellectual content of the standard.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 50 + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the standards using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "publicationStatusDescriptor": { + "type": "string", + "description": "The publication status of the document (i.e., Adopted, Draft, Published, Deprecated, Unknown)." + }, + "mandatingEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The beginning of the period during which this learning standard document is intended for use." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end of the period during which this learning standard document is intended for use." + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + }, + "assessmentForm": { + "type": "string", + "description": "Identifies the form of the assessment, for example a regular versus makeup form, multiple choice versus constructed response, etc.", + "minLength": 1, + "maxLength": 60 + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentVersion": { + "type": "integer", + "description": "The version identifier for the assessment." + }, + "revisionDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year that the conceptual design for the assessment was most recently revised substantially." + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for assessment.", + "minLength": 1, + "maxLength": 100 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentPeriodDescriptor": { + "type": "string", + "description": "The period of time in which an assessment is supposed to be administered (e.g., Beginning of Year, Middle of Year, End of Year)." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the assessment is to be administered." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the assessment is to be administered." + } + }, + "additionalProperties": false, + "required": [ + "assessmentPeriodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentFamily": { + "type": "string", + "description": "The assessment family this assessment is a member of.", + "minLength": 1, + "maxLength": 60 + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "sectionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "adaptiveAssessment": { + "type": "boolean", + "description": "Indicates that the assessment is adaptive." + }, + "platformTypes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "platformTypeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "platformTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "assessmentTitle", + "academicSubjects", + "namespace" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Assessment", + "description": "This entity represents a tool, instrument, process, or exhibition composed of a systematic sampling of behavior for measuring a student's competence, knowledge, skills, or behavior. An assessment can be used to measure differences in individuals or groups and changes in performance from one occasion to the next.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentTitle": { + "type": "string", + "description": "The title or name of the assessment.", + "minLength": 1, + "maxLength": 255 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to an assessment." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the assessment identification code.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "assessmentIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentCategoryDescriptor": { + "type": "string", + "description": "The category of an assessment based on format and content." + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "assessedGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "contentStandard": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 75 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The person or organization chiefly responsible for the intellectual content of the standard.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 50 + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the standards using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "publicationStatusDescriptor": { + "type": "string", + "description": "The publication status of the document (i.e., Adopted, Draft, Published, Deprecated, Unknown)." + }, + "mandatingEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The beginning of the period during which this learning standard document is intended for use." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end of the period during which this learning standard document is intended for use." + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + }, + "assessmentForm": { + "type": "string", + "description": "Identifies the form of the assessment, for example a regular versus makeup form, multiple choice versus constructed response, etc.", + "minLength": 1, + "maxLength": 60 + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentVersion": { + "type": "integer", + "description": "The version identifier for the assessment." + }, + "revisionDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year that the conceptual design for the assessment was most recently revised substantially." + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for assessment.", + "minLength": 1, + "maxLength": 100 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentPeriodDescriptor": { + "type": "string", + "description": "The period of time in which an assessment is supposed to be administered (e.g., Beginning of Year, Middle of Year, End of Year)." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the assessment is to be administered." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the assessment is to be administered." + } + }, + "additionalProperties": false, + "required": [ + "assessmentPeriodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentFamily": { + "type": "string", + "description": "The assessment family this assessment is a member of.", + "minLength": 1, + "maxLength": 60 + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "sectionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "adaptiveAssessment": { + "type": "boolean", + "description": "Indicates that the assessment is adaptive." + }, + "platformTypes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "platformTypeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "platformTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "assessmentIdentifier", + "assessmentTitle", + "academicSubjects", + "namespace" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Assessment", + "description": "This entity represents a tool, instrument, process, or exhibition composed of a systematic sampling of behavior for measuring a student's competence, knowledge, skills, or behavior. An assessment can be used to measure differences in individuals or groups and changes in performance from one occasion to the next.", + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentTitle": { + "type": "string", + "description": "The title or name of the assessment.", + "minLength": 1, + "maxLength": 255 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to an assessment." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the assessment identification code.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "assessmentIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentCategoryDescriptor": { + "type": "string", + "description": "The category of an assessment based on format and content." + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "assessedGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "contentStandard": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 75 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The person or organization chiefly responsible for the intellectual content of the standard.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 50 + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the standards using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "publicationStatusDescriptor": { + "type": "string", + "description": "The publication status of the document (i.e., Adopted, Draft, Published, Deprecated, Unknown)." + }, + "mandatingEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The beginning of the period during which this learning standard document is intended for use." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end of the period during which this learning standard document is intended for use." + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + }, + "assessmentForm": { + "type": "string", + "description": "Identifies the form of the assessment, for example a regular versus makeup form, multiple choice versus constructed response, etc.", + "minLength": 1, + "maxLength": 60 + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentVersion": { + "type": "integer", + "description": "The version identifier for the assessment." + }, + "revisionDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year that the conceptual design for the assessment was most recently revised substantially." + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for assessment.", + "minLength": 1, + "maxLength": 100 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentPeriodDescriptor": { + "type": "string", + "description": "The period of time in which an assessment is supposed to be administered (e.g., Beginning of Year, Middle of Year, End of Year)." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the assessment is to be administered." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the assessment is to be administered." + } + }, + "additionalProperties": false, + "required": [ + "assessmentPeriodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentFamily": { + "type": "string", + "description": "The assessment family this assessment is a member of.", + "minLength": 1, + "maxLength": 60 + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "sectionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "adaptiveAssessment": { + "type": "boolean", + "description": "Indicates that the assessment is adaptive." + }, + "platformTypes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "platformTypeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "platformTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "AssessmentIdentifier", + "Namespace" + ], + "documentPathsMapping": { + "AssessmentIdentifier": { + "paths": { + "assessmentIdentifier": "$.assessmentIdentifier" + }, + "pathOrder": [ + "assessmentIdentifier" + ], + "isReference": false + }, + "AssessmentTitle": { + "paths": { + "assessmentTitle": "$.assessmentTitle" + }, + "pathOrder": [ + "assessmentTitle" + ], + "isReference": false + }, + "AssessmentIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "AssessmentIdentificationCode.AssessmentIdentificationSystem": { + "paths": { + "assessmentIdentificationSystemDescriptor": "$.identificationCodes[*].assessmentIdentificationSystemDescriptor" + }, + "pathOrder": [ + "assessmentIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentIdentificationSystemDescriptor" + }, + "AssessmentIdentificationCode.AssigningOrganizationIdentificationCode": { + "paths": { + "assigningOrganizationIdentificationCode": "$.identificationCodes[*].assigningOrganizationIdentificationCode" + }, + "pathOrder": [ + "assigningOrganizationIdentificationCode" + ], + "isReference": false + }, + "AssessmentCategory": { + "paths": { + "assessmentCategoryDescriptor": "$.assessmentCategoryDescriptor" + }, + "pathOrder": [ + "assessmentCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentCategoryDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "AssessedGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.assessedGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "AssessmentScore.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.scores[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "AssessmentScore.MinimumScore": { + "paths": { + "minimumScore": "$.scores[*].minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "AssessmentScore.MaximumScore": { + "paths": { + "maximumScore": "$.scores[*].maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "AssessmentScore.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.scores[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "AssessmentPerformanceLevel.PerformanceLevel": { + "paths": { + "performanceLevelDescriptor": "$.performanceLevels[*].performanceLevelDescriptor" + }, + "pathOrder": [ + "performanceLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceLevelDescriptor" + }, + "AssessmentPerformanceLevel.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.performanceLevels[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "AssessmentPerformanceLevel.MinimumScore": { + "paths": { + "minimumScore": "$.performanceLevels[*].minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "AssessmentPerformanceLevel.MaximumScore": { + "paths": { + "maximumScore": "$.performanceLevels[*].maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "AssessmentPerformanceLevel.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.performanceLevels[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "AssessmentPerformanceLevel.PerformanceLevelIndicatorName": { + "paths": { + "performanceLevelIndicatorName": "$.performanceLevels[*].performanceLevelIndicatorName" + }, + "pathOrder": [ + "performanceLevelIndicatorName" + ], + "isReference": false + }, + "ContentStandard.Title": { + "paths": { + "title": "$.contentStandard.title" + }, + "pathOrder": [ + "title" + ], + "isReference": false + }, + "ContentStandard.Author": { + "paths": { + "author": "$.contentStandard.authors[*].author" + }, + "pathOrder": [ + "author" + ], + "isReference": false + }, + "ContentStandard.Version": { + "paths": { + "version": "$.contentStandard.version" + }, + "pathOrder": [ + "version" + ], + "isReference": false + }, + "ContentStandard.URI": { + "paths": { + "uri": "$.contentStandard.uri" + }, + "pathOrder": [ + "uri" + ], + "isReference": false + }, + "ContentStandard.PublicationDateChoice.PublicationDate": { + "paths": { + "publicationDate": "$.contentStandard.publicationDate" + }, + "pathOrder": [ + "publicationDate" + ], + "isReference": false + }, + "ContentStandard.PublicationDateChoice.PublicationYear": { + "paths": { + "publicationYear": "$.contentStandard.publicationYear" + }, + "pathOrder": [ + "publicationYear" + ], + "isReference": false + }, + "ContentStandard.PublicationStatus": { + "paths": { + "publicationStatusDescriptor": "$.contentStandard.publicationStatusDescriptor" + }, + "pathOrder": [ + "publicationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PublicationStatusDescriptor" + }, + "ContentStandard.MandatingEducationOrganization": { + "paths": { + "educationOrganizationId": "$.contentStandard.mandatingEducationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ContentStandard.BeginDate": { + "paths": { + "beginDate": "$.contentStandard.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "ContentStandard.EndDate": { + "paths": { + "endDate": "$.contentStandard.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "AssessmentForm": { + "paths": { + "assessmentForm": "$.assessmentForm" + }, + "pathOrder": [ + "assessmentForm" + ], + "isReference": false + }, + "Language": { + "paths": { + "languageDescriptor": "$.languages[*].languageDescriptor" + }, + "pathOrder": [ + "languageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "AssessmentVersion": { + "paths": { + "assessmentVersion": "$.assessmentVersion" + }, + "pathOrder": [ + "assessmentVersion" + ], + "isReference": false + }, + "RevisionDate": { + "paths": { + "revisionDate": "$.revisionDate" + }, + "pathOrder": [ + "revisionDate" + ], + "isReference": false + }, + "MaxRawScore": { + "paths": { + "maxRawScore": "$.maxRawScore" + }, + "pathOrder": [ + "maxRawScore" + ], + "isReference": false + }, + "Nomenclature": { + "paths": { + "nomenclature": "$.nomenclature" + }, + "pathOrder": [ + "nomenclature" + ], + "isReference": false + }, + "AssessmentPeriod.AssessmentPeriod": { + "paths": { + "assessmentPeriodDescriptor": "$.periods[*].assessmentPeriodDescriptor" + }, + "pathOrder": [ + "assessmentPeriodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentPeriodDescriptor" + }, + "AssessmentPeriod.BeginDate": { + "paths": { + "beginDate": "$.periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "AssessmentPeriod.EndDate": { + "paths": { + "endDate": "$.periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "AssessmentFamily": { + "paths": { + "assessmentFamily": "$.assessmentFamily" + }, + "pathOrder": [ + "assessmentFamily" + ], + "isReference": false + }, + "SectionOrProgramChoice.Section": { + "paths": { + "localCourseCode": "$.sections[*].sectionReference.localCourseCode", + "schoolId": "$.sections[*].sectionReference.schoolId", + "schoolYear": "$.sections[*].sectionReference.schoolYear", + "sectionIdentifier": "$.sections[*].sectionReference.sectionIdentifier", + "sessionName": "$.sections[*].sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + }, + "SectionOrProgramChoice.Program": { + "paths": { + "educationOrganizationId": "$.programs[*].programReference.educationOrganizationId", + "programName": "$.programs[*].programReference.programName", + "programTypeDescriptor": "$.programs[*].programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "AdaptiveAssessment": { + "paths": { + "adaptiveAssessment": "$.adaptiveAssessment" + }, + "pathOrder": [ + "adaptiveAssessment" + ], + "isReference": false + }, + "PlatformType": { + "paths": { + "platformTypeDescriptor": "$.platformTypes[*].platformTypeDescriptor" + }, + "pathOrder": [ + "platformTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PlatformTypeDescriptor" + } + }, + "identityPathOrder": [ + "assessmentIdentifier", + "namespace" + ], + "isSubclass": false + }, + "assessmentItems": { + "resourceName": "AssessmentItem", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AssessmentItem", + "description": "This entity represents one of many single measures that make up an assessment.", + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentItemCategoryDescriptor": { + "type": "string", + "description": "Category or type of the assessment item." + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "itemText": { + "type": "string", + "description": "The text of the item.", + "minLength": 1, + "maxLength": 1024 + }, + "possibleResponses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "responseValue": { + "type": "string", + "description": "The response value, often an option number or code value (e.g., 1, 2, A, B, true, false).", + "minLength": 1, + "maxLength": 60 + }, + "responseDescription": { + "type": "string", + "description": "Additional text provided to define the response value.", + "minLength": 1, + "maxLength": 1024 + }, + "correctResponse": { + "type": "boolean", + "description": "Indicates the response is correct." + } + }, + "additionalProperties": false, + "required": [ + "responseValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "expectedTimeAssessed": { + "type": "number", + "description": "The duration of time allotted for the assessment item." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for assessment item.", + "minLength": 1, + "maxLength": 100 + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "assessmentItemURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the entry in an assessment item bank, which describes this content item.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "assessmentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AssessmentItem", + "description": "This entity represents one of many single measures that make up an assessment.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentItemCategoryDescriptor": { + "type": "string", + "description": "Category or type of the assessment item." + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "itemText": { + "type": "string", + "description": "The text of the item.", + "minLength": 1, + "maxLength": 1024 + }, + "possibleResponses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "responseValue": { + "type": "string", + "description": "The response value, often an option number or code value (e.g., 1, 2, A, B, true, false).", + "minLength": 1, + "maxLength": 60 + }, + "responseDescription": { + "type": "string", + "description": "Additional text provided to define the response value.", + "minLength": 1, + "maxLength": 1024 + }, + "correctResponse": { + "type": "boolean", + "description": "Indicates the response is correct." + } + }, + "additionalProperties": false, + "required": [ + "responseValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "expectedTimeAssessed": { + "type": "number", + "description": "The duration of time allotted for the assessment item." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for assessment item.", + "minLength": 1, + "maxLength": 100 + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "assessmentItemURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the entry in an assessment item bank, which describes this content item.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "identificationCode", + "assessmentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AssessmentItem", + "description": "This entity represents one of many single measures that make up an assessment.", + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentItemCategoryDescriptor": { + "type": "string", + "description": "Category or type of the assessment item." + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "itemText": { + "type": "string", + "description": "The text of the item.", + "minLength": 1, + "maxLength": 1024 + }, + "possibleResponses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "responseValue": { + "type": "string", + "description": "The response value, often an option number or code value (e.g., 1, 2, A, B, true, false).", + "minLength": 1, + "maxLength": 60 + }, + "responseDescription": { + "type": "string", + "description": "Additional text provided to define the response value.", + "minLength": 1, + "maxLength": 1024 + }, + "correctResponse": { + "type": "boolean", + "description": "Indicates the response is correct." + } + }, + "additionalProperties": false, + "required": [ + "responseValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "expectedTimeAssessed": { + "type": "number", + "description": "The duration of time allotted for the assessment item." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for assessment item.", + "minLength": 1, + "maxLength": 100 + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "assessmentItemURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the entry in an assessment item bank, which describes this content item.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "IdentificationCode", + "Assessment" + ], + "documentPathsMapping": { + "IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "AssessmentItemCategory": { + "paths": { + "assessmentItemCategoryDescriptor": "$.assessmentItemCategoryDescriptor" + }, + "pathOrder": [ + "assessmentItemCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentItemCategoryDescriptor" + }, + "MaxRawScore": { + "paths": { + "maxRawScore": "$.maxRawScore" + }, + "pathOrder": [ + "maxRawScore" + ], + "isReference": false + }, + "ItemText": { + "paths": { + "itemText": "$.itemText" + }, + "pathOrder": [ + "itemText" + ], + "isReference": false + }, + "PossibleResponse.ResponseValue": { + "paths": { + "responseValue": "$.possibleResponses[*].responseValue" + }, + "pathOrder": [ + "responseValue" + ], + "isReference": false + }, + "PossibleResponse.ResponseDescription": { + "paths": { + "responseDescription": "$.possibleResponses[*].responseDescription" + }, + "pathOrder": [ + "responseDescription" + ], + "isReference": false + }, + "PossibleResponse.CorrectResponse": { + "paths": { + "correctResponse": "$.possibleResponses[*].correctResponse" + }, + "pathOrder": [ + "correctResponse" + ], + "isReference": false + }, + "ExpectedTimeAssessed": { + "paths": { + "expectedTimeAssessed": "$.expectedTimeAssessed" + }, + "pathOrder": [ + "expectedTimeAssessed" + ], + "isReference": false + }, + "Nomenclature": { + "paths": { + "nomenclature": "$.nomenclature" + }, + "pathOrder": [ + "nomenclature" + ], + "isReference": false + }, + "LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandards[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "Assessment": { + "paths": { + "assessmentIdentifier": "$.assessmentReference.assessmentIdentifier", + "namespace": "$.assessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Assessment" + }, + "AssessmentItemURI": { + "paths": { + "assessmentItemURI": "$.assessmentItemURI" + }, + "pathOrder": [ + "assessmentItemURI" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isSubclass": false + }, + "assessmentScoreRangeLearningStandards": { + "resourceName": "AssessmentScoreRangeLearningStandard", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AssessmentScoreRangeLearningStandard", + "description": "Score ranges of an assessment associated with one or more learning standards.", + "type": "object", + "properties": { + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "scoreRangeId": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to the score range associated with one or more learning standards.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The assessment reporting method defined (e.g., scale score, RIT scale score) associated with the referenced learning standard(s)." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score in the score range.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score in the score range.", + "minLength": 1, + "maxLength": 35 + }, + "objectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "assessmentReference", + "learningStandards", + "scoreRangeId", + "minimumScore", + "maximumScore" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AssessmentScoreRangeLearningStandard", + "description": "Score ranges of an assessment associated with one or more learning standards.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "scoreRangeId": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to the score range associated with one or more learning standards.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The assessment reporting method defined (e.g., scale score, RIT scale score) associated with the referenced learning standard(s)." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score in the score range.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score in the score range.", + "minLength": 1, + "maxLength": 35 + }, + "objectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "assessmentReference", + "learningStandards", + "scoreRangeId", + "minimumScore", + "maximumScore" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.AssessmentScoreRangeLearningStandard", + "description": "Score ranges of an assessment associated with one or more learning standards.", + "type": "object", + "properties": { + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "scoreRangeId": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to the score range associated with one or more learning standards.", + "minLength": 1, + "maxLength": 60 + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The assessment reporting method defined (e.g., scale score, RIT scale score) associated with the referenced learning standard(s)." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score in the score range.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score in the score range.", + "minLength": 1, + "maxLength": 35 + }, + "objectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.objectiveAssessmentReference.assessmentIdentifier", + "targetJsonPath": "$.assessmentReference.assessmentIdentifier" + }, + { + "sourceJsonPath": "$.objectiveAssessmentReference.namespace", + "targetJsonPath": "$.assessmentReference.namespace" + } + ], + "identityFullnames": [ + "Assessment", + "ScoreRangeId" + ], + "documentPathsMapping": { + "Assessment": { + "paths": { + "assessmentIdentifier": "$.assessmentReference.assessmentIdentifier", + "namespace": "$.assessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Assessment" + }, + "LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandards[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "ScoreRangeId": { + "paths": { + "scoreRangeId": "$.scoreRangeId" + }, + "pathOrder": [ + "scoreRangeId" + ], + "isReference": false + }, + "AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "MinimumScore": { + "paths": { + "minimumScore": "$.minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "MaximumScore": { + "paths": { + "maximumScore": "$.maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "ObjectiveAssessment": { + "paths": { + "assessmentIdentifier": "$.objectiveAssessmentReference.assessmentIdentifier", + "identificationCode": "$.objectiveAssessmentReference.identificationCode", + "namespace": "$.objectiveAssessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ObjectiveAssessment" + } + }, + "identityPathOrder": [ + "assessmentIdentifier", + "namespace", + "scoreRangeId" + ], + "isSubclass": false + }, + "balanceSheetDimensions": { + "resourceName": "BalanceSheetDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.BalanceSheetDimension", + "description": "The NCES balance sheet accounting dimension, used to track financial transactions for each fund. These financial statements only report assets, deferred outflows of resources, liabilities, deferred inflows of resources, and equity accounts. The statements are considered snapshots of how these accounts stand as of a certain point in time.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account balance sheet dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.BalanceSheetDimension", + "description": "The NCES balance sheet accounting dimension, used to track financial transactions for each fund. These financial statements only report assets, deferred outflows of resources, liabilities, deferred inflows of resources, and equity accounts. The statements are considered snapshots of how these accounts stand as of a certain point in time.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account balance sheet dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.BalanceSheetDimension", + "description": "The NCES balance sheet accounting dimension, used to track financial transactions for each fund. These financial statements only report assets, deferred outflows of resources, liabilities, deferred inflows of resources, and equity accounts. The statements are considered snapshots of how these accounts stand as of a certain point in time.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account balance sheet dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "bellSchedules": { + "resourceName": "BellSchedule", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.BellSchedule", + "description": "This entity represents the schedule of class period meeting times.", + "type": "object", + "properties": { + "bellScheduleName": { + "type": "string", + "description": "Name or title of the bell schedule.", + "minLength": 1, + "maxLength": 60 + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "dates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + "description": "The dates for which the bell schedule applies." + } + }, + "additionalProperties": false, + "required": [ + "date" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "alternateDayName": { + "type": "string", + "description": "An alternate name for the day (e.g., Red, Blue).", + "minLength": 1, + "maxLength": 20 + }, + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the bell schedule begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the bell schedule ends." + }, + "totalInstructionalTime": { + "type": "integer", + "description": "The total instructional time in minutes per day for the bell schedule." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "bellScheduleName", + "schoolReference", + "classPeriods" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.BellSchedule", + "description": "This entity represents the schedule of class period meeting times.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "bellScheduleName": { + "type": "string", + "description": "Name or title of the bell schedule.", + "minLength": 1, + "maxLength": 60 + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "dates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + "description": "The dates for which the bell schedule applies." + } + }, + "additionalProperties": false, + "required": [ + "date" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "alternateDayName": { + "type": "string", + "description": "An alternate name for the day (e.g., Red, Blue).", + "minLength": 1, + "maxLength": 20 + }, + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the bell schedule begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the bell schedule ends." + }, + "totalInstructionalTime": { + "type": "integer", + "description": "The total instructional time in minutes per day for the bell schedule." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "bellScheduleName", + "schoolReference", + "classPeriods" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.BellSchedule", + "description": "This entity represents the schedule of class period meeting times.", + "type": "object", + "properties": { + "bellScheduleName": { + "type": "string", + "description": "Name or title of the bell schedule.", + "minLength": 1, + "maxLength": 60 + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "dates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + "description": "The dates for which the bell schedule applies." + } + }, + "additionalProperties": false, + "required": [ + "date" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "alternateDayName": { + "type": "string", + "description": "An alternate name for the day (e.g., Red, Blue).", + "minLength": 1, + "maxLength": 20 + }, + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the bell schedule begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the bell schedule ends." + }, + "totalInstructionalTime": { + "type": "integer", + "description": "The total instructional time in minutes per day for the bell schedule." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.classPeriods[*].classPeriodReference.schoolId", + "targetJsonPath": "$.schoolReference.schoolId" + } + ], + "identityFullnames": [ + "BellScheduleName", + "School" + ], + "documentPathsMapping": { + "BellScheduleName": { + "paths": { + "bellScheduleName": "$.bellScheduleName" + }, + "pathOrder": [ + "bellScheduleName" + ], + "isReference": false + }, + "GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.gradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "ClassPeriod": { + "paths": { + "classPeriodName": "$.classPeriods[*].classPeriodReference.classPeriodName", + "schoolId": "$.classPeriods[*].classPeriodReference.schoolId" + }, + "pathOrder": [ + "classPeriodName", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ClassPeriod" + }, + "Date": { + "paths": { + "date": "$.dates[*].date" + }, + "pathOrder": [ + "date" + ], + "isReference": false + }, + "AlternateDayName": { + "paths": { + "alternateDayName": "$.alternateDayName" + }, + "pathOrder": [ + "alternateDayName" + ], + "isReference": false + }, + "StartTime": { + "paths": { + "startTime": "$.startTime" + }, + "pathOrder": [ + "startTime" + ], + "isReference": false + }, + "EndTime": { + "paths": { + "endTime": "$.endTime" + }, + "pathOrder": [ + "endTime" + ], + "isReference": false + }, + "TotalInstructionalTime": { + "paths": { + "totalInstructionalTime": "$.totalInstructionalTime" + }, + "pathOrder": [ + "totalInstructionalTime" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "bellScheduleName", + "schoolId" + ], + "isSubclass": false + }, + "calendars": { + "resourceName": "Calendar", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Calendar", + "description": "A set of dates associated with an organization.", + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "calendarTypeDescriptor": { + "type": "string", + "description": "Indicates the type of calendar." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "calendarTypeDescriptor", + "schoolReference", + "schoolYearTypeReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Calendar", + "description": "A set of dates associated with an organization.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "calendarTypeDescriptor": { + "type": "string", + "description": "Indicates the type of calendar." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "calendarCode", + "calendarTypeDescriptor", + "schoolReference", + "schoolYearTypeReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Calendar", + "description": "A set of dates associated with an organization.", + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "calendarTypeDescriptor": { + "type": "string", + "description": "Indicates the type of calendar." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CalendarCode", + "School", + "SchoolYear" + ], + "documentPathsMapping": { + "CalendarCode": { + "paths": { + "calendarCode": "$.calendarCode" + }, + "pathOrder": [ + "calendarCode" + ], + "isReference": false + }, + "CalendarType": { + "paths": { + "calendarTypeDescriptor": "$.calendarTypeDescriptor" + }, + "pathOrder": [ + "calendarTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CalendarTypeDescriptor" + }, + "GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.gradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "calendarCode", + "schoolId", + "schoolYear" + ], + "isSubclass": false + }, + "calendarDates": { + "resourceName": "CalendarDate", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CalendarDate", + "description": "The type of scheduled or unscheduled event for the day.", + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the calendar event." + }, + "calendarEvents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "calendarEventDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "calendarEventDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "date", + "calendarEvents", + "calendarReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CalendarDate", + "description": "The type of scheduled or unscheduled event for the day.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "date": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the calendar event." + }, + "calendarEvents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "calendarEventDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "calendarEventDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "date", + "calendarEvents", + "calendarReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CalendarDate", + "description": "The type of scheduled or unscheduled event for the day.", + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the calendar event." + }, + "calendarEvents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "calendarEventDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "calendarEventDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Date", + "Calendar" + ], + "documentPathsMapping": { + "Date": { + "paths": { + "date": "$.date" + }, + "pathOrder": [ + "date" + ], + "isReference": false + }, + "CalendarEvent": { + "paths": { + "calendarEventDescriptor": "$.calendarEvents[*].calendarEventDescriptor" + }, + "pathOrder": [ + "calendarEventDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CalendarEventDescriptor" + }, + "Calendar": { + "paths": { + "calendarCode": "$.calendarReference.calendarCode", + "schoolId": "$.calendarReference.schoolId", + "schoolYear": "$.calendarReference.schoolYear" + }, + "pathOrder": [ + "calendarCode", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Calendar" + } + }, + "identityPathOrder": [ + "calendarCode", + "date", + "schoolId", + "schoolYear" + ], + "isSubclass": false + }, + "chartOfAccounts": { + "resourceName": "ChartOfAccount", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ChartOfAccount", + "description": "A valid combination of account dimensions under which financials are reported. This financial entity represents a funding source combined with its purpose and type of transaction. It provides a formal record of the debits and credits relating to the specific account.", + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "SEA populated code value for the valid combination of account dimensions under which financials are reported.", + "minLength": 1, + "maxLength": 50 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account", + "minimum": 2020, + "maximum": 2040 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "accountTypeDescriptor": { + "type": "string", + "description": "The type of account used in accounting such as revenue, expenditure, or balance sheet." + }, + "accountName": { + "type": "string", + "description": "A descriptive name for the account.", + "maxLength": 100 + }, + "balanceSheetBalanceSheetDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account balance sheet dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "functionFunctionDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account function dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account function dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "fundFundDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account fund dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account fund dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "objectObjectDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account object dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account object dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "operationalUnitOperationalUnitDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account operational unit dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account operational unit dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "programProgramDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account program dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account program dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "projectProjectDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account project dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account project dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "sourceSourceDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account source dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account source dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tagValue": { + "type": "string", + "description": "The value associated with the reporting tag.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTagDescriptor": { + "type": "string", + "description": "A descriptor used at the dimension and/or chart of account levels to demote specific state needs for reporting." + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "fiscalYear", + "educationOrganizationReference", + "accountTypeDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ChartOfAccount", + "description": "A valid combination of account dimensions under which financials are reported. This financial entity represents a funding source combined with its purpose and type of transaction. It provides a formal record of the debits and credits relating to the specific account.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "accountIdentifier": { + "type": "string", + "description": "SEA populated code value for the valid combination of account dimensions under which financials are reported.", + "minLength": 1, + "maxLength": 50 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account", + "minimum": 2020, + "maximum": 2040 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "accountTypeDescriptor": { + "type": "string", + "description": "The type of account used in accounting such as revenue, expenditure, or balance sheet." + }, + "accountName": { + "type": "string", + "description": "A descriptive name for the account.", + "maxLength": 100 + }, + "balanceSheetBalanceSheetDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account balance sheet dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "functionFunctionDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account function dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account function dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "fundFundDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account fund dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account fund dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "objectObjectDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account object dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account object dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "operationalUnitOperationalUnitDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account operational unit dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account operational unit dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "programProgramDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account program dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account program dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "projectProjectDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account project dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account project dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "sourceSourceDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account source dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account source dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tagValue": { + "type": "string", + "description": "The value associated with the reporting tag.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTagDescriptor": { + "type": "string", + "description": "A descriptor used at the dimension and/or chart of account levels to demote specific state needs for reporting." + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "accountIdentifier", + "fiscalYear", + "educationOrganizationReference", + "accountTypeDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ChartOfAccount", + "description": "A valid combination of account dimensions under which financials are reported. This financial entity represents a funding source combined with its purpose and type of transaction. It provides a formal record of the debits and credits relating to the specific account.", + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "SEA populated code value for the valid combination of account dimensions under which financials are reported.", + "minLength": 1, + "maxLength": 50 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account", + "minimum": 2020, + "maximum": 2040 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "accountTypeDescriptor": { + "type": "string", + "description": "The type of account used in accounting such as revenue, expenditure, or balance sheet." + }, + "accountName": { + "type": "string", + "description": "A descriptive name for the account.", + "maxLength": 100 + }, + "balanceSheetBalanceSheetDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account balance sheet dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account balance sheet dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "functionFunctionDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account function dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account function dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "fundFundDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account fund dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account fund dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "objectObjectDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account object dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account object dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "operationalUnitOperationalUnitDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account operational unit dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account operational unit dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "programProgramDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account program dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account program dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "projectProjectDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account project dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account project dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "sourceSourceDimensionReference": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account source dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account source dimension is valid.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tagValue": { + "type": "string", + "description": "The value associated with the reporting tag.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTagDescriptor": { + "type": "string", + "description": "A descriptor used at the dimension and/or chart of account levels to demote specific state needs for reporting." + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.balanceSheetBalanceSheetDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.functionFunctionDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.fundFundDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.objectObjectDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.operationalUnitOperationalUnitDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.programProgramDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.projectProjectDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + }, + { + "sourceJsonPath": "$.sourceSourceDimensionReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + } + ], + "identityFullnames": [ + "AccountIdentifier", + "FiscalYear", + "EducationOrganization" + ], + "documentPathsMapping": { + "AccountIdentifier": { + "paths": { + "accountIdentifier": "$.accountIdentifier" + }, + "pathOrder": [ + "accountIdentifier" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "AccountType": { + "paths": { + "accountTypeDescriptor": "$.accountTypeDescriptor" + }, + "pathOrder": [ + "accountTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AccountTypeDescriptor" + }, + "AccountName": { + "paths": { + "accountName": "$.accountName" + }, + "pathOrder": [ + "accountName" + ], + "isReference": false + }, + "BalanceSheetBalanceSheetDimension": { + "paths": { + "code": "$.balanceSheetBalanceSheetDimensionReference.code", + "fiscalYear": "$.balanceSheetBalanceSheetDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "BalanceSheetDimension" + }, + "FunctionFunctionDimension": { + "paths": { + "code": "$.functionFunctionDimensionReference.code", + "fiscalYear": "$.functionFunctionDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "FunctionDimension" + }, + "FundFundDimension": { + "paths": { + "code": "$.fundFundDimensionReference.code", + "fiscalYear": "$.fundFundDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "FundDimension" + }, + "ObjectObjectDimension": { + "paths": { + "code": "$.objectObjectDimensionReference.code", + "fiscalYear": "$.objectObjectDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ObjectDimension" + }, + "OperationalUnitOperationalUnitDimension": { + "paths": { + "code": "$.operationalUnitOperationalUnitDimensionReference.code", + "fiscalYear": "$.operationalUnitOperationalUnitDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "OperationalUnitDimension" + }, + "ProgramProgramDimension": { + "paths": { + "code": "$.programProgramDimensionReference.code", + "fiscalYear": "$.programProgramDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ProgramDimension" + }, + "ProjectProjectDimension": { + "paths": { + "code": "$.projectProjectDimensionReference.code", + "fiscalYear": "$.projectProjectDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ProjectDimension" + }, + "SourceSourceDimension": { + "paths": { + "code": "$.sourceSourceDimensionReference.code", + "fiscalYear": "$.sourceSourceDimensionReference.fiscalYear" + }, + "pathOrder": [ + "code", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SourceDimension" + }, + "ReportingTag.TagValue": { + "paths": { + "tagValue": "$.reportingTags[*].tagValue" + }, + "pathOrder": [ + "tagValue" + ], + "isReference": false + }, + "ReportingTag.ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isSubclass": false + }, + "classPeriods": { + "resourceName": "ClassPeriod", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ClassPeriod", + "description": "This entity represents the designation of a regularly scheduled series of class meetings at designated times and days of the week.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "meetingTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time ends." + } + }, + "additionalProperties": false, + "required": [ + "startTime", + "endTime" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "officialAttendancePeriod": { + "type": "boolean", + "description": "Indicator of whether this class period is used for official daily attendance. Alternatively, official daily attendance may be tied to a section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "schoolReference", + "classPeriodName" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ClassPeriod", + "description": "This entity represents the designation of a regularly scheduled series of class meetings at designated times and days of the week.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "meetingTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time ends." + } + }, + "additionalProperties": false, + "required": [ + "startTime", + "endTime" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "officialAttendancePeriod": { + "type": "boolean", + "description": "Indicator of whether this class period is used for official daily attendance. Alternatively, official daily attendance may be tied to a section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "schoolReference", + "classPeriodName" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ClassPeriod", + "description": "This entity represents the designation of a regularly scheduled series of class meetings at designated times and days of the week.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "meetingTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time ends." + } + }, + "additionalProperties": false, + "required": [ + "startTime", + "endTime" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "officialAttendancePeriod": { + "type": "boolean", + "description": "Indicator of whether this class period is used for official daily attendance. Alternatively, official daily attendance may be tied to a section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "School", + "ClassPeriodName" + ], + "documentPathsMapping": { + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "ClassPeriodName": { + "paths": { + "classPeriodName": "$.classPeriodName" + }, + "pathOrder": [ + "classPeriodName" + ], + "isReference": false + }, + "MeetingTime.StartTime": { + "paths": { + "startTime": "$.meetingTimes[*].startTime" + }, + "pathOrder": [ + "startTime" + ], + "isReference": false + }, + "MeetingTime.EndTime": { + "paths": { + "endTime": "$.meetingTimes[*].endTime" + }, + "pathOrder": [ + "endTime" + ], + "isReference": false + }, + "OfficialAttendancePeriod": { + "paths": { + "officialAttendancePeriod": "$.officialAttendancePeriod" + }, + "pathOrder": [ + "officialAttendancePeriod" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "classPeriodName", + "schoolId" + ], + "isSubclass": false + }, + "cohorts": { + "resourceName": "Cohort", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Cohort", + "description": "This entity represents any type of list of designated students for tracking, analysis, or intervention.", + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "cohortDescription": { + "type": "string", + "description": "The description of the cohort and its purpose.", + "minLength": 1, + "maxLength": 1024 + }, + "cohortTypeDescriptor": { + "type": "string", + "description": "The type of cohort (e.g., academic intervention, classroom breakout)." + }, + "cohortScopeDescriptor": { + "type": "string", + "description": "The scope of cohort (e.g., school, district, classroom)." + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The academic subject associated with an academic intervention." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "cohortTypeDescriptor", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Cohort", + "description": "This entity represents any type of list of designated students for tracking, analysis, or intervention.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "cohortDescription": { + "type": "string", + "description": "The description of the cohort and its purpose.", + "minLength": 1, + "maxLength": 1024 + }, + "cohortTypeDescriptor": { + "type": "string", + "description": "The type of cohort (e.g., academic intervention, classroom breakout)." + }, + "cohortScopeDescriptor": { + "type": "string", + "description": "The scope of cohort (e.g., school, district, classroom)." + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The academic subject associated with an academic intervention." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "cohortIdentifier", + "cohortTypeDescriptor", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Cohort", + "description": "This entity represents any type of list of designated students for tracking, analysis, or intervention.", + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "cohortDescription": { + "type": "string", + "description": "The description of the cohort and its purpose.", + "minLength": 1, + "maxLength": 1024 + }, + "cohortTypeDescriptor": { + "type": "string", + "description": "The type of cohort (e.g., academic intervention, classroom breakout)." + }, + "cohortScopeDescriptor": { + "type": "string", + "description": "The scope of cohort (e.g., school, district, classroom)." + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The academic subject associated with an academic intervention." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CohortIdentifier", + "EducationOrganization" + ], + "documentPathsMapping": { + "CohortIdentifier": { + "paths": { + "cohortIdentifier": "$.cohortIdentifier" + }, + "pathOrder": [ + "cohortIdentifier" + ], + "isReference": false + }, + "CohortDescription": { + "paths": { + "cohortDescription": "$.cohortDescription" + }, + "pathOrder": [ + "cohortDescription" + ], + "isReference": false + }, + "CohortType": { + "paths": { + "cohortTypeDescriptor": "$.cohortTypeDescriptor" + }, + "pathOrder": [ + "cohortTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CohortTypeDescriptor" + }, + "CohortScope": { + "paths": { + "cohortScopeDescriptor": "$.cohortScopeDescriptor" + }, + "pathOrder": [ + "cohortScopeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CohortScopeDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programs[*].programReference.educationOrganizationId", + "programName": "$.programs[*].programReference.programName", + "programTypeDescriptor": "$.programs[*].programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + } + }, + "identityPathOrder": [ + "cohortIdentifier", + "educationOrganizationId" + ], + "isSubclass": false + }, + "communityProviderLicenses": { + "resourceName": "CommunityProviderLicense", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityProviderLicense", + "description": "The legal document held by the community provider that authorizes the holder to perform certain functions and or services.", + "type": "object", + "properties": { + "communityProviderReference": { + "type": "object", + "properties": { + "communityProviderId": { + "type": "integer", + "description": "The identifier assigned to a community provider." + } + }, + "additionalProperties": false, + "required": [ + "communityProviderId" + ] + }, + "licenseIdentifier": { + "type": "string", + "description": "The unique identifier issued by the licensing organization.", + "maxLength": 36 + }, + "licensingOrganization": { + "type": "string", + "description": "The organization issuing the license.", + "minLength": 1, + "maxLength": 75 + }, + "licenseEffectiveDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a license is active or becomes effective." + }, + "licenseExpirationDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a license will expire." + }, + "licenseIssueDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active license was issued." + }, + "licenseStatusDescriptor": { + "type": "string", + "description": "An indication of the status of the license." + }, + "licenseTypeDescriptor": { + "type": "string", + "description": "An indication of the category of the license." + }, + "authorizedFacilityCapacity": { + "type": "integer", + "description": "The maximum number that can be contained or accommodated which a provider is authorized or licensed to serve." + }, + "oldestAgeAuthorizedToServe": { + "type": "integer", + "description": "The oldest age of children a provider is authorized or licensed to serve." + }, + "youngestAgeAuthorizedToServe": { + "type": "integer", + "description": "The youngest age of children a provider is authorized or licensed to serve." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "communityProviderReference", + "licenseIdentifier", + "licensingOrganization", + "licenseEffectiveDate", + "licenseTypeDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityProviderLicense", + "description": "The legal document held by the community provider that authorizes the holder to perform certain functions and or services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "communityProviderReference": { + "type": "object", + "properties": { + "communityProviderId": { + "type": "integer", + "description": "The identifier assigned to a community provider." + } + }, + "additionalProperties": false, + "required": [ + "communityProviderId" + ] + }, + "licenseIdentifier": { + "type": "string", + "description": "The unique identifier issued by the licensing organization.", + "maxLength": 36 + }, + "licensingOrganization": { + "type": "string", + "description": "The organization issuing the license.", + "minLength": 1, + "maxLength": 75 + }, + "licenseEffectiveDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a license is active or becomes effective." + }, + "licenseExpirationDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a license will expire." + }, + "licenseIssueDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active license was issued." + }, + "licenseStatusDescriptor": { + "type": "string", + "description": "An indication of the status of the license." + }, + "licenseTypeDescriptor": { + "type": "string", + "description": "An indication of the category of the license." + }, + "authorizedFacilityCapacity": { + "type": "integer", + "description": "The maximum number that can be contained or accommodated which a provider is authorized or licensed to serve." + }, + "oldestAgeAuthorizedToServe": { + "type": "integer", + "description": "The oldest age of children a provider is authorized or licensed to serve." + }, + "youngestAgeAuthorizedToServe": { + "type": "integer", + "description": "The youngest age of children a provider is authorized or licensed to serve." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "communityProviderReference", + "licenseIdentifier", + "licensingOrganization", + "licenseEffectiveDate", + "licenseTypeDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityProviderLicense", + "description": "The legal document held by the community provider that authorizes the holder to perform certain functions and or services.", + "type": "object", + "properties": { + "communityProviderReference": { + "type": "object", + "properties": { + "communityProviderId": { + "type": "integer", + "description": "The identifier assigned to a community provider." + } + }, + "additionalProperties": false, + "required": [ + "communityProviderId" + ] + }, + "licenseIdentifier": { + "type": "string", + "description": "The unique identifier issued by the licensing organization.", + "maxLength": 36 + }, + "licensingOrganization": { + "type": "string", + "description": "The organization issuing the license.", + "minLength": 1, + "maxLength": 75 + }, + "licenseEffectiveDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a license is active or becomes effective." + }, + "licenseExpirationDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a license will expire." + }, + "licenseIssueDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active license was issued." + }, + "licenseStatusDescriptor": { + "type": "string", + "description": "An indication of the status of the license." + }, + "licenseTypeDescriptor": { + "type": "string", + "description": "An indication of the category of the license." + }, + "authorizedFacilityCapacity": { + "type": "integer", + "description": "The maximum number that can be contained or accommodated which a provider is authorized or licensed to serve." + }, + "oldestAgeAuthorizedToServe": { + "type": "integer", + "description": "The oldest age of children a provider is authorized or licensed to serve." + }, + "youngestAgeAuthorizedToServe": { + "type": "integer", + "description": "The youngest age of children a provider is authorized or licensed to serve." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CommunityProvider" + ], + "documentPathsMapping": { + "CommunityProvider": { + "paths": { + "communityProviderId": "$.communityProviderReference.communityProviderId" + }, + "pathOrder": [ + "communityProviderId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "CommunityProvider" + }, + "License.LicenseIdentifier": { + "paths": { + "licenseIdentifier": "$.licenseIdentifier" + }, + "pathOrder": [ + "licenseIdentifier" + ], + "isReference": false + }, + "License.LicensingOrganization": { + "paths": { + "licensingOrganization": "$.licensingOrganization" + }, + "pathOrder": [ + "licensingOrganization" + ], + "isReference": false + }, + "License.LicenseEffectiveDate": { + "paths": { + "licenseEffectiveDate": "$.licenseEffectiveDate" + }, + "pathOrder": [ + "licenseEffectiveDate" + ], + "isReference": false + }, + "License.LicenseExpirationDate": { + "paths": { + "licenseExpirationDate": "$.licenseExpirationDate" + }, + "pathOrder": [ + "licenseExpirationDate" + ], + "isReference": false + }, + "License.LicenseIssueDate": { + "paths": { + "licenseIssueDate": "$.licenseIssueDate" + }, + "pathOrder": [ + "licenseIssueDate" + ], + "isReference": false + }, + "License.LicenseStatus": { + "paths": { + "licenseStatusDescriptor": "$.licenseStatusDescriptor" + }, + "pathOrder": [ + "licenseStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LicenseStatusDescriptor" + }, + "License.LicenseType": { + "paths": { + "licenseTypeDescriptor": "$.licenseTypeDescriptor" + }, + "pathOrder": [ + "licenseTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LicenseTypeDescriptor" + }, + "License.AuthorizedFacilityCapacity": { + "paths": { + "authorizedFacilityCapacity": "$.authorizedFacilityCapacity" + }, + "pathOrder": [ + "authorizedFacilityCapacity" + ], + "isReference": false + }, + "License.OldestAgeAuthorizedToServe": { + "paths": { + "oldestAgeAuthorizedToServe": "$.oldestAgeAuthorizedToServe" + }, + "pathOrder": [ + "oldestAgeAuthorizedToServe" + ], + "isReference": false + }, + "License.YoungestAgeAuthorizedToServe": { + "paths": { + "youngestAgeAuthorizedToServe": "$.youngestAgeAuthorizedToServe" + }, + "pathOrder": [ + "youngestAgeAuthorizedToServe" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "communityProviderId" + ], + "isSubclass": false + }, + "competencyObjectives": { + "resourceName": "CompetencyObjective", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CompetencyObjective", + "description": "This entity holds additional competencies for student achievement that are not associated with specific learning objectives (e.g., paying attention in class).", + "type": "object", + "properties": { + "competencyObjectiveId": { + "type": "string", + "description": "The Identifier for the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "description": { + "type": "string", + "description": "The description of the student competency objective.", + "minLength": 1, + "maxLength": 1024 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "successCriteria": { + "type": "string", + "description": "One or more statements that describes the criteria used by teachers and students to check for attainment of a competency objective. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the competency objective.", + "minLength": 1, + "maxLength": 150 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "objective", + "objectiveGradeLevelDescriptor", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CompetencyObjective", + "description": "This entity holds additional competencies for student achievement that are not associated with specific learning objectives (e.g., paying attention in class).", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "competencyObjectiveId": { + "type": "string", + "description": "The Identifier for the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "description": { + "type": "string", + "description": "The description of the student competency objective.", + "minLength": 1, + "maxLength": 1024 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "successCriteria": { + "type": "string", + "description": "One or more statements that describes the criteria used by teachers and students to check for attainment of a competency objective. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the competency objective.", + "minLength": 1, + "maxLength": 150 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "objective", + "objectiveGradeLevelDescriptor", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CompetencyObjective", + "description": "This entity holds additional competencies for student achievement that are not associated with specific learning objectives (e.g., paying attention in class).", + "type": "object", + "properties": { + "competencyObjectiveId": { + "type": "string", + "description": "The Identifier for the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "description": { + "type": "string", + "description": "The description of the student competency objective.", + "minLength": 1, + "maxLength": 1024 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "successCriteria": { + "type": "string", + "description": "One or more statements that describes the criteria used by teachers and students to check for attainment of a competency objective. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the competency objective.", + "minLength": 1, + "maxLength": 150 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Objective", + "ObjectiveGradeLevel", + "EducationOrganization" + ], + "documentPathsMapping": { + "CompetencyObjectiveId": { + "paths": { + "competencyObjectiveId": "$.competencyObjectiveId" + }, + "pathOrder": [ + "competencyObjectiveId" + ], + "isReference": false + }, + "Objective": { + "paths": { + "objective": "$.objective" + }, + "pathOrder": [ + "objective" + ], + "isReference": false + }, + "Description": { + "paths": { + "description": "$.description" + }, + "pathOrder": [ + "description" + ], + "isReference": false + }, + "ObjectiveGradeLevel": { + "paths": { + "objectiveGradeLevelDescriptor": "$.objectiveGradeLevelDescriptor" + }, + "pathOrder": [ + "objectiveGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "SuccessCriteria": { + "paths": { + "successCriteria": "$.successCriteria" + }, + "pathOrder": [ + "successCriteria" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor" + ], + "isSubclass": false + }, + "contacts": { + "resourceName": "Contact", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Contact", + "description": "This entity represents a contact of a student, such as a parent, guardian or caretaker.", + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "A person's gender." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "highestCompletedLevelOfEducationDescriptor": { + "type": "string", + "description": "The extent of formal instruction an individual has received (e.g., the highest grade in school completed or its equivalent or the highest degree received)." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "contactUniqueId", + "firstName", + "lastSurname" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Contact", + "description": "This entity represents a contact of a student, such as a parent, guardian or caretaker.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "A person's gender." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "highestCompletedLevelOfEducationDescriptor": { + "type": "string", + "description": "The extent of formal instruction an individual has received (e.g., the highest grade in school completed or its equivalent or the highest degree received)." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "contactUniqueId", + "firstName", + "lastSurname" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Contact", + "description": "This entity represents a contact of a student, such as a parent, guardian or caretaker.", + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "A person's gender." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "highestCompletedLevelOfEducationDescriptor": { + "type": "string", + "description": "The extent of formal instruction an individual has received (e.g., the highest grade in school completed or its equivalent or the highest degree received)." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "ContactUniqueId" + ], + "documentPathsMapping": { + "ContactUniqueId": { + "paths": { + "contactUniqueId": "$.contactUniqueId" + }, + "pathOrder": [ + "contactUniqueId" + ], + "isReference": false + }, + "Name.PersonalTitlePrefix": { + "paths": { + "personalTitlePrefix": "$.personalTitlePrefix" + }, + "pathOrder": [ + "personalTitlePrefix" + ], + "isReference": false + }, + "Name.FirstName": { + "paths": { + "firstName": "$.firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "Name.MiddleName": { + "paths": { + "middleName": "$.middleName" + }, + "pathOrder": [ + "middleName" + ], + "isReference": false + }, + "Name.LastSurname": { + "paths": { + "lastSurname": "$.lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "Name.GenerationCodeSuffix": { + "paths": { + "generationCodeSuffix": "$.generationCodeSuffix" + }, + "pathOrder": [ + "generationCodeSuffix" + ], + "isReference": false + }, + "Name.MaidenName": { + "paths": { + "maidenName": "$.maidenName" + }, + "pathOrder": [ + "maidenName" + ], + "isReference": false + }, + "Name.PreferredFirstName": { + "paths": { + "preferredFirstName": "$.preferredFirstName" + }, + "pathOrder": [ + "preferredFirstName" + ], + "isReference": false + }, + "Name.PreferredLastSurname": { + "paths": { + "preferredLastSurname": "$.preferredLastSurname" + }, + "pathOrder": [ + "preferredLastSurname" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.DocumentTitle": { + "paths": { + "documentTitle": "$.personalIdentificationDocuments[*].documentTitle" + }, + "pathOrder": [ + "documentTitle" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.PersonalInformationVerification": { + "paths": { + "personalInformationVerificationDescriptor": "$.personalIdentificationDocuments[*].personalInformationVerificationDescriptor" + }, + "pathOrder": [ + "personalInformationVerificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PersonalInformationVerificationDescriptor" + }, + "Name.PersonalIdentificationDocument.DocumentExpirationDate": { + "paths": { + "documentExpirationDate": "$.personalIdentificationDocuments[*].documentExpirationDate" + }, + "pathOrder": [ + "documentExpirationDate" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerDocumentIdentificationCode": { + "paths": { + "issuerDocumentIdentificationCode": "$.personalIdentificationDocuments[*].issuerDocumentIdentificationCode" + }, + "pathOrder": [ + "issuerDocumentIdentificationCode" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerName": { + "paths": { + "issuerName": "$.personalIdentificationDocuments[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerCountry": { + "paths": { + "issuerCountryDescriptor": "$.personalIdentificationDocuments[*].issuerCountryDescriptor" + }, + "pathOrder": [ + "issuerCountryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "Name.PersonalIdentificationDocument.IdentificationDocumentUse": { + "paths": { + "identificationDocumentUseDescriptor": "$.personalIdentificationDocuments[*].identificationDocumentUseDescriptor" + }, + "pathOrder": [ + "identificationDocumentUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IdentificationDocumentUseDescriptor" + }, + "OtherName.PersonalTitlePrefix": { + "paths": { + "personalTitlePrefix": "$.otherNames[*].personalTitlePrefix" + }, + "pathOrder": [ + "personalTitlePrefix" + ], + "isReference": false + }, + "OtherName.FirstName": { + "paths": { + "firstName": "$.otherNames[*].firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "OtherName.MiddleName": { + "paths": { + "middleName": "$.otherNames[*].middleName" + }, + "pathOrder": [ + "middleName" + ], + "isReference": false + }, + "OtherName.LastSurname": { + "paths": { + "lastSurname": "$.otherNames[*].lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "OtherName.GenerationCodeSuffix": { + "paths": { + "generationCodeSuffix": "$.otherNames[*].generationCodeSuffix" + }, + "pathOrder": [ + "generationCodeSuffix" + ], + "isReference": false + }, + "OtherName.OtherNameType": { + "paths": { + "otherNameTypeDescriptor": "$.otherNames[*].otherNameTypeDescriptor" + }, + "pathOrder": [ + "otherNameTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OtherNameTypeDescriptor" + }, + "Sex": { + "paths": { + "sexDescriptor": "$.sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Telephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.telephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "Telephone.TelephoneNumberType": { + "paths": { + "telephoneNumberTypeDescriptor": "$.telephones[*].telephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "telephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TelephoneNumberTypeDescriptor" + }, + "Telephone.OrderOfPriority": { + "paths": { + "orderOfPriority": "$.telephones[*].orderOfPriority" + }, + "pathOrder": [ + "orderOfPriority" + ], + "isReference": false + }, + "Telephone.TextMessageCapabilityIndicator": { + "paths": { + "textMessageCapabilityIndicator": "$.telephones[*].textMessageCapabilityIndicator" + }, + "pathOrder": [ + "textMessageCapabilityIndicator" + ], + "isReference": false + }, + "Telephone.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.telephones[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "ElectronicMail.ElectronicMailAddress": { + "paths": { + "electronicMailAddress": "$.electronicMails[*].electronicMailAddress" + }, + "pathOrder": [ + "electronicMailAddress" + ], + "isReference": false + }, + "ElectronicMail.ElectronicMailType": { + "paths": { + "electronicMailTypeDescriptor": "$.electronicMails[*].electronicMailTypeDescriptor" + }, + "pathOrder": [ + "electronicMailTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ElectronicMailTypeDescriptor" + }, + "ElectronicMail.PrimaryEmailAddressIndicator": { + "paths": { + "primaryEmailAddressIndicator": "$.electronicMails[*].primaryEmailAddressIndicator" + }, + "pathOrder": [ + "primaryEmailAddressIndicator" + ], + "isReference": false + }, + "ElectronicMail.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.electronicMails[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "LoginId": { + "paths": { + "loginId": "$.loginId" + }, + "pathOrder": [ + "loginId" + ], + "isReference": false + }, + "Language.Language": { + "paths": { + "languageDescriptor": "$.languages[*].languageDescriptor" + }, + "pathOrder": [ + "languageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "Language.LanguageUse": { + "paths": { + "languageUseDescriptor": "$.languages[*].uses[*].languageUseDescriptor" + }, + "pathOrder": [ + "languageUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageUseDescriptor" + }, + "Person": { + "paths": { + "personId": "$.personReference.personId", + "sourceSystemDescriptor": "$.personReference.sourceSystemDescriptor" + }, + "pathOrder": [ + "personId", + "sourceSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Person" + }, + "HighestCompletedLevelOfEducation": { + "paths": { + "highestCompletedLevelOfEducationDescriptor": "$.highestCompletedLevelOfEducationDescriptor" + }, + "pathOrder": [ + "highestCompletedLevelOfEducationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LevelOfEducationDescriptor" + } + }, + "identityPathOrder": [ + "contactUniqueId" + ], + "isSubclass": false + }, + "courses": { + "resourceName": "Course", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Course", + "description": "This educational entity represents the organization of subject matter and related learning experiences provided for the instruction of students on a regular or systematic basis.", + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "courseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in a school or other institution or organization. In departmentalized classes at the elementary, secondary, and postsecondary levels (and for staff development activities), this refers to the name by which a course is identified (e.g., American History, English III). For elementary and other non-departmentalized classes, it refers to any portion of the instruction for which a grade or report is assigned (e.g., reading, composition, spelling, and language arts).", + "minLength": 1, + "maxLength": 60 + }, + "numberOfParts": { + "type": "integer", + "description": "The number of parts identified for a course.", + "minimum": 1, + "maximum": 8 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a course by a school, school system, state, or other agency or entity. For multi-part course codes, concatenate the parts separated by a \"/\". For example, consider the following SCED code- subject = 20 Math course = 272 Geometry level = G General credits = 1.00 course sequence 1 of 1- would be entered as 20/272/G/1.00/1 of 1.", + "minLength": 1, + "maxLength": 60 + }, + "courseIdentificationSystemDescriptor": { + "type": "string", + "description": "A system that is used to identify the organization of subject matter and related learning experiences provided for the instruction of students." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the Identification Code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "courseIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "levelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the course." + }, + "courseDescription": { + "type": "string", + "description": "A description of the content standards and goals covered in the course. Reference may be made to state or national content standards.", + "minLength": 1, + "maxLength": 1024 + }, + "timeRequiredForCompletion": { + "type": "integer", + "description": "The actual or estimated number of clock minutes required for class completion. This number is especially important for career and technical education classes and may represent (in minutes) the clock hour requirement of the class.", + "minimum": 1 + }, + "dateCourseAdopted": { + "type": "string", + "format": "date", + "description": "Date the course was adopted by the education agency." + }, + "highSchoolCourseRequirement": { + "type": "boolean", + "description": "An indication that this course may satisfy high school graduation requirements in the course's subject area." + }, + "courseGPAApplicabilityDescriptor": { + "type": "string", + "description": "An indicator of whether or not the course being described is included in the computation of the student's grade point average, and if so, if it is weighted differently from regular courses." + }, + "courseDefinedByDescriptor": { + "type": "string", + "description": "Specifies whether the course was defined by the SEA, LEA, School, or national organization." + }, + "minimumAvailableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "minimumAvailableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "minimumAvailableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "maximumAvailableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "maximumAvailableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "maximumAvailableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "careerPathwayDescriptor": { + "type": "string", + "description": "Indicates the career cluster or pathway the course is associated with as part of a CTE curriculum." + }, + "competencyLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "competencyLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "competencyLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "maxCompletionsForCredit": { + "type": "integer", + "description": "Designates how many times the course may be taken with credit received by the student.", + "minimum": 1 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "courseTitle", + "numberOfParts", + "identificationCodes", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Course", + "description": "This educational entity represents the organization of subject matter and related learning experiences provided for the instruction of students on a regular or systematic basis.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "courseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in a school or other institution or organization. In departmentalized classes at the elementary, secondary, and postsecondary levels (and for staff development activities), this refers to the name by which a course is identified (e.g., American History, English III). For elementary and other non-departmentalized classes, it refers to any portion of the instruction for which a grade or report is assigned (e.g., reading, composition, spelling, and language arts).", + "minLength": 1, + "maxLength": 60 + }, + "numberOfParts": { + "type": "integer", + "description": "The number of parts identified for a course.", + "minimum": 1, + "maximum": 8 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a course by a school, school system, state, or other agency or entity. For multi-part course codes, concatenate the parts separated by a \"/\". For example, consider the following SCED code- subject = 20 Math course = 272 Geometry level = G General credits = 1.00 course sequence 1 of 1- would be entered as 20/272/G/1.00/1 of 1.", + "minLength": 1, + "maxLength": 60 + }, + "courseIdentificationSystemDescriptor": { + "type": "string", + "description": "A system that is used to identify the organization of subject matter and related learning experiences provided for the instruction of students." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the Identification Code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "courseIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "levelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the course." + }, + "courseDescription": { + "type": "string", + "description": "A description of the content standards and goals covered in the course. Reference may be made to state or national content standards.", + "minLength": 1, + "maxLength": 1024 + }, + "timeRequiredForCompletion": { + "type": "integer", + "description": "The actual or estimated number of clock minutes required for class completion. This number is especially important for career and technical education classes and may represent (in minutes) the clock hour requirement of the class.", + "minimum": 1 + }, + "dateCourseAdopted": { + "type": "string", + "format": "date", + "description": "Date the course was adopted by the education agency." + }, + "highSchoolCourseRequirement": { + "type": "boolean", + "description": "An indication that this course may satisfy high school graduation requirements in the course's subject area." + }, + "courseGPAApplicabilityDescriptor": { + "type": "string", + "description": "An indicator of whether or not the course being described is included in the computation of the student's grade point average, and if so, if it is weighted differently from regular courses." + }, + "courseDefinedByDescriptor": { + "type": "string", + "description": "Specifies whether the course was defined by the SEA, LEA, School, or national organization." + }, + "minimumAvailableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "minimumAvailableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "minimumAvailableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "maximumAvailableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "maximumAvailableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "maximumAvailableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "careerPathwayDescriptor": { + "type": "string", + "description": "Indicates the career cluster or pathway the course is associated with as part of a CTE curriculum." + }, + "competencyLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "competencyLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "competencyLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "maxCompletionsForCredit": { + "type": "integer", + "description": "Designates how many times the course may be taken with credit received by the student.", + "minimum": 1 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "courseCode", + "courseTitle", + "numberOfParts", + "identificationCodes", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Course", + "description": "This educational entity represents the organization of subject matter and related learning experiences provided for the instruction of students on a regular or systematic basis.", + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "courseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in a school or other institution or organization. In departmentalized classes at the elementary, secondary, and postsecondary levels (and for staff development activities), this refers to the name by which a course is identified (e.g., American History, English III). For elementary and other non-departmentalized classes, it refers to any portion of the instruction for which a grade or report is assigned (e.g., reading, composition, spelling, and language arts).", + "minLength": 1, + "maxLength": 60 + }, + "numberOfParts": { + "type": "integer", + "description": "The number of parts identified for a course.", + "minimum": 1, + "maximum": 8 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a course by a school, school system, state, or other agency or entity. For multi-part course codes, concatenate the parts separated by a \"/\". For example, consider the following SCED code- subject = 20 Math course = 272 Geometry level = G General credits = 1.00 course sequence 1 of 1- would be entered as 20/272/G/1.00/1 of 1.", + "minLength": 1, + "maxLength": 60 + }, + "courseIdentificationSystemDescriptor": { + "type": "string", + "description": "A system that is used to identify the organization of subject matter and related learning experiences provided for the instruction of students." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the Identification Code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "courseIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "levelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the course." + }, + "courseDescription": { + "type": "string", + "description": "A description of the content standards and goals covered in the course. Reference may be made to state or national content standards.", + "minLength": 1, + "maxLength": 1024 + }, + "timeRequiredForCompletion": { + "type": "integer", + "description": "The actual or estimated number of clock minutes required for class completion. This number is especially important for career and technical education classes and may represent (in minutes) the clock hour requirement of the class.", + "minimum": 1 + }, + "dateCourseAdopted": { + "type": "string", + "format": "date", + "description": "Date the course was adopted by the education agency." + }, + "highSchoolCourseRequirement": { + "type": "boolean", + "description": "An indication that this course may satisfy high school graduation requirements in the course's subject area." + }, + "courseGPAApplicabilityDescriptor": { + "type": "string", + "description": "An indicator of whether or not the course being described is included in the computation of the student's grade point average, and if so, if it is weighted differently from regular courses." + }, + "courseDefinedByDescriptor": { + "type": "string", + "description": "Specifies whether the course was defined by the SEA, LEA, School, or national organization." + }, + "minimumAvailableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "minimumAvailableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "minimumAvailableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "maximumAvailableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "maximumAvailableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "maximumAvailableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "careerPathwayDescriptor": { + "type": "string", + "description": "Indicates the career cluster or pathway the course is associated with as part of a CTE curriculum." + }, + "competencyLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "competencyLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "competencyLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "maxCompletionsForCredit": { + "type": "integer", + "description": "Designates how many times the course may be taken with credit received by the student.", + "minimum": 1 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CourseCode", + "EducationOrganization" + ], + "documentPathsMapping": { + "CourseCode": { + "paths": { + "courseCode": "$.courseCode" + }, + "pathOrder": [ + "courseCode" + ], + "isReference": false + }, + "CourseTitle": { + "paths": { + "courseTitle": "$.courseTitle" + }, + "pathOrder": [ + "courseTitle" + ], + "isReference": false + }, + "NumberOfParts": { + "paths": { + "numberOfParts": "$.numberOfParts" + }, + "pathOrder": [ + "numberOfParts" + ], + "isReference": false + }, + "CourseIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "CourseIdentificationCode.CourseIdentificationSystem": { + "paths": { + "courseIdentificationSystemDescriptor": "$.identificationCodes[*].courseIdentificationSystemDescriptor" + }, + "pathOrder": [ + "courseIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseIdentificationSystemDescriptor" + }, + "CourseIdentificationCode.AssigningOrganizationIdentificationCode": { + "paths": { + "assigningOrganizationIdentificationCode": "$.identificationCodes[*].assigningOrganizationIdentificationCode" + }, + "pathOrder": [ + "assigningOrganizationIdentificationCode" + ], + "isReference": false + }, + "CourseIdentificationCode.CourseCatalogURL": { + "paths": { + "courseCatalogURL": "$.identificationCodes[*].courseCatalogURL" + }, + "pathOrder": [ + "courseCatalogURL" + ], + "isReference": false + }, + "CourseLevelCharacteristic": { + "paths": { + "courseLevelCharacteristicDescriptor": "$.levelCharacteristics[*].courseLevelCharacteristicDescriptor" + }, + "pathOrder": [ + "courseLevelCharacteristicDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseLevelCharacteristicDescriptor" + }, + "OfferedGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.offeredGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "CourseDescription": { + "paths": { + "courseDescription": "$.courseDescription" + }, + "pathOrder": [ + "courseDescription" + ], + "isReference": false + }, + "TimeRequiredForCompletion": { + "paths": { + "timeRequiredForCompletion": "$.timeRequiredForCompletion" + }, + "pathOrder": [ + "timeRequiredForCompletion" + ], + "isReference": false + }, + "DateCourseAdopted": { + "paths": { + "dateCourseAdopted": "$.dateCourseAdopted" + }, + "pathOrder": [ + "dateCourseAdopted" + ], + "isReference": false + }, + "HighSchoolCourseRequirement": { + "paths": { + "highSchoolCourseRequirement": "$.highSchoolCourseRequirement" + }, + "pathOrder": [ + "highSchoolCourseRequirement" + ], + "isReference": false + }, + "CourseGPAApplicability": { + "paths": { + "courseGPAApplicabilityDescriptor": "$.courseGPAApplicabilityDescriptor" + }, + "pathOrder": [ + "courseGPAApplicabilityDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseGPAApplicabilityDescriptor" + }, + "CourseDefinedBy": { + "paths": { + "courseDefinedByDescriptor": "$.courseDefinedByDescriptor" + }, + "pathOrder": [ + "courseDefinedByDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseDefinedByDescriptor" + }, + "MinimumAvailableCredits.Credits": { + "paths": { + "minimumAvailableCredits": "$.minimumAvailableCredits" + }, + "pathOrder": [ + "minimumAvailableCredits" + ], + "isReference": false + }, + "MinimumAvailableCredits.CreditType": { + "paths": { + "minimumAvailableCreditTypeDescriptor": "$.minimumAvailableCreditTypeDescriptor" + }, + "pathOrder": [ + "minimumAvailableCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "MinimumAvailableCredits.CreditConversion": { + "paths": { + "minimumAvailableCreditConversions": "$.minimumAvailableCreditConversions" + }, + "pathOrder": [ + "minimumAvailableCreditConversions" + ], + "isReference": false + }, + "MaximumAvailableCredits.Credits": { + "paths": { + "maximumAvailableCredits": "$.maximumAvailableCredits" + }, + "pathOrder": [ + "maximumAvailableCredits" + ], + "isReference": false + }, + "MaximumAvailableCredits.CreditType": { + "paths": { + "maximumAvailableCreditTypeDescriptor": "$.maximumAvailableCreditTypeDescriptor" + }, + "pathOrder": [ + "maximumAvailableCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "MaximumAvailableCredits.CreditConversion": { + "paths": { + "maximumAvailableCreditConversions": "$.maximumAvailableCreditConversions" + }, + "pathOrder": [ + "maximumAvailableCreditConversions" + ], + "isReference": false + }, + "CareerPathway": { + "paths": { + "careerPathwayDescriptor": "$.careerPathwayDescriptor" + }, + "pathOrder": [ + "careerPathwayDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CareerPathwayDescriptor" + }, + "CompetencyLevel": { + "paths": { + "competencyLevelDescriptor": "$.competencyLevels[*].competencyLevelDescriptor" + }, + "pathOrder": [ + "competencyLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CompetencyLevelDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandards[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "MaxCompletionsForCredit": { + "paths": { + "maxCompletionsForCredit": "$.maxCompletionsForCredit" + }, + "pathOrder": [ + "maxCompletionsForCredit" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "courseCode", + "educationOrganizationId" + ], + "isSubclass": false + }, + "courseOfferings": { + "resourceName": "CourseOffering", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CourseOffering", + "description": "This entity represents an entry in the course catalog of available courses offered by the school during a session.", + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "localCourseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in the school, if different from the course title.", + "minLength": 1, + "maxLength": 60 + }, + "instructionalTimePlanned": { + "type": "integer", + "description": "The planned total number of clock minutes of instruction for this course offering. Generally, this should be at least as many minutes as is required for completion by the related state- or district-defined course.", + "minimum": 1 + }, + "curriculumUseds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "curriculumUsedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "curriculumUsedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "courseLevelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolReference", + "sessionReference", + "courseReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CourseOffering", + "description": "This entity represents an entry in the course catalog of available courses offered by the school during a session.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "localCourseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in the school, if different from the course title.", + "minLength": 1, + "maxLength": 60 + }, + "instructionalTimePlanned": { + "type": "integer", + "description": "The planned total number of clock minutes of instruction for this course offering. Generally, this should be at least as many minutes as is required for completion by the related state- or district-defined course.", + "minimum": 1 + }, + "curriculumUseds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "curriculumUsedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "curriculumUsedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "courseLevelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "localCourseCode", + "schoolReference", + "sessionReference", + "courseReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CourseOffering", + "description": "This entity represents an entry in the course catalog of available courses offered by the school during a session.", + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "localCourseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in the school, if different from the course title.", + "minLength": 1, + "maxLength": 60 + }, + "instructionalTimePlanned": { + "type": "integer", + "description": "The planned total number of clock minutes of instruction for this course offering. Generally, this should be at least as many minutes as is required for completion by the related state- or district-defined course.", + "minimum": 1 + }, + "curriculumUseds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "curriculumUsedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "curriculumUsedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "courseLevelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.schoolReference.schoolId", + "targetJsonPath": "$.sessionReference.schoolId" + } + ], + "identityFullnames": [ + "LocalCourseCode", + "School", + "Session" + ], + "documentPathsMapping": { + "LocalCourseCode": { + "paths": { + "localCourseCode": "$.localCourseCode" + }, + "pathOrder": [ + "localCourseCode" + ], + "isReference": false + }, + "LocalCourseTitle": { + "paths": { + "localCourseTitle": "$.localCourseTitle" + }, + "pathOrder": [ + "localCourseTitle" + ], + "isReference": false + }, + "InstructionalTimePlanned": { + "paths": { + "instructionalTimePlanned": "$.instructionalTimePlanned" + }, + "pathOrder": [ + "instructionalTimePlanned" + ], + "isReference": false + }, + "CurriculumUsed": { + "paths": { + "curriculumUsedDescriptor": "$.curriculumUseds[*].curriculumUsedDescriptor" + }, + "pathOrder": [ + "curriculumUsedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CurriculumUsedDescriptor" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "Session": { + "paths": { + "schoolId": "$.sessionReference.schoolId", + "schoolYear": "$.sessionReference.schoolYear", + "sessionName": "$.sessionReference.sessionName" + }, + "pathOrder": [ + "schoolId", + "schoolYear", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Session" + }, + "Course": { + "paths": { + "courseCode": "$.courseReference.courseCode", + "educationOrganizationId": "$.courseReference.educationOrganizationId" + }, + "pathOrder": [ + "courseCode", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Course" + }, + "CourseLevelCharacteristic": { + "paths": { + "courseLevelCharacteristicDescriptor": "$.courseLevelCharacteristics[*].courseLevelCharacteristicDescriptor" + }, + "pathOrder": [ + "courseLevelCharacteristicDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseLevelCharacteristicDescriptor" + }, + "OfferedGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.offeredGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + } + }, + "identityPathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName" + ], + "isSubclass": false + }, + "courseTranscripts": { + "resourceName": "CourseTranscript", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CourseTranscript", + "description": "This entity is the final record of a student's performance in their courses at the end of a semester or school year.", + "type": "object", + "properties": { + "courseAttemptResultDescriptor": { + "type": "string", + "description": "The result from the student's attempt to take the course." + }, + "attemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "attemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "attemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "earnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "earnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "earnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "earnedAdditionalCredits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course" + }, + "additionalCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + } + }, + "additionalProperties": false, + "required": [ + "credits", + "additionalCreditTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "whenTakenGradeLevelDescriptor": { + "type": "string", + "description": "Student's grade level at time of course." + }, + "methodCreditEarnedDescriptor": { + "type": "string", + "description": "The method the credits were earned." + }, + "finalLetterGradeEarned": { + "type": "string", + "description": "The final indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "finalNumericGradeEarned": { + "type": "number", + "description": "The final indicator of student performance in a class as submitted by the instructor." + }, + "courseRepeatCodeDescriptor": { + "type": "string", + "description": "Indicates that an academic course has been repeated by a student and how that repeat is to be computed in the student's academic grade average." + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "studentAcademicRecordReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "termDescriptor": { + "type": "string", + "description": "The term for the session during the school year." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "schoolYear", + "studentUniqueId", + "termDescriptor" + ] + }, + "courseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in a school or other institution or organization. In departmentalized classes at the elementary, secondary, and postsecondary levels (and for staff development activities), this refers to the name by which a course is identified (e.g., American History, English III). For elementary and other non-departmentalized classes, it refers to any portion of the instruction for which a grade or report is assigned (e.g., reading, composition, spelling, language arts).", + "minLength": 1, + "maxLength": 60 + }, + "alternativeCourseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in the school, if different from the CourseTitle.", + "minLength": 1, + "maxLength": 60 + }, + "externalEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "externalEducationOrganizationNameOfInstitution": { + "type": "string", + "description": "Name of the external institution where the student completed the course; to be used only when the reference external education organization is not available.", + "minLength": 1, + "maxLength": 75 + }, + "alternativeCourseIdentificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a course by a school, school system, state, or other agency or entity. For multi-part course codes, concatenate the parts separated by a \"/\". For example, consider the following SCED code- subject = 20 Math course = 272 Geometry level = G General credits = 1.00 course sequence 1 of 1- would be entered as 20/272/G/1.00/1 of 1.", + "minLength": 1, + "maxLength": 60 + }, + "courseIdentificationSystemDescriptor": { + "type": "string", + "description": "A system that is used to identify the organization of subject matter and related learning experiences provided for the instruction of students." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the Identification Code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "courseIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the course identification code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + }, + "creditCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "creditCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "creditCategoryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "partialCourseTranscriptAwards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "awardDate": { + "type": "string", + "format": "date", + "description": "The date the partial credits and/or grades were awarded or earned." + }, + "earnedCredits": { + "type": "number", + "description": "The number of credits a student earned for completing a given course." + }, + "methodCreditEarnedDescriptor": { + "type": "string", + "description": "The method the credits were earned." + }, + "letterGradeEarned": { + "type": "string", + "description": "The indicator of student performance as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "string", + "description": "The indicator of student performance as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + } + }, + "additionalProperties": false, + "required": [ + "awardDate", + "earnedCredits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "courseAttemptResultDescriptor", + "courseReference", + "studentAcademicRecordReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CourseTranscript", + "description": "This entity is the final record of a student's performance in their courses at the end of a semester or school year.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "courseAttemptResultDescriptor": { + "type": "string", + "description": "The result from the student's attempt to take the course." + }, + "attemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "attemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "attemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "earnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "earnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "earnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "earnedAdditionalCredits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course" + }, + "additionalCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + } + }, + "additionalProperties": false, + "required": [ + "credits", + "additionalCreditTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "whenTakenGradeLevelDescriptor": { + "type": "string", + "description": "Student's grade level at time of course." + }, + "methodCreditEarnedDescriptor": { + "type": "string", + "description": "The method the credits were earned." + }, + "finalLetterGradeEarned": { + "type": "string", + "description": "The final indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "finalNumericGradeEarned": { + "type": "number", + "description": "The final indicator of student performance in a class as submitted by the instructor." + }, + "courseRepeatCodeDescriptor": { + "type": "string", + "description": "Indicates that an academic course has been repeated by a student and how that repeat is to be computed in the student's academic grade average." + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "studentAcademicRecordReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "termDescriptor": { + "type": "string", + "description": "The term for the session during the school year." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "schoolYear", + "studentUniqueId", + "termDescriptor" + ] + }, + "courseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in a school or other institution or organization. In departmentalized classes at the elementary, secondary, and postsecondary levels (and for staff development activities), this refers to the name by which a course is identified (e.g., American History, English III). For elementary and other non-departmentalized classes, it refers to any portion of the instruction for which a grade or report is assigned (e.g., reading, composition, spelling, language arts).", + "minLength": 1, + "maxLength": 60 + }, + "alternativeCourseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in the school, if different from the CourseTitle.", + "minLength": 1, + "maxLength": 60 + }, + "externalEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "externalEducationOrganizationNameOfInstitution": { + "type": "string", + "description": "Name of the external institution where the student completed the course; to be used only when the reference external education organization is not available.", + "minLength": 1, + "maxLength": 75 + }, + "alternativeCourseIdentificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a course by a school, school system, state, or other agency or entity. For multi-part course codes, concatenate the parts separated by a \"/\". For example, consider the following SCED code- subject = 20 Math course = 272 Geometry level = G General credits = 1.00 course sequence 1 of 1- would be entered as 20/272/G/1.00/1 of 1.", + "minLength": 1, + "maxLength": 60 + }, + "courseIdentificationSystemDescriptor": { + "type": "string", + "description": "A system that is used to identify the organization of subject matter and related learning experiences provided for the instruction of students." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the Identification Code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "courseIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the course identification code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + }, + "creditCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "creditCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "creditCategoryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "partialCourseTranscriptAwards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "awardDate": { + "type": "string", + "format": "date", + "description": "The date the partial credits and/or grades were awarded or earned." + }, + "earnedCredits": { + "type": "number", + "description": "The number of credits a student earned for completing a given course." + }, + "methodCreditEarnedDescriptor": { + "type": "string", + "description": "The method the credits were earned." + }, + "letterGradeEarned": { + "type": "string", + "description": "The indicator of student performance as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "string", + "description": "The indicator of student performance as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + } + }, + "additionalProperties": false, + "required": [ + "awardDate", + "earnedCredits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "courseAttemptResultDescriptor", + "courseReference", + "studentAcademicRecordReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CourseTranscript", + "description": "This entity is the final record of a student's performance in their courses at the end of a semester or school year.", + "type": "object", + "properties": { + "courseAttemptResultDescriptor": { + "type": "string", + "description": "The result from the student's attempt to take the course." + }, + "attemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "attemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "attemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "earnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "earnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "earnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "earnedAdditionalCredits": { + "type": "array", + "items": { + "type": "object", + "properties": { + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course" + }, + "additionalCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + } + }, + "additionalProperties": false, + "required": [ + "credits", + "additionalCreditTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "whenTakenGradeLevelDescriptor": { + "type": "string", + "description": "Student's grade level at time of course." + }, + "methodCreditEarnedDescriptor": { + "type": "string", + "description": "The method the credits were earned." + }, + "finalLetterGradeEarned": { + "type": "string", + "description": "The final indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "finalNumericGradeEarned": { + "type": "number", + "description": "The final indicator of student performance in a class as submitted by the instructor." + }, + "courseRepeatCodeDescriptor": { + "type": "string", + "description": "Indicates that an academic course has been repeated by a student and how that repeat is to be computed in the student's academic grade average." + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "studentAcademicRecordReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "termDescriptor": { + "type": "string", + "description": "The term for the session during the school year." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "schoolYear", + "studentUniqueId", + "termDescriptor" + ] + }, + "courseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in a school or other institution or organization. In departmentalized classes at the elementary, secondary, and postsecondary levels (and for staff development activities), this refers to the name by which a course is identified (e.g., American History, English III). For elementary and other non-departmentalized classes, it refers to any portion of the instruction for which a grade or report is assigned (e.g., reading, composition, spelling, language arts).", + "minLength": 1, + "maxLength": 60 + }, + "alternativeCourseTitle": { + "type": "string", + "description": "The descriptive name given to a course of study offered in the school, if different from the CourseTitle.", + "minLength": 1, + "maxLength": 60 + }, + "externalEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "externalEducationOrganizationNameOfInstitution": { + "type": "string", + "description": "Name of the external institution where the student completed the course; to be used only when the reference external education organization is not available.", + "minLength": 1, + "maxLength": 75 + }, + "alternativeCourseIdentificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a course by a school, school system, state, or other agency or entity. For multi-part course codes, concatenate the parts separated by a \"/\". For example, consider the following SCED code- subject = 20 Math course = 272 Geometry level = G General credits = 1.00 course sequence 1 of 1- would be entered as 20/272/G/1.00/1 of 1.", + "minLength": 1, + "maxLength": 60 + }, + "courseIdentificationSystemDescriptor": { + "type": "string", + "description": "A system that is used to identify the organization of subject matter and related learning experiences provided for the instruction of students." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the Identification Code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "courseIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the course identification code.", + "minLength": 1, + "maxLength": 60 + }, + "courseCatalogURL": { + "type": "string", + "description": "The URL for the course catalog that defines the course identification code.", + "minLength": 5, + "maxLength": 255 + }, + "creditCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "creditCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "creditCategoryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "partialCourseTranscriptAwards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "awardDate": { + "type": "string", + "format": "date", + "description": "The date the partial credits and/or grades were awarded or earned." + }, + "earnedCredits": { + "type": "number", + "description": "The number of credits a student earned for completing a given course." + }, + "methodCreditEarnedDescriptor": { + "type": "string", + "description": "The method the credits were earned." + }, + "letterGradeEarned": { + "type": "string", + "description": "The indicator of student performance as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "string", + "description": "The indicator of student performance as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + } + }, + "additionalProperties": false, + "required": [ + "awardDate", + "earnedCredits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CourseAttemptResult", + "Course", + "StudentAcademicRecord" + ], + "documentPathsMapping": { + "CourseAttemptResult": { + "paths": { + "courseAttemptResultDescriptor": "$.courseAttemptResultDescriptor" + }, + "pathOrder": [ + "courseAttemptResultDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseAttemptResultDescriptor" + }, + "AttemptedCredits.Credits": { + "paths": { + "attemptedCredits": "$.attemptedCredits" + }, + "pathOrder": [ + "attemptedCredits" + ], + "isReference": false + }, + "AttemptedCredits.CreditType": { + "paths": { + "attemptedCreditTypeDescriptor": "$.attemptedCreditTypeDescriptor" + }, + "pathOrder": [ + "attemptedCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "AttemptedCredits.CreditConversion": { + "paths": { + "attemptedCreditConversions": "$.attemptedCreditConversions" + }, + "pathOrder": [ + "attemptedCreditConversions" + ], + "isReference": false + }, + "EarnedCredits.Credits": { + "paths": { + "earnedCredits": "$.earnedCredits" + }, + "pathOrder": [ + "earnedCredits" + ], + "isReference": false + }, + "EarnedCredits.CreditType": { + "paths": { + "earnedCreditTypeDescriptor": "$.earnedCreditTypeDescriptor" + }, + "pathOrder": [ + "earnedCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "EarnedCredits.CreditConversion": { + "paths": { + "earnedCreditConversions": "$.earnedCreditConversions" + }, + "pathOrder": [ + "earnedCreditConversions" + ], + "isReference": false + }, + "EarnedAdditionalCredits.Credits": { + "paths": { + "credits": "$.earnedAdditionalCredits[*].credits" + }, + "pathOrder": [ + "credits" + ], + "isReference": false + }, + "EarnedAdditionalCredits.AdditionalCreditType": { + "paths": { + "additionalCreditTypeDescriptor": "$.earnedAdditionalCredits[*].additionalCreditTypeDescriptor" + }, + "pathOrder": [ + "additionalCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AdditionalCreditTypeDescriptor" + }, + "WhenTakenGradeLevel": { + "paths": { + "whenTakenGradeLevelDescriptor": "$.whenTakenGradeLevelDescriptor" + }, + "pathOrder": [ + "whenTakenGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "MethodCreditEarned": { + "paths": { + "methodCreditEarnedDescriptor": "$.methodCreditEarnedDescriptor" + }, + "pathOrder": [ + "methodCreditEarnedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MethodCreditEarnedDescriptor" + }, + "FinalLetterGradeEarned": { + "paths": { + "finalLetterGradeEarned": "$.finalLetterGradeEarned" + }, + "pathOrder": [ + "finalLetterGradeEarned" + ], + "isReference": false + }, + "FinalNumericGradeEarned": { + "paths": { + "finalNumericGradeEarned": "$.finalNumericGradeEarned" + }, + "pathOrder": [ + "finalNumericGradeEarned" + ], + "isReference": false + }, + "CourseRepeatCode": { + "paths": { + "courseRepeatCodeDescriptor": "$.courseRepeatCodeDescriptor" + }, + "pathOrder": [ + "courseRepeatCodeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseRepeatCodeDescriptor" + }, + "Course": { + "paths": { + "courseCode": "$.courseReference.courseCode", + "educationOrganizationId": "$.courseReference.educationOrganizationId" + }, + "pathOrder": [ + "courseCode", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Course" + }, + "StudentAcademicRecord": { + "paths": { + "educationOrganizationId": "$.studentAcademicRecordReference.educationOrganizationId", + "schoolYear": "$.studentAcademicRecordReference.schoolYear", + "studentUniqueId": "$.studentAcademicRecordReference.studentUniqueId", + "termDescriptor": "$.studentAcademicRecordReference.termDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "schoolYear", + "studentUniqueId", + "termDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StudentAcademicRecord" + }, + "CourseTitle": { + "paths": { + "courseTitle": "$.courseTitle" + }, + "pathOrder": [ + "courseTitle" + ], + "isReference": false + }, + "AlternativeCourseTitle": { + "paths": { + "alternativeCourseTitle": "$.alternativeCourseTitle" + }, + "pathOrder": [ + "alternativeCourseTitle" + ], + "isReference": false + }, + "ExternalEducationOrganization": { + "paths": { + "educationOrganizationId": "$.externalEducationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ExternalEducationOrganizationNameOfInstitution": { + "paths": { + "externalEducationOrganizationNameOfInstitution": "$.externalEducationOrganizationNameOfInstitution" + }, + "pathOrder": [ + "externalEducationOrganizationNameOfInstitution" + ], + "isReference": false + }, + "AlternativeCourseIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.alternativeCourseIdentificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "AlternativeCourseIdentificationCode.CourseIdentificationSystem": { + "paths": { + "courseIdentificationSystemDescriptor": "$.alternativeCourseIdentificationCodes[*].courseIdentificationSystemDescriptor" + }, + "pathOrder": [ + "courseIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseIdentificationSystemDescriptor" + }, + "AlternativeCourseIdentificationCode.AssigningOrganizationIdentificationCode": { + "paths": { + "assigningOrganizationIdentificationCode": "$.alternativeCourseIdentificationCodes[*].assigningOrganizationIdentificationCode" + }, + "pathOrder": [ + "assigningOrganizationIdentificationCode" + ], + "isReference": false + }, + "AlternativeCourseIdentificationCode.CourseCatalogURL": { + "paths": { + "courseCatalogURL": "$.alternativeCourseIdentificationCodes[*].courseCatalogURL" + }, + "pathOrder": [ + "courseCatalogURL" + ], + "isReference": false + }, + "AssigningOrganizationIdentificationCode": { + "paths": { + "assigningOrganizationIdentificationCode": "$.assigningOrganizationIdentificationCode" + }, + "pathOrder": [ + "assigningOrganizationIdentificationCode" + ], + "isReference": false + }, + "CourseCatalogURL": { + "paths": { + "courseCatalogURL": "$.courseCatalogURL" + }, + "pathOrder": [ + "courseCatalogURL" + ], + "isReference": false + }, + "CreditCategory": { + "paths": { + "creditCategoryDescriptor": "$.creditCategories[*].creditCategoryDescriptor" + }, + "pathOrder": [ + "creditCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditCategoryDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "PartialCourseTranscriptAwards.AwardDate": { + "paths": { + "awardDate": "$.partialCourseTranscriptAwards[*].awardDate" + }, + "pathOrder": [ + "awardDate" + ], + "isReference": false + }, + "PartialCourseTranscriptAwards.EarnedCredits": { + "paths": { + "earnedCredits": "$.partialCourseTranscriptAwards[*].earnedCredits" + }, + "pathOrder": [ + "earnedCredits" + ], + "isReference": false + }, + "PartialCourseTranscriptAwards.MethodCreditEarned": { + "paths": { + "methodCreditEarnedDescriptor": "$.partialCourseTranscriptAwards[*].methodCreditEarnedDescriptor" + }, + "pathOrder": [ + "methodCreditEarnedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MethodCreditEarnedDescriptor" + }, + "PartialCourseTranscriptAwards.LetterGradeEarned": { + "paths": { + "letterGradeEarned": "$.partialCourseTranscriptAwards[*].letterGradeEarned" + }, + "pathOrder": [ + "letterGradeEarned" + ], + "isReference": false + }, + "PartialCourseTranscriptAwards.NumericGradeEarned": { + "paths": { + "numericGradeEarned": "$.partialCourseTranscriptAwards[*].numericGradeEarned" + }, + "pathOrder": [ + "numericGradeEarned" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "courseAttemptResultDescriptor", + "courseCode", + "educationOrganizationId", + "schoolYear", + "studentUniqueId", + "termDescriptor" + ], + "isSubclass": false + }, + "credentials": { + "resourceName": "Credential", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Credential", + "description": "The legal document giving authorization to perform teaching assignment services.", + "type": "object", + "properties": { + "effectiveDate": { + "type": "string", + "format": "date", + "description": "The year, month and day on which an active credential held by an individual was issued." + }, + "endorsements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "endorsement": { + "type": "string", + "description": "Endorsements are attachments to teaching certificates and indicate areas of specialization.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "endorsement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "expirationDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active credential held by an individual will expire." + }, + "credentialFieldDescriptor": { + "type": "string", + "description": "The field of certification for the certificate (e.g., Mathematics, Music)." + }, + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "issuanceDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active credential was issued to an individual." + }, + "credentialTypeDescriptor": { + "type": "string", + "description": "An indication of the category of credential an individual holds." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + }, + "teachingCredentialDescriptor": { + "type": "string", + "description": "An indication of the category of a legal document giving authorization to perform teaching assignment services." + }, + "teachingCredentialBasisDescriptor": { + "type": "string", + "description": "An indication of the pre-determined criteria for granting the teaching credential that an individual holds." + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "namespace": { + "type": "string", + "description": "Namespace for the credential.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "issuanceDate", + "credentialTypeDescriptor", + "stateOfIssueStateAbbreviationDescriptor", + "namespace" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Credential", + "description": "The legal document giving authorization to perform teaching assignment services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "effectiveDate": { + "type": "string", + "format": "date", + "description": "The year, month and day on which an active credential held by an individual was issued." + }, + "endorsements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "endorsement": { + "type": "string", + "description": "Endorsements are attachments to teaching certificates and indicate areas of specialization.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "endorsement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "expirationDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active credential held by an individual will expire." + }, + "credentialFieldDescriptor": { + "type": "string", + "description": "The field of certification for the certificate (e.g., Mathematics, Music)." + }, + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "issuanceDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active credential was issued to an individual." + }, + "credentialTypeDescriptor": { + "type": "string", + "description": "An indication of the category of credential an individual holds." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + }, + "teachingCredentialDescriptor": { + "type": "string", + "description": "An indication of the category of a legal document giving authorization to perform teaching assignment services." + }, + "teachingCredentialBasisDescriptor": { + "type": "string", + "description": "An indication of the pre-determined criteria for granting the teaching credential that an individual holds." + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "namespace": { + "type": "string", + "description": "Namespace for the credential.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "credentialIdentifier", + "issuanceDate", + "credentialTypeDescriptor", + "stateOfIssueStateAbbreviationDescriptor", + "namespace" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Credential", + "description": "The legal document giving authorization to perform teaching assignment services.", + "type": "object", + "properties": { + "effectiveDate": { + "type": "string", + "format": "date", + "description": "The year, month and day on which an active credential held by an individual was issued." + }, + "endorsements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "endorsement": { + "type": "string", + "description": "Endorsements are attachments to teaching certificates and indicate areas of specialization.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "endorsement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "expirationDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active credential held by an individual will expire." + }, + "credentialFieldDescriptor": { + "type": "string", + "description": "The field of certification for the certificate (e.g., Mathematics, Music)." + }, + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "issuanceDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an active credential was issued to an individual." + }, + "credentialTypeDescriptor": { + "type": "string", + "description": "An indication of the category of credential an individual holds." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + }, + "teachingCredentialDescriptor": { + "type": "string", + "description": "An indication of the category of a legal document giving authorization to perform teaching assignment services." + }, + "teachingCredentialBasisDescriptor": { + "type": "string", + "description": "An indication of the pre-determined criteria for granting the teaching credential that an individual holds." + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "namespace": { + "type": "string", + "description": "Namespace for the credential.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CredentialIdentifier", + "StateOfIssueStateAbbreviation" + ], + "documentPathsMapping": { + "EffectiveDate": { + "paths": { + "effectiveDate": "$.effectiveDate" + }, + "pathOrder": [ + "effectiveDate" + ], + "isReference": false + }, + "CredentialEndorsement": { + "paths": { + "endorsement": "$.endorsements[*].endorsement" + }, + "pathOrder": [ + "endorsement" + ], + "isReference": false + }, + "ExpirationDate": { + "paths": { + "expirationDate": "$.expirationDate" + }, + "pathOrder": [ + "expirationDate" + ], + "isReference": false + }, + "CredentialField": { + "paths": { + "credentialFieldDescriptor": "$.credentialFieldDescriptor" + }, + "pathOrder": [ + "credentialFieldDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CredentialFieldDescriptor" + }, + "CredentialIdentifier": { + "paths": { + "credentialIdentifier": "$.credentialIdentifier" + }, + "pathOrder": [ + "credentialIdentifier" + ], + "isReference": false + }, + "IssuanceDate": { + "paths": { + "issuanceDate": "$.issuanceDate" + }, + "pathOrder": [ + "issuanceDate" + ], + "isReference": false + }, + "CredentialType": { + "paths": { + "credentialTypeDescriptor": "$.credentialTypeDescriptor" + }, + "pathOrder": [ + "credentialTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CredentialTypeDescriptor" + }, + "GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.gradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "StateOfIssueStateAbbreviation": { + "paths": { + "stateOfIssueStateAbbreviationDescriptor": "$.stateOfIssueStateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateOfIssueStateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "TeachingCredential": { + "paths": { + "teachingCredentialDescriptor": "$.teachingCredentialDescriptor" + }, + "pathOrder": [ + "teachingCredentialDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TeachingCredentialDescriptor" + }, + "TeachingCredentialBasis": { + "paths": { + "teachingCredentialBasisDescriptor": "$.teachingCredentialBasisDescriptor" + }, + "pathOrder": [ + "teachingCredentialBasisDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TeachingCredentialBasisDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ], + "isSubclass": false + }, + "descriptorMappings": { + "resourceName": "DescriptorMapping", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DescriptorMapping", + "description": "A mapping of a descriptor value in one namespace to a descriptor value in another namespace. This can be used to exchange known contextual mappings of enumeration values.", + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The descriptor value that is being mapped to another value.", + "minLength": 1, + "maxLength": 50 + }, + "namespace": { + "type": "string", + "description": "The namespace of the descriptor value that is being mapped to another value.", + "minLength": 5, + "maxLength": 255 + }, + "mappedValue": { + "type": "string", + "description": "The descriptor value to which the from descriptor value is being mapped to.", + "minLength": 1, + "maxLength": 50 + }, + "mappedNamespace": { + "type": "string", + "description": "The namespace of the descriptor value to which the from descriptor value is mapped to.", + "minLength": 5, + "maxLength": 255 + }, + "modelEntities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "modelEntityDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "modelEntityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "value", + "namespace", + "mappedValue", + "mappedNamespace" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DescriptorMapping", + "description": "A mapping of a descriptor value in one namespace to a descriptor value in another namespace. This can be used to exchange known contextual mappings of enumeration values.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "value": { + "type": "string", + "description": "The descriptor value that is being mapped to another value.", + "minLength": 1, + "maxLength": 50 + }, + "namespace": { + "type": "string", + "description": "The namespace of the descriptor value that is being mapped to another value.", + "minLength": 5, + "maxLength": 255 + }, + "mappedValue": { + "type": "string", + "description": "The descriptor value to which the from descriptor value is being mapped to.", + "minLength": 1, + "maxLength": 50 + }, + "mappedNamespace": { + "type": "string", + "description": "The namespace of the descriptor value to which the from descriptor value is mapped to.", + "minLength": 5, + "maxLength": 255 + }, + "modelEntities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "modelEntityDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "modelEntityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "value", + "namespace", + "mappedValue", + "mappedNamespace" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DescriptorMapping", + "description": "A mapping of a descriptor value in one namespace to a descriptor value in another namespace. This can be used to exchange known contextual mappings of enumeration values.", + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The descriptor value that is being mapped to another value.", + "minLength": 1, + "maxLength": 50 + }, + "namespace": { + "type": "string", + "description": "The namespace of the descriptor value that is being mapped to another value.", + "minLength": 5, + "maxLength": 255 + }, + "mappedValue": { + "type": "string", + "description": "The descriptor value to which the from descriptor value is being mapped to.", + "minLength": 1, + "maxLength": 50 + }, + "mappedNamespace": { + "type": "string", + "description": "The namespace of the descriptor value to which the from descriptor value is mapped to.", + "minLength": 5, + "maxLength": 255 + }, + "modelEntities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "modelEntityDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "modelEntityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Value", + "Namespace", + "MappedValue", + "MappedNamespace" + ], + "documentPathsMapping": { + "Value": { + "paths": { + "value": "$.value" + }, + "pathOrder": [ + "value" + ], + "isReference": false + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + }, + "MappedValue": { + "paths": { + "mappedValue": "$.mappedValue" + }, + "pathOrder": [ + "mappedValue" + ], + "isReference": false + }, + "MappedNamespace": { + "paths": { + "mappedNamespace": "$.mappedNamespace" + }, + "pathOrder": [ + "mappedNamespace" + ], + "isReference": false + }, + "ModelEntity": { + "paths": { + "modelEntityDescriptor": "$.modelEntities[*].modelEntityDescriptor" + }, + "pathOrder": [ + "modelEntityDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ModelEntityDescriptor" + } + }, + "identityPathOrder": [ + "mappedNamespace", + "mappedValue", + "namespace", + "value" + ], + "isSubclass": false + }, + "disciplineActions": { + "resourceName": "DisciplineAction", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DisciplineAction", + "description": "This event entity represents actions taken by an education organization after a disruptive event that is recorded as a discipline incident.", + "type": "object", + "properties": { + "disciplineActionIdentifier": { + "type": "string", + "description": "Identifier assigned by the education organization to the discipline action.", + "minLength": 1, + "maxLength": 36 + }, + "disciplines": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "disciplineDate": { + "type": "string", + "format": "date", + "description": "The date of the discipline action." + }, + "disciplineActionLength": { + "type": "number", + "description": "The length of time in school days for the discipline action (e.g. removal, detention), if applicable." + }, + "actualDisciplineActionLength": { + "type": "number", + "description": "Indicates the actual length in school days of a student's disciplinary assignment." + }, + "disciplineActionLengthDifferenceReasonDescriptor": { + "type": "string", + "description": "Indicates the reason for the difference, if any, between the official and actual lengths of a student's disciplinary assignment." + }, + "relatedToZeroTolerancePolicy": { + "type": "boolean", + "description": "An indication of whether or not this disciplinary action taken against a student was imposed as a consequence of state or local zero tolerance policies." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "staffs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "responsibilitySchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "assignmentSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "iepPlacementMeetingIndicator": { + "type": "boolean", + "description": "An indication as to whether an offense and/or disciplinary action resulted in a meeting of a student's Individualized Education Program (IEP) team to determine appropriate placement." + }, + "studentDisciplineIncidentBehaviorAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentDisciplineIncidentBehaviorAssociationReference": { + "type": "object", + "properties": { + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category." + }, + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "behaviorDescriptor", + "incidentIdentifier", + "schoolId", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "studentDisciplineIncidentBehaviorAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "disciplineActionIdentifier", + "disciplines", + "disciplineDate", + "studentReference", + "responsibilitySchoolReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DisciplineAction", + "description": "This event entity represents actions taken by an education organization after a disruptive event that is recorded as a discipline incident.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "disciplineActionIdentifier": { + "type": "string", + "description": "Identifier assigned by the education organization to the discipline action.", + "minLength": 1, + "maxLength": 36 + }, + "disciplines": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "disciplineDate": { + "type": "string", + "format": "date", + "description": "The date of the discipline action." + }, + "disciplineActionLength": { + "type": "number", + "description": "The length of time in school days for the discipline action (e.g. removal, detention), if applicable." + }, + "actualDisciplineActionLength": { + "type": "number", + "description": "Indicates the actual length in school days of a student's disciplinary assignment." + }, + "disciplineActionLengthDifferenceReasonDescriptor": { + "type": "string", + "description": "Indicates the reason for the difference, if any, between the official and actual lengths of a student's disciplinary assignment." + }, + "relatedToZeroTolerancePolicy": { + "type": "boolean", + "description": "An indication of whether or not this disciplinary action taken against a student was imposed as a consequence of state or local zero tolerance policies." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "staffs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "responsibilitySchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "assignmentSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "iepPlacementMeetingIndicator": { + "type": "boolean", + "description": "An indication as to whether an offense and/or disciplinary action resulted in a meeting of a student's Individualized Education Program (IEP) team to determine appropriate placement." + }, + "studentDisciplineIncidentBehaviorAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentDisciplineIncidentBehaviorAssociationReference": { + "type": "object", + "properties": { + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category." + }, + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "behaviorDescriptor", + "incidentIdentifier", + "schoolId", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "studentDisciplineIncidentBehaviorAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "disciplineActionIdentifier", + "disciplines", + "disciplineDate", + "studentReference", + "responsibilitySchoolReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DisciplineAction", + "description": "This event entity represents actions taken by an education organization after a disruptive event that is recorded as a discipline incident.", + "type": "object", + "properties": { + "disciplineActionIdentifier": { + "type": "string", + "description": "Identifier assigned by the education organization to the discipline action.", + "minLength": 1, + "maxLength": 36 + }, + "disciplines": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "disciplineDate": { + "type": "string", + "format": "date", + "description": "The date of the discipline action." + }, + "disciplineActionLength": { + "type": "number", + "description": "The length of time in school days for the discipline action (e.g. removal, detention), if applicable." + }, + "actualDisciplineActionLength": { + "type": "number", + "description": "Indicates the actual length in school days of a student's disciplinary assignment." + }, + "disciplineActionLengthDifferenceReasonDescriptor": { + "type": "string", + "description": "Indicates the reason for the difference, if any, between the official and actual lengths of a student's disciplinary assignment." + }, + "relatedToZeroTolerancePolicy": { + "type": "boolean", + "description": "An indication of whether or not this disciplinary action taken against a student was imposed as a consequence of state or local zero tolerance policies." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "staffs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "responsibilitySchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "assignmentSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "iepPlacementMeetingIndicator": { + "type": "boolean", + "description": "An indication as to whether an offense and/or disciplinary action resulted in a meeting of a student's Individualized Education Program (IEP) team to determine appropriate placement." + }, + "studentDisciplineIncidentBehaviorAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentDisciplineIncidentBehaviorAssociationReference": { + "type": "object", + "properties": { + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category." + }, + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "behaviorDescriptor", + "incidentIdentifier", + "schoolId", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "studentDisciplineIncidentBehaviorAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.studentDisciplineIncidentBehaviorAssociations[*].studentDisciplineIncidentBehaviorAssociationReference.studentUniqueId", + "targetJsonPath": "$.studentReference.studentUniqueId" + } + ], + "identityFullnames": [ + "DisciplineActionIdentifier", + "DisciplineDate", + "Student" + ], + "documentPathsMapping": { + "DisciplineActionIdentifier": { + "paths": { + "disciplineActionIdentifier": "$.disciplineActionIdentifier" + }, + "pathOrder": [ + "disciplineActionIdentifier" + ], + "isReference": false + }, + "Discipline": { + "paths": { + "disciplineDescriptor": "$.disciplines[*].disciplineDescriptor" + }, + "pathOrder": [ + "disciplineDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisciplineDescriptor" + }, + "DisciplineDate": { + "paths": { + "disciplineDate": "$.disciplineDate" + }, + "pathOrder": [ + "disciplineDate" + ], + "isReference": false + }, + "DisciplineActionLength": { + "paths": { + "disciplineActionLength": "$.disciplineActionLength" + }, + "pathOrder": [ + "disciplineActionLength" + ], + "isReference": false + }, + "ActualDisciplineActionLength": { + "paths": { + "actualDisciplineActionLength": "$.actualDisciplineActionLength" + }, + "pathOrder": [ + "actualDisciplineActionLength" + ], + "isReference": false + }, + "DisciplineActionLengthDifferenceReason": { + "paths": { + "disciplineActionLengthDifferenceReasonDescriptor": "$.disciplineActionLengthDifferenceReasonDescriptor" + }, + "pathOrder": [ + "disciplineActionLengthDifferenceReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisciplineActionLengthDifferenceReasonDescriptor" + }, + "RelatedToZeroTolerancePolicy": { + "paths": { + "relatedToZeroTolerancePolicy": "$.relatedToZeroTolerancePolicy" + }, + "pathOrder": [ + "relatedToZeroTolerancePolicy" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffs[*].staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "ResponsibilitySchool": { + "paths": { + "schoolId": "$.responsibilitySchoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "AssignmentSchool": { + "paths": { + "schoolId": "$.assignmentSchoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "IEPPlacementMeetingIndicator": { + "paths": { + "iepPlacementMeetingIndicator": "$.iepPlacementMeetingIndicator" + }, + "pathOrder": [ + "iepPlacementMeetingIndicator" + ], + "isReference": false + }, + "StudentDisciplineIncidentBehaviorAssociation": { + "paths": { + "behaviorDescriptor": "$.studentDisciplineIncidentBehaviorAssociations[*].studentDisciplineIncidentBehaviorAssociationReference.behaviorDescriptor", + "incidentIdentifier": "$.studentDisciplineIncidentBehaviorAssociations[*].studentDisciplineIncidentBehaviorAssociationReference.incidentIdentifier", + "schoolId": "$.studentDisciplineIncidentBehaviorAssociations[*].studentDisciplineIncidentBehaviorAssociationReference.schoolId", + "studentUniqueId": "$.studentDisciplineIncidentBehaviorAssociations[*].studentDisciplineIncidentBehaviorAssociationReference.studentUniqueId" + }, + "pathOrder": [ + "behaviorDescriptor", + "incidentIdentifier", + "schoolId", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StudentDisciplineIncidentBehaviorAssociation" + } + }, + "identityPathOrder": [ + "disciplineActionIdentifier", + "disciplineDate", + "studentUniqueId" + ], + "isSubclass": false + }, + "disciplineIncidents": { + "resourceName": "DisciplineIncident", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DisciplineIncident", + "description": "This event entity represents an occurrence of an infraction ranging from a minor behavioral problem that disrupts the orderly functioning of a school or classroom (such as tardiness) to a criminal act that results in the involvement of a law enforcement official (such as robbery). A single event (e.g., a fight) is one incident regardless of how many perpetrators or victims are involved. Discipline incidents are events classified as warranting discipline action.", + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "incidentDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the discipline incident occurred." + }, + "incidentTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the incident took place." + }, + "incidentLocationDescriptor": { + "type": "string", + "description": "Identifies where the discipline incident occurred and whether or not it occurred on school." + }, + "incidentDescription": { + "type": "string", + "description": "The description for an incident.", + "minLength": 1, + "maxLength": 1024 + }, + "reporterDescriptionDescriptor": { + "type": "string", + "description": "Information on the type of individual who reported the discipline incident. When known and/or if useful, use a more specific option code (e.g., \"Counselor\" rather than \"Professional Staff\")." + }, + "reporterName": { + "type": "string", + "description": "Identifies the reporter of the discipline incident by name.", + "minLength": 1, + "maxLength": 75 + }, + "behaviors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "behaviorDetailedDescription": { + "type": "string", + "description": "Specifies a more granular level of detail of a behavior involved in the incident.", + "minLength": 1, + "maxLength": 1024 + }, + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category and provides a detailed description." + } + }, + "additionalProperties": false, + "required": [ + "behaviorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "weapons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "weaponDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "weaponDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "reportedToLawEnforcement": { + "type": "boolean", + "description": "Indicator of whether the incident was reported to law enforcement." + }, + "caseNumber": { + "type": "string", + "description": "The case number assigned to the DisciplineIncident by law enforcement or other organization.", + "minLength": 1, + "maxLength": 20 + }, + "incidentCost": { + "type": "number", + "description": "The value of any quantifiable monetary loss directly resulting from the discipline incident. Examples include the value of repairs necessitated by vandalism of a school facility, or the value of personnel resources used for repairs or consumed by the incident." + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "externalParticipants": { + "type": "array", + "items": { + "type": "object", + "properties": { + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "The role or type of participation of an individual in the discipline incident." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "incidentDate", + "schoolReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DisciplineIncident", + "description": "This event entity represents an occurrence of an infraction ranging from a minor behavioral problem that disrupts the orderly functioning of a school or classroom (such as tardiness) to a criminal act that results in the involvement of a law enforcement official (such as robbery). A single event (e.g., a fight) is one incident regardless of how many perpetrators or victims are involved. Discipline incidents are events classified as warranting discipline action.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "incidentDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the discipline incident occurred." + }, + "incidentTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the incident took place." + }, + "incidentLocationDescriptor": { + "type": "string", + "description": "Identifies where the discipline incident occurred and whether or not it occurred on school." + }, + "incidentDescription": { + "type": "string", + "description": "The description for an incident.", + "minLength": 1, + "maxLength": 1024 + }, + "reporterDescriptionDescriptor": { + "type": "string", + "description": "Information on the type of individual who reported the discipline incident. When known and/or if useful, use a more specific option code (e.g., \"Counselor\" rather than \"Professional Staff\")." + }, + "reporterName": { + "type": "string", + "description": "Identifies the reporter of the discipline incident by name.", + "minLength": 1, + "maxLength": 75 + }, + "behaviors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "behaviorDetailedDescription": { + "type": "string", + "description": "Specifies a more granular level of detail of a behavior involved in the incident.", + "minLength": 1, + "maxLength": 1024 + }, + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category and provides a detailed description." + } + }, + "additionalProperties": false, + "required": [ + "behaviorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "weapons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "weaponDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "weaponDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "reportedToLawEnforcement": { + "type": "boolean", + "description": "Indicator of whether the incident was reported to law enforcement." + }, + "caseNumber": { + "type": "string", + "description": "The case number assigned to the DisciplineIncident by law enforcement or other organization.", + "minLength": 1, + "maxLength": 20 + }, + "incidentCost": { + "type": "number", + "description": "The value of any quantifiable monetary loss directly resulting from the discipline incident. Examples include the value of repairs necessitated by vandalism of a school facility, or the value of personnel resources used for repairs or consumed by the incident." + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "externalParticipants": { + "type": "array", + "items": { + "type": "object", + "properties": { + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "The role or type of participation of an individual in the discipline incident." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "incidentIdentifier", + "incidentDate", + "schoolReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.DisciplineIncident", + "description": "This event entity represents an occurrence of an infraction ranging from a minor behavioral problem that disrupts the orderly functioning of a school or classroom (such as tardiness) to a criminal act that results in the involvement of a law enforcement official (such as robbery). A single event (e.g., a fight) is one incident regardless of how many perpetrators or victims are involved. Discipline incidents are events classified as warranting discipline action.", + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "incidentDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the discipline incident occurred." + }, + "incidentTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the incident took place." + }, + "incidentLocationDescriptor": { + "type": "string", + "description": "Identifies where the discipline incident occurred and whether or not it occurred on school." + }, + "incidentDescription": { + "type": "string", + "description": "The description for an incident.", + "minLength": 1, + "maxLength": 1024 + }, + "reporterDescriptionDescriptor": { + "type": "string", + "description": "Information on the type of individual who reported the discipline incident. When known and/or if useful, use a more specific option code (e.g., \"Counselor\" rather than \"Professional Staff\")." + }, + "reporterName": { + "type": "string", + "description": "Identifies the reporter of the discipline incident by name.", + "minLength": 1, + "maxLength": 75 + }, + "behaviors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "behaviorDetailedDescription": { + "type": "string", + "description": "Specifies a more granular level of detail of a behavior involved in the incident.", + "minLength": 1, + "maxLength": 1024 + }, + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category and provides a detailed description." + } + }, + "additionalProperties": false, + "required": [ + "behaviorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "weapons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "weaponDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "weaponDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "reportedToLawEnforcement": { + "type": "boolean", + "description": "Indicator of whether the incident was reported to law enforcement." + }, + "caseNumber": { + "type": "string", + "description": "The case number assigned to the DisciplineIncident by law enforcement or other organization.", + "minLength": 1, + "maxLength": 20 + }, + "incidentCost": { + "type": "number", + "description": "The value of any quantifiable monetary loss directly resulting from the discipline incident. Examples include the value of repairs necessitated by vandalism of a school facility, or the value of personnel resources used for repairs or consumed by the incident." + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "externalParticipants": { + "type": "array", + "items": { + "type": "object", + "properties": { + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "The role or type of participation of an individual in the discipline incident." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "IncidentIdentifier", + "School" + ], + "documentPathsMapping": { + "IncidentIdentifier": { + "paths": { + "incidentIdentifier": "$.incidentIdentifier" + }, + "pathOrder": [ + "incidentIdentifier" + ], + "isReference": false + }, + "IncidentDate": { + "paths": { + "incidentDate": "$.incidentDate" + }, + "pathOrder": [ + "incidentDate" + ], + "isReference": false + }, + "IncidentTime": { + "paths": { + "incidentTime": "$.incidentTime" + }, + "pathOrder": [ + "incidentTime" + ], + "isReference": false + }, + "IncidentLocation": { + "paths": { + "incidentLocationDescriptor": "$.incidentLocationDescriptor" + }, + "pathOrder": [ + "incidentLocationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IncidentLocationDescriptor" + }, + "IncidentDescription": { + "paths": { + "incidentDescription": "$.incidentDescription" + }, + "pathOrder": [ + "incidentDescription" + ], + "isReference": false + }, + "ReporterDescription": { + "paths": { + "reporterDescriptionDescriptor": "$.reporterDescriptionDescriptor" + }, + "pathOrder": [ + "reporterDescriptionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReporterDescriptionDescriptor" + }, + "ReporterName": { + "paths": { + "reporterName": "$.reporterName" + }, + "pathOrder": [ + "reporterName" + ], + "isReference": false + }, + "Behavior.BehaviorDetailedDescription": { + "paths": { + "behaviorDetailedDescription": "$.behaviors[*].behaviorDetailedDescription" + }, + "pathOrder": [ + "behaviorDetailedDescription" + ], + "isReference": false + }, + "Behavior.Behavior": { + "paths": { + "behaviorDescriptor": "$.behaviors[*].behaviorDescriptor" + }, + "pathOrder": [ + "behaviorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "BehaviorDescriptor" + }, + "Weapon": { + "paths": { + "weaponDescriptor": "$.weapons[*].weaponDescriptor" + }, + "pathOrder": [ + "weaponDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "WeaponDescriptor" + }, + "ReportedToLawEnforcement": { + "paths": { + "reportedToLawEnforcement": "$.reportedToLawEnforcement" + }, + "pathOrder": [ + "reportedToLawEnforcement" + ], + "isReference": false + }, + "CaseNumber": { + "paths": { + "caseNumber": "$.caseNumber" + }, + "pathOrder": [ + "caseNumber" + ], + "isReference": false + }, + "IncidentCost": { + "paths": { + "incidentCost": "$.incidentCost" + }, + "pathOrder": [ + "incidentCost" + ], + "isReference": false + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "DisciplineIncidentExternalParticipant.FirstName": { + "paths": { + "firstName": "$.externalParticipants[*].firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "DisciplineIncidentExternalParticipant.LastSurname": { + "paths": { + "lastSurname": "$.externalParticipants[*].lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "DisciplineIncidentExternalParticipant.DisciplineIncidentParticipationCode": { + "paths": { + "disciplineIncidentParticipationCodeDescriptor": "$.externalParticipants[*].disciplineIncidentParticipationCodeDescriptor" + }, + "pathOrder": [ + "disciplineIncidentParticipationCodeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisciplineIncidentParticipationCodeDescriptor" + } + }, + "identityPathOrder": [ + "incidentIdentifier", + "schoolId" + ], + "isSubclass": false + }, + "educationContents": { + "resourceName": "EducationContent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationContent", + "description": "This entity represents materials for students or teachers that can be used for teaching, learning, research, and more. Education content includes full courses, course materials, modules, intervention descriptions, textbooks, streaming videos, tests, software, and any other tools, materials, or techniques used to support access to knowledge.", + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + }, + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + }, + "shortDescription": { + "type": "string", + "description": "A short description or name of the entity.", + "minLength": 1, + "maxLength": 75 + }, + "description": { + "type": "string", + "description": "An extended written representation of the education content.", + "minLength": 1, + "maxLength": 1024 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The individual credited with the creation of the resource.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "additionalAuthorsIndicator": { + "type": "boolean", + "description": "Indicates whether there are additional un-named authors. In a research report, this is often marked by the abbreviation \"et al\"." + }, + "publisher": { + "type": "string", + "description": "The organization credited with publishing the resource.", + "minLength": 1, + "maxLength": 50 + }, + "timeRequired": { + "type": "number", + "description": "Approximate or typical time it takes to work with or through this learning resource for the typical intended target audience." + }, + "interactivityStyleDescriptor": { + "type": "string", + "description": "The predominate mode of learning supported by the learning resource. Acceptable values are active, expositive, or mixed." + }, + "contentClassDescriptor": { + "type": "string", + "description": "The predominate type or kind characterizing the learning resource." + }, + "useRightsURL": { + "type": "string", + "description": "The URL where the owner specifies permissions for using the resource.", + "minLength": 5, + "maxLength": 255 + }, + "derivativeSourceEducationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceEducationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceEducationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "derivativeSourceLearningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceLearningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceLearningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "derivativeSourceURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 10 + }, + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false + }, + "cost": { + "type": "number", + "description": "An amount that has to be paid or spent to buy or obtain the education content." + }, + "costRateDescriptor": { + "type": "string", + "description": "The rate by which the cost applies." + }, + "namespace": { + "type": "string", + "description": "Namespace for the education content.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier", + "namespace" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationContent", + "description": "This entity represents materials for students or teachers that can be used for teaching, learning, research, and more. Education content includes full courses, course materials, modules, intervention descriptions, textbooks, streaming videos, tests, software, and any other tools, materials, or techniques used to support access to knowledge.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + }, + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + }, + "shortDescription": { + "type": "string", + "description": "A short description or name of the entity.", + "minLength": 1, + "maxLength": 75 + }, + "description": { + "type": "string", + "description": "An extended written representation of the education content.", + "minLength": 1, + "maxLength": 1024 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The individual credited with the creation of the resource.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "additionalAuthorsIndicator": { + "type": "boolean", + "description": "Indicates whether there are additional un-named authors. In a research report, this is often marked by the abbreviation \"et al\"." + }, + "publisher": { + "type": "string", + "description": "The organization credited with publishing the resource.", + "minLength": 1, + "maxLength": 50 + }, + "timeRequired": { + "type": "number", + "description": "Approximate or typical time it takes to work with or through this learning resource for the typical intended target audience." + }, + "interactivityStyleDescriptor": { + "type": "string", + "description": "The predominate mode of learning supported by the learning resource. Acceptable values are active, expositive, or mixed." + }, + "contentClassDescriptor": { + "type": "string", + "description": "The predominate type or kind characterizing the learning resource." + }, + "useRightsURL": { + "type": "string", + "description": "The URL where the owner specifies permissions for using the resource.", + "minLength": 5, + "maxLength": 255 + }, + "derivativeSourceEducationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceEducationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceEducationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "derivativeSourceLearningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceLearningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceLearningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "derivativeSourceURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 10 + }, + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false + }, + "cost": { + "type": "number", + "description": "An amount that has to be paid or spent to buy or obtain the education content." + }, + "costRateDescriptor": { + "type": "string", + "description": "The rate by which the cost applies." + }, + "namespace": { + "type": "string", + "description": "Namespace for the education content.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "contentIdentifier", + "namespace" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationContent", + "description": "This entity represents materials for students or teachers that can be used for teaching, learning, research, and more. Education content includes full courses, course materials, modules, intervention descriptions, textbooks, streaming videos, tests, software, and any other tools, materials, or techniques used to support access to knowledge.", + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + }, + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + }, + "shortDescription": { + "type": "string", + "description": "A short description or name of the entity.", + "minLength": 1, + "maxLength": 75 + }, + "description": { + "type": "string", + "description": "An extended written representation of the education content.", + "minLength": 1, + "maxLength": 1024 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The individual credited with the creation of the resource.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "additionalAuthorsIndicator": { + "type": "boolean", + "description": "Indicates whether there are additional un-named authors. In a research report, this is often marked by the abbreviation \"et al\"." + }, + "publisher": { + "type": "string", + "description": "The organization credited with publishing the resource.", + "minLength": 1, + "maxLength": 50 + }, + "timeRequired": { + "type": "number", + "description": "Approximate or typical time it takes to work with or through this learning resource for the typical intended target audience." + }, + "interactivityStyleDescriptor": { + "type": "string", + "description": "The predominate mode of learning supported by the learning resource. Acceptable values are active, expositive, or mixed." + }, + "contentClassDescriptor": { + "type": "string", + "description": "The predominate type or kind characterizing the learning resource." + }, + "useRightsURL": { + "type": "string", + "description": "The URL where the owner specifies permissions for using the resource.", + "minLength": 5, + "maxLength": 255 + }, + "derivativeSourceEducationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceEducationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceEducationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "derivativeSourceLearningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceLearningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceLearningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "derivativeSourceURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "derivativeSourceURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "derivativeSourceURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 10 + }, + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false + }, + "cost": { + "type": "number", + "description": "An amount that has to be paid or spent to buy or obtain the education content." + }, + "costRateDescriptor": { + "type": "string", + "description": "The rate by which the cost applies." + }, + "namespace": { + "type": "string", + "description": "Namespace for the education content.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "ContentIdentifier" + ], + "documentPathsMapping": { + "ContentIdentifier": { + "paths": { + "contentIdentifier": "$.contentIdentifier" + }, + "pathOrder": [ + "contentIdentifier" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResourceMetadataURI": { + "paths": { + "learningResourceMetadataURI": "$.learningResourceMetadataURI" + }, + "pathOrder": [ + "learningResourceMetadataURI" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.ShortDescription": { + "paths": { + "shortDescription": "$.shortDescription" + }, + "pathOrder": [ + "shortDescription" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.Description": { + "paths": { + "description": "$.description" + }, + "pathOrder": [ + "description" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.Author": { + "paths": { + "author": "$.authors[*].author" + }, + "pathOrder": [ + "author" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.AdditionalAuthorsIndicator": { + "paths": { + "additionalAuthorsIndicator": "$.additionalAuthorsIndicator" + }, + "pathOrder": [ + "additionalAuthorsIndicator" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.Publisher": { + "paths": { + "publisher": "$.publisher" + }, + "pathOrder": [ + "publisher" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.TimeRequired": { + "paths": { + "timeRequired": "$.timeRequired" + }, + "pathOrder": [ + "timeRequired" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.InteractivityStyle": { + "paths": { + "interactivityStyleDescriptor": "$.interactivityStyleDescriptor" + }, + "pathOrder": [ + "interactivityStyleDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InteractivityStyleDescriptor" + }, + "LearningResourceChoice.LearningResource.ContentClass": { + "paths": { + "contentClassDescriptor": "$.contentClassDescriptor" + }, + "pathOrder": [ + "contentClassDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ContentClassDescriptor" + }, + "LearningResourceChoice.LearningResource.UseRightsURL": { + "paths": { + "useRightsURL": "$.useRightsURL" + }, + "pathOrder": [ + "useRightsURL" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.DerivativeSourceEducationContentSource.EducationContent": { + "paths": { + "contentIdentifier": "$.derivativeSourceEducationContents[*].derivativeSourceEducationContentReference.contentIdentifier" + }, + "pathOrder": [ + "contentIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationContent" + }, + "LearningResourceChoice.LearningResource.DerivativeSourceEducationContentSource.LearningResourceMetadataURI": { + "paths": { + "derivativeSourceLearningResourceMetadataURI": "$.derivativeSourceLearningResourceMetadataURIs[*].derivativeSourceLearningResourceMetadataURI" + }, + "pathOrder": [ + "derivativeSourceLearningResourceMetadataURI" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.DerivativeSourceEducationContentSource.URI": { + "paths": { + "derivativeSourceURI": "$.derivativeSourceURIs[*].derivativeSourceURI" + }, + "pathOrder": [ + "derivativeSourceURI" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.PublicationDateChoice.PublicationDate": { + "paths": { + "publicationDate": "$.publicationDate" + }, + "pathOrder": [ + "publicationDate" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.PublicationDateChoice.PublicationYear": { + "paths": { + "publicationYear": "$.publicationYear" + }, + "pathOrder": [ + "publicationYear" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.AppropriateSex": { + "paths": { + "sexDescriptor": "$.appropriateSexes[*].sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "LearningResourceChoice.LearningResource.AppropriateGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.appropriateGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "LearningResourceChoice.LearningResource.Language": { + "paths": { + "languageDescriptor": "$.languages[*].languageDescriptor" + }, + "pathOrder": [ + "languageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "LearningResourceChoice.LearningResource.Version": { + "paths": { + "version": "$.version" + }, + "pathOrder": [ + "version" + ], + "isReference": false + }, + "LearningResourceChoice.LearningResource.LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "Cost": { + "paths": { + "cost": "$.cost" + }, + "pathOrder": [ + "cost" + ], + "isReference": false + }, + "CostRate": { + "paths": { + "costRateDescriptor": "$.costRateDescriptor" + }, + "pathOrder": [ + "costRateDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CostRateDescriptor" + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "contentIdentifier" + ], + "isSubclass": false + }, + "functionDimensions": { + "resourceName": "FunctionDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FunctionDimension", + "description": "The NCES function accounting dimension representing an expenditure. The function describes the activity for which a service or material object is acquired. The functions of a school district are generally classified into five broad areas, including instruction, support services, operation of non-instructional services, facilities acquisition and construction, and debt service.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account function dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account function dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account function dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FunctionDimension", + "description": "The NCES function accounting dimension representing an expenditure. The function describes the activity for which a service or material object is acquired. The functions of a school district are generally classified into five broad areas, including instruction, support services, operation of non-instructional services, facilities acquisition and construction, and debt service.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account function dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account function dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account function dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FunctionDimension", + "description": "The NCES function accounting dimension representing an expenditure. The function describes the activity for which a service or material object is acquired. The functions of a school district are generally classified into five broad areas, including instruction, support services, operation of non-instructional services, facilities acquisition and construction, and debt service.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account function dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account function dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account function dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "fundDimensions": { + "resourceName": "FundDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FundDimension", + "description": "The NCES fund accounting dimension. A fund is a fiscal and accounting entity with a self-balancing set of accounts recording cash and other financial resources, together with all related liabilities and residual equities or balances, and changes therein, which are segregated for the purpose of carrying on specific activities or attaining certain objectives in accordance with special regulations, restrictions, or limitations.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account fund dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account fund dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account fund dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FundDimension", + "description": "The NCES fund accounting dimension. A fund is a fiscal and accounting entity with a self-balancing set of accounts recording cash and other financial resources, together with all related liabilities and residual equities or balances, and changes therein, which are segregated for the purpose of carrying on specific activities or attaining certain objectives in accordance with special regulations, restrictions, or limitations.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account fund dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account fund dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account fund dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FundDimension", + "description": "The NCES fund accounting dimension. A fund is a fiscal and accounting entity with a self-balancing set of accounts recording cash and other financial resources, together with all related liabilities and residual equities or balances, and changes therein, which are segregated for the purpose of carrying on specific activities or attaining certain objectives in accordance with special regulations, restrictions, or limitations.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account fund dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account fund dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account fund dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "grades": { + "resourceName": "Grade", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Grade", + "description": "This educational entity represents an overall score or assessment tied to a course over a period of time (i.e., the grading period). Student grades are usually a compilation of marks and other scores.", + "type": "object", + "properties": { + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "gradeTypeDescriptor": { + "type": "string", + "description": "The type of grade reported (e.g., exam, final, grading period)." + }, + "performanceBaseConversionDescriptor": { + "type": "string", + "description": "A conversion of the level to a standard set of performance levels." + }, + "studentSectionAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "beginDate", + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier", + "studentUniqueId" + ] + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "learningStandardGrades": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance for a learning standard as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance for a learning standard as submitted by the instructor." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "performanceBaseConversionDescriptor": { + "type": "string", + "description": "A performance level that describes the student proficiency." + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "currentGradeIndicator": { + "type": "boolean", + "description": "An indicator that the posted grade is an interim grade for the grading period and not the final grade." + }, + "currentGradeAsOfDate": { + "type": "string", + "format": "date", + "description": "As-Of date for a grade posted as the current grade." + }, + "gradeEarnedDescription": { + "type": "string", + "description": "A description of the grade earned by the learner.", + "minLength": 0, + "maxLength": 64 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "gradeTypeDescriptor", + "studentSectionAssociationReference", + "gradingPeriodReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Grade", + "description": "This educational entity represents an overall score or assessment tied to a course over a period of time (i.e., the grading period). Student grades are usually a compilation of marks and other scores.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "gradeTypeDescriptor": { + "type": "string", + "description": "The type of grade reported (e.g., exam, final, grading period)." + }, + "performanceBaseConversionDescriptor": { + "type": "string", + "description": "A conversion of the level to a standard set of performance levels." + }, + "studentSectionAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "beginDate", + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier", + "studentUniqueId" + ] + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "learningStandardGrades": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance for a learning standard as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance for a learning standard as submitted by the instructor." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "performanceBaseConversionDescriptor": { + "type": "string", + "description": "A performance level that describes the student proficiency." + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "currentGradeIndicator": { + "type": "boolean", + "description": "An indicator that the posted grade is an interim grade for the grading period and not the final grade." + }, + "currentGradeAsOfDate": { + "type": "string", + "format": "date", + "description": "As-Of date for a grade posted as the current grade." + }, + "gradeEarnedDescription": { + "type": "string", + "description": "A description of the grade earned by the learner.", + "minLength": 0, + "maxLength": 64 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "gradeTypeDescriptor", + "studentSectionAssociationReference", + "gradingPeriodReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Grade", + "description": "This educational entity represents an overall score or assessment tied to a course over a period of time (i.e., the grading period). Student grades are usually a compilation of marks and other scores.", + "type": "object", + "properties": { + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "gradeTypeDescriptor": { + "type": "string", + "description": "The type of grade reported (e.g., exam, final, grading period)." + }, + "performanceBaseConversionDescriptor": { + "type": "string", + "description": "A conversion of the level to a standard set of performance levels." + }, + "studentSectionAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "beginDate", + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier", + "studentUniqueId" + ] + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "learningStandardGrades": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance for a learning standard as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance for a learning standard as submitted by the instructor." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "performanceBaseConversionDescriptor": { + "type": "string", + "description": "A performance level that describes the student proficiency." + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "currentGradeIndicator": { + "type": "boolean", + "description": "An indicator that the posted grade is an interim grade for the grading period and not the final grade." + }, + "currentGradeAsOfDate": { + "type": "string", + "format": "date", + "description": "As-Of date for a grade posted as the current grade." + }, + "gradeEarnedDescription": { + "type": "string", + "description": "A description of the grade earned by the learner.", + "minLength": 0, + "maxLength": 64 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.gradingPeriodReference.schoolId", + "targetJsonPath": "$.studentSectionAssociationReference.schoolId" + }, + { + "sourceJsonPath": "$.gradingPeriodReference.schoolYear", + "targetJsonPath": "$.studentSectionAssociationReference.schoolYear" + } + ], + "identityFullnames": [ + "GradeType", + "StudentSectionAssociation", + "GradingPeriod" + ], + "documentPathsMapping": { + "LetterGradeEarned": { + "paths": { + "letterGradeEarned": "$.letterGradeEarned" + }, + "pathOrder": [ + "letterGradeEarned" + ], + "isReference": false + }, + "NumericGradeEarned": { + "paths": { + "numericGradeEarned": "$.numericGradeEarned" + }, + "pathOrder": [ + "numericGradeEarned" + ], + "isReference": false + }, + "DiagnosticStatement": { + "paths": { + "diagnosticStatement": "$.diagnosticStatement" + }, + "pathOrder": [ + "diagnosticStatement" + ], + "isReference": false + }, + "GradeType": { + "paths": { + "gradeTypeDescriptor": "$.gradeTypeDescriptor" + }, + "pathOrder": [ + "gradeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeTypeDescriptor" + }, + "PerformanceBaseConversion": { + "paths": { + "performanceBaseConversionDescriptor": "$.performanceBaseConversionDescriptor" + }, + "pathOrder": [ + "performanceBaseConversionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceBaseConversionDescriptor" + }, + "StudentSectionAssociation": { + "paths": { + "beginDate": "$.studentSectionAssociationReference.beginDate", + "localCourseCode": "$.studentSectionAssociationReference.localCourseCode", + "schoolId": "$.studentSectionAssociationReference.schoolId", + "schoolYear": "$.studentSectionAssociationReference.schoolYear", + "sectionIdentifier": "$.studentSectionAssociationReference.sectionIdentifier", + "sessionName": "$.studentSectionAssociationReference.sessionName", + "studentUniqueId": "$.studentSectionAssociationReference.studentUniqueId" + }, + "pathOrder": [ + "beginDate", + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StudentSectionAssociation" + }, + "GradingPeriod": { + "paths": { + "gradingPeriodDescriptor": "$.gradingPeriodReference.gradingPeriodDescriptor", + "periodSequence": "$.gradingPeriodReference.periodSequence", + "schoolId": "$.gradingPeriodReference.schoolId", + "schoolYear": "$.gradingPeriodReference.schoolYear" + }, + "pathOrder": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GradingPeriod" + }, + "LearningStandardGrade.LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandardGrades[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "LearningStandardGrade.LetterGradeEarned": { + "paths": { + "letterGradeEarned": "$.learningStandardGrades[*].letterGradeEarned" + }, + "pathOrder": [ + "letterGradeEarned" + ], + "isReference": false + }, + "LearningStandardGrade.NumericGradeEarned": { + "paths": { + "numericGradeEarned": "$.learningStandardGrades[*].numericGradeEarned" + }, + "pathOrder": [ + "numericGradeEarned" + ], + "isReference": false + }, + "LearningStandardGrade.DiagnosticStatement": { + "paths": { + "diagnosticStatement": "$.learningStandardGrades[*].diagnosticStatement" + }, + "pathOrder": [ + "diagnosticStatement" + ], + "isReference": false + }, + "LearningStandardGrade.PerformanceBaseConversion": { + "paths": { + "performanceBaseConversionDescriptor": "$.learningStandardGrades[*].performanceBaseConversionDescriptor" + }, + "pathOrder": [ + "performanceBaseConversionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceBaseConversionDescriptor" + }, + "CurrentGradeIndicator": { + "paths": { + "currentGradeIndicator": "$.currentGradeIndicator" + }, + "pathOrder": [ + "currentGradeIndicator" + ], + "isReference": false + }, + "CurrentGradeAsOfDate": { + "paths": { + "currentGradeAsOfDate": "$.currentGradeAsOfDate" + }, + "pathOrder": [ + "currentGradeAsOfDate" + ], + "isReference": false + }, + "GradeEarnedDescription": { + "paths": { + "gradeEarnedDescription": "$.gradeEarnedDescription" + }, + "pathOrder": [ + "gradeEarnedDescription" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "gradeTypeDescriptor", + "gradingPeriodDescriptor", + "localCourseCode", + "periodSequence", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "studentUniqueId" + ], + "isSubclass": false + }, + "gradebookEntries": { + "resourceName": "GradebookEntry", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GradebookEntry", + "description": "This entity represents an assignment, homework, or classroom assessment to be recorded in a gradebook.", + "type": "object", + "properties": { + "gradebookEntryIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a gradebook entry by the source system.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace URI for the source of the gradebook entry.", + "minLength": 5, + "maxLength": 255 + }, + "sourceSectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "dateAssigned": { + "type": "string", + "format": "date", + "description": "The date the assignment, homework, or assessment was assigned or executed." + }, + "title": { + "type": "string", + "description": "The name or title of the activity to be recorded in the gradebook entry.", + "maxLength": 100 + }, + "description": { + "type": "string", + "description": "A description of the assignment, homework, or classroom assessment.", + "minLength": 1, + "maxLength": 1024 + }, + "dueDate": { + "type": "string", + "format": "date", + "description": "The date the assignment, homework, or assessment is due." + }, + "dueTime": { + "type": "string", + "format": "time", + "description": "The time the assignment, homework, or assessment is due." + }, + "gradebookEntryTypeDescriptor": { + "type": "string", + "description": "The type of the gradebook entry." + }, + "maxPoints": { + "type": "number", + "description": "The maximum number of points that can be earned for the submission." + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "gradebookEntryIdentifier", + "namespace", + "sourceSectionIdentifier", + "dateAssigned", + "title" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GradebookEntry", + "description": "This entity represents an assignment, homework, or classroom assessment to be recorded in a gradebook.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "gradebookEntryIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a gradebook entry by the source system.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace URI for the source of the gradebook entry.", + "minLength": 5, + "maxLength": 255 + }, + "sourceSectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "dateAssigned": { + "type": "string", + "format": "date", + "description": "The date the assignment, homework, or assessment was assigned or executed." + }, + "title": { + "type": "string", + "description": "The name or title of the activity to be recorded in the gradebook entry.", + "maxLength": 100 + }, + "description": { + "type": "string", + "description": "A description of the assignment, homework, or classroom assessment.", + "minLength": 1, + "maxLength": 1024 + }, + "dueDate": { + "type": "string", + "format": "date", + "description": "The date the assignment, homework, or assessment is due." + }, + "dueTime": { + "type": "string", + "format": "time", + "description": "The time the assignment, homework, or assessment is due." + }, + "gradebookEntryTypeDescriptor": { + "type": "string", + "description": "The type of the gradebook entry." + }, + "maxPoints": { + "type": "number", + "description": "The maximum number of points that can be earned for the submission." + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "gradebookEntryIdentifier", + "namespace", + "sourceSectionIdentifier", + "dateAssigned", + "title" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GradebookEntry", + "description": "This entity represents an assignment, homework, or classroom assessment to be recorded in a gradebook.", + "type": "object", + "properties": { + "gradebookEntryIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a gradebook entry by the source system.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace URI for the source of the gradebook entry.", + "minLength": 5, + "maxLength": 255 + }, + "sourceSectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "dateAssigned": { + "type": "string", + "format": "date", + "description": "The date the assignment, homework, or assessment was assigned or executed." + }, + "title": { + "type": "string", + "description": "The name or title of the activity to be recorded in the gradebook entry.", + "maxLength": 100 + }, + "description": { + "type": "string", + "description": "A description of the assignment, homework, or classroom assessment.", + "minLength": 1, + "maxLength": 1024 + }, + "dueDate": { + "type": "string", + "format": "date", + "description": "The date the assignment, homework, or assessment is due." + }, + "dueTime": { + "type": "string", + "format": "time", + "description": "The time the assignment, homework, or assessment is due." + }, + "gradebookEntryTypeDescriptor": { + "type": "string", + "description": "The type of the gradebook entry." + }, + "maxPoints": { + "type": "number", + "description": "The maximum number of points that can be earned for the submission." + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.gradingPeriodReference.schoolId", + "targetJsonPath": "$.sectionReference.schoolId" + }, + { + "sourceJsonPath": "$.gradingPeriodReference.schoolYear", + "targetJsonPath": "$.sectionReference.schoolYear" + } + ], + "identityFullnames": [ + "GradebookEntryIdentifier", + "Namespace" + ], + "documentPathsMapping": { + "GradebookEntryIdentifier": { + "paths": { + "gradebookEntryIdentifier": "$.gradebookEntryIdentifier" + }, + "pathOrder": [ + "gradebookEntryIdentifier" + ], + "isReference": false + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + }, + "SourceSectionIdentifier": { + "paths": { + "sourceSectionIdentifier": "$.sourceSectionIdentifier" + }, + "pathOrder": [ + "sourceSectionIdentifier" + ], + "isReference": false + }, + "Section": { + "paths": { + "localCourseCode": "$.sectionReference.localCourseCode", + "schoolId": "$.sectionReference.schoolId", + "schoolYear": "$.sectionReference.schoolYear", + "sectionIdentifier": "$.sectionReference.sectionIdentifier", + "sessionName": "$.sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + }, + "DateAssigned": { + "paths": { + "dateAssigned": "$.dateAssigned" + }, + "pathOrder": [ + "dateAssigned" + ], + "isReference": false + }, + "Title": { + "paths": { + "title": "$.title" + }, + "pathOrder": [ + "title" + ], + "isReference": false + }, + "Description": { + "paths": { + "description": "$.description" + }, + "pathOrder": [ + "description" + ], + "isReference": false + }, + "DueDate": { + "paths": { + "dueDate": "$.dueDate" + }, + "pathOrder": [ + "dueDate" + ], + "isReference": false + }, + "DueTime": { + "paths": { + "dueTime": "$.dueTime" + }, + "pathOrder": [ + "dueTime" + ], + "isReference": false + }, + "GradebookEntryType": { + "paths": { + "gradebookEntryTypeDescriptor": "$.gradebookEntryTypeDescriptor" + }, + "pathOrder": [ + "gradebookEntryTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradebookEntryTypeDescriptor" + }, + "MaxPoints": { + "paths": { + "maxPoints": "$.maxPoints" + }, + "pathOrder": [ + "maxPoints" + ], + "isReference": false + }, + "GradingPeriod": { + "paths": { + "gradingPeriodDescriptor": "$.gradingPeriodReference.gradingPeriodDescriptor", + "periodSequence": "$.gradingPeriodReference.periodSequence", + "schoolId": "$.gradingPeriodReference.schoolId", + "schoolYear": "$.gradingPeriodReference.schoolYear" + }, + "pathOrder": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GradingPeriod" + }, + "LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandards[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + } + }, + "identityPathOrder": [ + "gradebookEntryIdentifier", + "namespace" + ], + "isSubclass": false + }, + "gradingPeriods": { + "resourceName": "GradingPeriod", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GradingPeriod", + "description": "This entity represents the time span for which grades are reported.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the first day of the grading period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the last day of the grading period." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "Total days available for educational instruction during the grading period.", + "minimum": 0 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "schoolReference", + "gradingPeriodDescriptor", + "periodSequence", + "schoolYearTypeReference", + "beginDate", + "endDate", + "totalInstructionalDays" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GradingPeriod", + "description": "This entity represents the time span for which grades are reported.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the first day of the grading period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the last day of the grading period." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "Total days available for educational instruction during the grading period.", + "minimum": 0 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "schoolReference", + "gradingPeriodDescriptor", + "periodSequence", + "schoolYearTypeReference", + "beginDate", + "endDate", + "totalInstructionalDays" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GradingPeriod", + "description": "This entity represents the time span for which grades are reported.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the first day of the grading period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the last day of the grading period." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "Total days available for educational instruction during the grading period.", + "minimum": 0 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "School", + "GradingPeriod", + "PeriodSequence", + "SchoolYear" + ], + "documentPathsMapping": { + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "GradingPeriod": { + "paths": { + "gradingPeriodDescriptor": "$.gradingPeriodDescriptor" + }, + "pathOrder": [ + "gradingPeriodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradingPeriodDescriptor" + }, + "PeriodSequence": { + "paths": { + "periodSequence": "$.periodSequence" + }, + "pathOrder": [ + "periodSequence" + ], + "isReference": false + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "TotalInstructionalDays": { + "paths": { + "totalInstructionalDays": "$.totalInstructionalDays" + }, + "pathOrder": [ + "totalInstructionalDays" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ], + "isSubclass": false + }, + "graduationPlans": { + "resourceName": "GraduationPlan", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GraduationPlan", + "description": "This entity is a plan outlining the required credits, credits by subject, credits by course, and other criteria required for graduation. A graduation plan may be one or more standard plans defined by an education organization and/or individual plans for some or all students.", + "type": "object", + "properties": { + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "individualPlan": { + "type": "boolean", + "description": "An indicator of whether the graduation plan is tailored for an individual." + }, + "totalRequiredCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "totalRequiredCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "totalRequiredCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "creditsBySubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the graduation requirement." + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "creditsByCourses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseSetName": { + "type": "string", + "description": "Identifying name given to a collection of courses.", + "minLength": 1, + "maxLength": 120 + }, + "courses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + } + }, + "additionalProperties": false, + "required": [ + "courseReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "whenTakenGradeLevelDescriptor": { + "type": "string", + "description": "The grade level when the student is planned to take the course." + } + }, + "additionalProperties": false, + "required": [ + "courseSetName", + "courses", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "creditsByCreditCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "creditCategoryDescriptor": { + "type": "string", + "description": "A categorization for the course transcript credits awarded in the course transcript." + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + } + }, + "additionalProperties": false, + "required": [ + "creditCategoryDescriptor", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "graduationSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "requiredAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevel": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "assessmentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "graduationPlanTypeDescriptor", + "totalRequiredCredits", + "educationOrganizationReference", + "graduationSchoolYearTypeReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GraduationPlan", + "description": "This entity is a plan outlining the required credits, credits by subject, credits by course, and other criteria required for graduation. A graduation plan may be one or more standard plans defined by an education organization and/or individual plans for some or all students.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "individualPlan": { + "type": "boolean", + "description": "An indicator of whether the graduation plan is tailored for an individual." + }, + "totalRequiredCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "totalRequiredCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "totalRequiredCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "creditsBySubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the graduation requirement." + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "creditsByCourses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseSetName": { + "type": "string", + "description": "Identifying name given to a collection of courses.", + "minLength": 1, + "maxLength": 120 + }, + "courses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + } + }, + "additionalProperties": false, + "required": [ + "courseReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "whenTakenGradeLevelDescriptor": { + "type": "string", + "description": "The grade level when the student is planned to take the course." + } + }, + "additionalProperties": false, + "required": [ + "courseSetName", + "courses", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "creditsByCreditCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "creditCategoryDescriptor": { + "type": "string", + "description": "A categorization for the course transcript credits awarded in the course transcript." + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + } + }, + "additionalProperties": false, + "required": [ + "creditCategoryDescriptor", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "graduationSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "requiredAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevel": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "assessmentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "graduationPlanTypeDescriptor", + "totalRequiredCredits", + "educationOrganizationReference", + "graduationSchoolYearTypeReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.GraduationPlan", + "description": "This entity is a plan outlining the required credits, credits by subject, credits by course, and other criteria required for graduation. A graduation plan may be one or more standard plans defined by an education organization and/or individual plans for some or all students.", + "type": "object", + "properties": { + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "individualPlan": { + "type": "boolean", + "description": "An indicator of whether the graduation plan is tailored for an individual." + }, + "totalRequiredCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "totalRequiredCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "totalRequiredCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "creditsBySubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the graduation requirement." + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "creditsByCourses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseSetName": { + "type": "string", + "description": "Identifying name given to a collection of courses.", + "minLength": 1, + "maxLength": 120 + }, + "courses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + } + }, + "additionalProperties": false, + "required": [ + "courseReference" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "whenTakenGradeLevelDescriptor": { + "type": "string", + "description": "The grade level when the student is planned to take the course." + } + }, + "additionalProperties": false, + "required": [ + "courseSetName", + "courses", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "creditsByCreditCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "creditCategoryDescriptor": { + "type": "string", + "description": "A categorization for the course transcript credits awarded in the course transcript." + }, + "credits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "creditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "creditConversion": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + } + }, + "additionalProperties": false, + "required": [ + "creditCategoryDescriptor", + "credits" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "graduationSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "requiredAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevel": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "assessmentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "GraduationPlanType", + "EducationOrganization", + "GraduationSchoolYear" + ], + "documentPathsMapping": { + "GraduationPlanType": { + "paths": { + "graduationPlanTypeDescriptor": "$.graduationPlanTypeDescriptor" + }, + "pathOrder": [ + "graduationPlanTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GraduationPlanTypeDescriptor" + }, + "IndividualPlan": { + "paths": { + "individualPlan": "$.individualPlan" + }, + "pathOrder": [ + "individualPlan" + ], + "isReference": false + }, + "TotalRequiredCredits.Credits": { + "paths": { + "totalRequiredCredits": "$.totalRequiredCredits" + }, + "pathOrder": [ + "totalRequiredCredits" + ], + "isReference": false + }, + "TotalRequiredCredits.CreditType": { + "paths": { + "totalRequiredCreditTypeDescriptor": "$.totalRequiredCreditTypeDescriptor" + }, + "pathOrder": [ + "totalRequiredCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "TotalRequiredCredits.CreditConversion": { + "paths": { + "totalRequiredCreditConversions": "$.totalRequiredCreditConversions" + }, + "pathOrder": [ + "totalRequiredCreditConversions" + ], + "isReference": false + }, + "CreditsBySubject.AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.creditsBySubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "CreditsBySubject.Credits.Credits": { + "paths": { + "credits": "$.creditsBySubjects[*].credits" + }, + "pathOrder": [ + "credits" + ], + "isReference": false + }, + "CreditsBySubject.Credits.CreditType": { + "paths": { + "creditTypeDescriptor": "$.creditsBySubjects[*].creditTypeDescriptor" + }, + "pathOrder": [ + "creditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "CreditsBySubject.Credits.CreditConversion": { + "paths": { + "creditConversion": "$.creditsBySubjects[*].creditConversion" + }, + "pathOrder": [ + "creditConversion" + ], + "isReference": false + }, + "CreditsByCourse.CourseSetName": { + "paths": { + "courseSetName": "$.creditsByCourses[*].courseSetName" + }, + "pathOrder": [ + "courseSetName" + ], + "isReference": false + }, + "CreditsByCourse.Course": { + "paths": { + "courseCode": "$.creditsByCourses[*].courses[*].courseReference.courseCode", + "educationOrganizationId": "$.creditsByCourses[*].courses[*].courseReference.educationOrganizationId" + }, + "pathOrder": [ + "courseCode", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Course" + }, + "CreditsByCourse.Credits.Credits": { + "paths": { + "credits": "$.creditsByCourses[*].credits" + }, + "pathOrder": [ + "credits" + ], + "isReference": false + }, + "CreditsByCourse.Credits.CreditType": { + "paths": { + "creditTypeDescriptor": "$.creditsByCourses[*].creditTypeDescriptor" + }, + "pathOrder": [ + "creditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "CreditsByCourse.Credits.CreditConversion": { + "paths": { + "creditConversion": "$.creditsByCourses[*].creditConversion" + }, + "pathOrder": [ + "creditConversion" + ], + "isReference": false + }, + "CreditsByCourse.WhenTakenGradeLevel": { + "paths": { + "whenTakenGradeLevelDescriptor": "$.creditsByCourses[*].whenTakenGradeLevelDescriptor" + }, + "pathOrder": [ + "whenTakenGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "CreditsByCreditCategory.CreditCategory": { + "paths": { + "creditCategoryDescriptor": "$.creditsByCreditCategories[*].creditCategoryDescriptor" + }, + "pathOrder": [ + "creditCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditCategoryDescriptor" + }, + "CreditsByCreditCategory.Credits.Credits": { + "paths": { + "credits": "$.creditsByCreditCategories[*].credits" + }, + "pathOrder": [ + "credits" + ], + "isReference": false + }, + "CreditsByCreditCategory.Credits.CreditType": { + "paths": { + "creditTypeDescriptor": "$.creditsByCreditCategories[*].creditTypeDescriptor" + }, + "pathOrder": [ + "creditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "CreditsByCreditCategory.Credits.CreditConversion": { + "paths": { + "creditConversion": "$.creditsByCreditCategories[*].creditConversion" + }, + "pathOrder": [ + "creditConversion" + ], + "isReference": false + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "GraduationSchoolYear": { + "paths": { + "schoolYear": "$.graduationSchoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "RequiredAssessment.Assessment": { + "paths": { + "assessmentIdentifier": "$.requiredAssessments[*].assessmentReference.assessmentIdentifier", + "namespace": "$.requiredAssessments[*].assessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Assessment" + }, + "RequiredAssessment.RequiredAssessmentScore.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.requiredAssessments[*].scores[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "RequiredAssessment.RequiredAssessmentScore.MinimumScore": { + "paths": { + "minimumScore": "$.requiredAssessments[*].scores[*].minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "RequiredAssessment.RequiredAssessmentScore.MaximumScore": { + "paths": { + "maximumScore": "$.requiredAssessments[*].scores[*].maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "RequiredAssessment.RequiredAssessmentScore.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.requiredAssessments[*].scores[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "RequiredAssessment.RequiredAssessmentPerformanceLevel.PerformanceLevel": { + "paths": { + "performanceLevelDescriptor": "$.requiredAssessments[*].performanceLevel.performanceLevelDescriptor" + }, + "pathOrder": [ + "performanceLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceLevelDescriptor" + }, + "RequiredAssessment.RequiredAssessmentPerformanceLevel.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.requiredAssessments[*].performanceLevel.assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "RequiredAssessment.RequiredAssessmentPerformanceLevel.MinimumScore": { + "paths": { + "minimumScore": "$.requiredAssessments[*].performanceLevel.minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "RequiredAssessment.RequiredAssessmentPerformanceLevel.MaximumScore": { + "paths": { + "maximumScore": "$.requiredAssessments[*].performanceLevel.maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "RequiredAssessment.RequiredAssessmentPerformanceLevel.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.requiredAssessments[*].performanceLevel.resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "RequiredAssessment.RequiredAssessmentPerformanceLevel.PerformanceLevelIndicatorName": { + "paths": { + "performanceLevelIndicatorName": "$.requiredAssessments[*].performanceLevel.performanceLevelIndicatorName" + }, + "pathOrder": [ + "performanceLevelIndicatorName" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "schoolYear" + ], + "isSubclass": false + }, + "interventions": { + "resourceName": "Intervention", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Intervention", + "description": "An implementation of an instructional approach focusing on the specific techniques and materials used to teach a given subject.", + "type": "object", + "properties": { + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "diagnoses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented." + }, + "interventionPrescriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + } + }, + "additionalProperties": false, + "required": [ + "interventionPrescriptionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The start date for the intervention implementation." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date for the intervention implementation." + }, + "meetingTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time ends." + } + }, + "additionalProperties": false, + "required": [ + "startTime", + "endTime" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "staffs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + }, + "minDosage": { + "type": "integer", + "description": "The minimum duration of time in minutes that may be assigned for the intervention." + }, + "maxDosage": { + "type": "integer", + "description": "The maximum duration of time in minutes that may be assigned for the intervention." + }, + "namespace": { + "type": "string", + "description": "Namespace for the intervention.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "interventionClassDescriptor", + "deliveryMethodDescriptor", + "beginDate", + "educationOrganizationReference", + "interventionIdentificationCode" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Intervention", + "description": "An implementation of an instructional approach focusing on the specific techniques and materials used to teach a given subject.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "diagnoses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented." + }, + "interventionPrescriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + } + }, + "additionalProperties": false, + "required": [ + "interventionPrescriptionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The start date for the intervention implementation." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date for the intervention implementation." + }, + "meetingTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time ends." + } + }, + "additionalProperties": false, + "required": [ + "startTime", + "endTime" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "staffs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + }, + "minDosage": { + "type": "integer", + "description": "The minimum duration of time in minutes that may be assigned for the intervention." + }, + "maxDosage": { + "type": "integer", + "description": "The maximum duration of time in minutes that may be assigned for the intervention." + }, + "namespace": { + "type": "string", + "description": "Namespace for the intervention.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "interventionClassDescriptor", + "deliveryMethodDescriptor", + "beginDate", + "educationOrganizationReference", + "interventionIdentificationCode" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Intervention", + "description": "An implementation of an instructional approach focusing on the specific techniques and materials used to teach a given subject.", + "type": "object", + "properties": { + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "diagnoses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented." + }, + "interventionPrescriptions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + } + }, + "additionalProperties": false, + "required": [ + "interventionPrescriptionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The start date for the intervention implementation." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date for the intervention implementation." + }, + "meetingTimes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "startTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time begins." + }, + "endTime": { + "type": "string", + "format": "time", + "description": "An indication of the time of day the meeting time ends." + } + }, + "additionalProperties": false, + "required": [ + "startTime", + "endTime" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "staffs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + }, + "minDosage": { + "type": "integer", + "description": "The minimum duration of time in minutes that may be assigned for the intervention." + }, + "maxDosage": { + "type": "integer", + "description": "The maximum duration of time in minutes that may be assigned for the intervention." + }, + "namespace": { + "type": "string", + "description": "Namespace for the intervention.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "InterventionIdentificationCode" + ], + "documentPathsMapping": { + "EducationContentSource.EducationContent": { + "paths": { + "contentIdentifier": "$.educationContents[*].educationContentReference.contentIdentifier" + }, + "pathOrder": [ + "contentIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationContent" + }, + "EducationContentSource.LearningResourceMetadataURI": { + "paths": { + "learningResourceMetadataURI": "$.learningResourceMetadataURIs[*].learningResourceMetadataURI" + }, + "pathOrder": [ + "learningResourceMetadataURI" + ], + "isReference": false + }, + "EducationContentSource.URI": { + "paths": { + "uri": "$.uris[*].uri" + }, + "pathOrder": [ + "uri" + ], + "isReference": false + }, + "InterventionClass": { + "paths": { + "interventionClassDescriptor": "$.interventionClassDescriptor" + }, + "pathOrder": [ + "interventionClassDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InterventionClassDescriptor" + }, + "Diagnosis": { + "paths": { + "diagnosisDescriptor": "$.diagnoses[*].diagnosisDescriptor" + }, + "pathOrder": [ + "diagnosisDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DiagnosisDescriptor" + }, + "PopulationServed": { + "paths": { + "populationServedDescriptor": "$.populationServeds[*].populationServedDescriptor" + }, + "pathOrder": [ + "populationServedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PopulationServedDescriptor" + }, + "AppropriateSex": { + "paths": { + "sexDescriptor": "$.appropriateSexes[*].sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "AppropriateGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.appropriateGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "DeliveryMethod": { + "paths": { + "deliveryMethodDescriptor": "$.deliveryMethodDescriptor" + }, + "pathOrder": [ + "deliveryMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DeliveryMethodDescriptor" + }, + "InterventionPrescription": { + "paths": { + "educationOrganizationId": "$.interventionPrescriptions[*].interventionPrescriptionReference.educationOrganizationId", + "interventionPrescriptionIdentificationCode": "$.interventionPrescriptions[*].interventionPrescriptionReference.interventionPrescriptionIdentificationCode" + }, + "pathOrder": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "InterventionPrescription" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "MeetingTime.StartTime": { + "paths": { + "startTime": "$.meetingTimes[*].startTime" + }, + "pathOrder": [ + "startTime" + ], + "isReference": false + }, + "MeetingTime.EndTime": { + "paths": { + "endTime": "$.meetingTimes[*].endTime" + }, + "pathOrder": [ + "endTime" + ], + "isReference": false + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffs[*].staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "InterventionIdentificationCode": { + "paths": { + "interventionIdentificationCode": "$.interventionIdentificationCode" + }, + "pathOrder": [ + "interventionIdentificationCode" + ], + "isReference": false + }, + "MinDosage": { + "paths": { + "minDosage": "$.minDosage" + }, + "pathOrder": [ + "minDosage" + ], + "isReference": false + }, + "MaxDosage": { + "paths": { + "maxDosage": "$.maxDosage" + }, + "pathOrder": [ + "maxDosage" + ], + "isReference": false + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "interventionIdentificationCode" + ], + "isSubclass": false + }, + "interventionPrescriptions": { + "resourceName": "InterventionPrescription", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.InterventionPrescription", + "description": "This entity represents a formal prescription of an instructional approach focusing on the specific techniques and materials used to teach a given subject. This can be prescribed by academic research, an interventions vendor, or another entity.", + "type": "object", + "properties": { + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "diagnoses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented: individual, small group, whole class, or whole school." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + }, + "minDosage": { + "type": "integer", + "description": "The minimum duration of time in minutes that is recommended for the intervention." + }, + "maxDosage": { + "type": "integer", + "description": "The maximum duration of time in minutes that is recommended for the intervention." + }, + "namespace": { + "type": "string", + "description": "Namespace for the intervention.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "interventionClassDescriptor", + "deliveryMethodDescriptor", + "educationOrganizationReference", + "interventionPrescriptionIdentificationCode" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.InterventionPrescription", + "description": "This entity represents a formal prescription of an instructional approach focusing on the specific techniques and materials used to teach a given subject. This can be prescribed by academic research, an interventions vendor, or another entity.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "diagnoses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented: individual, small group, whole class, or whole school." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + }, + "minDosage": { + "type": "integer", + "description": "The minimum duration of time in minutes that is recommended for the intervention." + }, + "maxDosage": { + "type": "integer", + "description": "The maximum duration of time in minutes that is recommended for the intervention." + }, + "namespace": { + "type": "string", + "description": "Namespace for the intervention.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "interventionClassDescriptor", + "deliveryMethodDescriptor", + "educationOrganizationReference", + "interventionPrescriptionIdentificationCode" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.InterventionPrescription", + "description": "This entity represents a formal prescription of an instructional approach focusing on the specific techniques and materials used to teach a given subject. This can be prescribed by academic research, an interventions vendor, or another entity.", + "type": "object", + "properties": { + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false, + "required": [ + "contentIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "diagnoses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented: individual, small group, whole class, or whole school." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + }, + "minDosage": { + "type": "integer", + "description": "The minimum duration of time in minutes that is recommended for the intervention." + }, + "maxDosage": { + "type": "integer", + "description": "The maximum duration of time in minutes that is recommended for the intervention." + }, + "namespace": { + "type": "string", + "description": "Namespace for the intervention.", + "minLength": 5, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "InterventionPrescriptionIdentificationCode" + ], + "documentPathsMapping": { + "EducationContentSource.EducationContent": { + "paths": { + "contentIdentifier": "$.educationContents[*].educationContentReference.contentIdentifier" + }, + "pathOrder": [ + "contentIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationContent" + }, + "EducationContentSource.LearningResourceMetadataURI": { + "paths": { + "learningResourceMetadataURI": "$.learningResourceMetadataURIs[*].learningResourceMetadataURI" + }, + "pathOrder": [ + "learningResourceMetadataURI" + ], + "isReference": false + }, + "EducationContentSource.URI": { + "paths": { + "uri": "$.uris[*].uri" + }, + "pathOrder": [ + "uri" + ], + "isReference": false + }, + "InterventionClass": { + "paths": { + "interventionClassDescriptor": "$.interventionClassDescriptor" + }, + "pathOrder": [ + "interventionClassDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InterventionClassDescriptor" + }, + "Diagnosis": { + "paths": { + "diagnosisDescriptor": "$.diagnoses[*].diagnosisDescriptor" + }, + "pathOrder": [ + "diagnosisDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DiagnosisDescriptor" + }, + "PopulationServed": { + "paths": { + "populationServedDescriptor": "$.populationServeds[*].populationServedDescriptor" + }, + "pathOrder": [ + "populationServedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PopulationServedDescriptor" + }, + "AppropriateSex": { + "paths": { + "sexDescriptor": "$.appropriateSexes[*].sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "AppropriateGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.appropriateGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "DeliveryMethod": { + "paths": { + "deliveryMethodDescriptor": "$.deliveryMethodDescriptor" + }, + "pathOrder": [ + "deliveryMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DeliveryMethodDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "InterventionPrescriptionIdentificationCode": { + "paths": { + "interventionPrescriptionIdentificationCode": "$.interventionPrescriptionIdentificationCode" + }, + "pathOrder": [ + "interventionPrescriptionIdentificationCode" + ], + "isReference": false + }, + "MinDosage": { + "paths": { + "minDosage": "$.minDosage" + }, + "pathOrder": [ + "minDosage" + ], + "isReference": false + }, + "MaxDosage": { + "paths": { + "maxDosage": "$.maxDosage" + }, + "pathOrder": [ + "maxDosage" + ], + "isReference": false + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ], + "isSubclass": false + }, + "interventionStudies": { + "resourceName": "InterventionStudy", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.InterventionStudy", + "description": "An experimental or quasi-experimental study of an intervention technique.", + "type": "object", + "properties": { + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + }, + "interventionEffectivenesses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "Targeted purpose of the intervention (e.g., attendance issue, dropout risk) for which the effectiveness is measured." + }, + "populationServedDescriptor": { + "type": "string", + "description": "Population for which effectiveness is measured." + }, + "gradeLevelDescriptor": { + "type": "string", + "description": "Grade level for which effectiveness is measured." + }, + "improvementIndex": { + "type": "integer", + "description": "Along a percentile distribution of students, the improvement index represents the change in an average student's percentile rank that is considered to be due to the intervention." + }, + "interventionEffectivenessRatingDescriptor": { + "type": "string", + "description": "An intervention demonstrates effectiveness if the research has shown that the program caused an improvement in outcomes. Values: positive effects, potentially positive effects, mixed effects, potentially negative effects, negative effects, and no discernible effects." + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor", + "populationServedDescriptor", + "gradeLevelDescriptor", + "interventionEffectivenessRatingDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "participants": { + "type": "integer", + "description": "The number of participants observed in the study." + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented: individual, small group, whole class, or whole school." + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "stateAbbreviations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stateAbbreviationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "stateAbbreviationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionStudyIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention study.", + "minLength": 1, + "maxLength": 60 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "interventionPrescriptionReference", + "participants", + "deliveryMethodDescriptor", + "interventionClassDescriptor", + "educationOrganizationReference", + "interventionStudyIdentificationCode" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.InterventionStudy", + "description": "An experimental or quasi-experimental study of an intervention technique.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + }, + "interventionEffectivenesses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "Targeted purpose of the intervention (e.g., attendance issue, dropout risk) for which the effectiveness is measured." + }, + "populationServedDescriptor": { + "type": "string", + "description": "Population for which effectiveness is measured." + }, + "gradeLevelDescriptor": { + "type": "string", + "description": "Grade level for which effectiveness is measured." + }, + "improvementIndex": { + "type": "integer", + "description": "Along a percentile distribution of students, the improvement index represents the change in an average student's percentile rank that is considered to be due to the intervention." + }, + "interventionEffectivenessRatingDescriptor": { + "type": "string", + "description": "An intervention demonstrates effectiveness if the research has shown that the program caused an improvement in outcomes. Values: positive effects, potentially positive effects, mixed effects, potentially negative effects, negative effects, and no discernible effects." + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor", + "populationServedDescriptor", + "gradeLevelDescriptor", + "interventionEffectivenessRatingDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "participants": { + "type": "integer", + "description": "The number of participants observed in the study." + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented: individual, small group, whole class, or whole school." + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "stateAbbreviations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stateAbbreviationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "stateAbbreviationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionStudyIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention study.", + "minLength": 1, + "maxLength": 60 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "interventionPrescriptionReference", + "participants", + "deliveryMethodDescriptor", + "interventionClassDescriptor", + "educationOrganizationReference", + "interventionStudyIdentificationCode" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.InterventionStudy", + "description": "An experimental or quasi-experimental study of an intervention technique.", + "type": "object", + "properties": { + "educationContents": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationContentReference": { + "type": "object", + "properties": { + "contentIdentifier": { + "type": "string", + "description": "A unique identifier for the education content.", + "minLength": 1, + "maxLength": 225 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "educationContentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningResourceMetadataURIs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningResourceMetadataURI": { + "type": "string", + "description": "The URI (typical a URL) pointing to the metadata entry in a LRMI metadata repository, which describes this content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "learningResourceMetadataURI" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "uris": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "The URI (typical a URL) pointing to an education content item.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "uri" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + }, + "interventionEffectivenesses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "Targeted purpose of the intervention (e.g., attendance issue, dropout risk) for which the effectiveness is measured." + }, + "populationServedDescriptor": { + "type": "string", + "description": "Population for which effectiveness is measured." + }, + "gradeLevelDescriptor": { + "type": "string", + "description": "Grade level for which effectiveness is measured." + }, + "improvementIndex": { + "type": "integer", + "description": "Along a percentile distribution of students, the improvement index represents the change in an average student's percentile rank that is considered to be due to the intervention." + }, + "interventionEffectivenessRatingDescriptor": { + "type": "string", + "description": "An intervention demonstrates effectiveness if the research has shown that the program caused an improvement in outcomes. Values: positive effects, potentially positive effects, mixed effects, potentially negative effects, negative effects, and no discernible effects." + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor", + "populationServedDescriptor", + "gradeLevelDescriptor", + "interventionEffectivenessRatingDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "participants": { + "type": "integer", + "description": "The number of participants observed in the study." + }, + "deliveryMethodDescriptor": { + "type": "string", + "description": "The way in which an intervention was implemented: individual, small group, whole class, or whole school." + }, + "interventionClassDescriptor": { + "type": "string", + "description": "The way in which an intervention is used: curriculum, supplement, or practice." + }, + "appropriateGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "populationServeds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "populationServedDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "populationServedDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "appropriateSexes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sexDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sexDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "stateAbbreviations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "stateAbbreviationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "stateAbbreviationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionStudyIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention study.", + "minLength": 1, + "maxLength": 60 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "InterventionStudyIdentificationCode" + ], + "documentPathsMapping": { + "EducationContentSource.EducationContent": { + "paths": { + "contentIdentifier": "$.educationContents[*].educationContentReference.contentIdentifier" + }, + "pathOrder": [ + "contentIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationContent" + }, + "EducationContentSource.LearningResourceMetadataURI": { + "paths": { + "learningResourceMetadataURI": "$.learningResourceMetadataURIs[*].learningResourceMetadataURI" + }, + "pathOrder": [ + "learningResourceMetadataURI" + ], + "isReference": false + }, + "EducationContentSource.URI": { + "paths": { + "uri": "$.uris[*].uri" + }, + "pathOrder": [ + "uri" + ], + "isReference": false + }, + "InterventionPrescription": { + "paths": { + "educationOrganizationId": "$.interventionPrescriptionReference.educationOrganizationId", + "interventionPrescriptionIdentificationCode": "$.interventionPrescriptionReference.interventionPrescriptionIdentificationCode" + }, + "pathOrder": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "InterventionPrescription" + }, + "InterventionEffectiveness.Diagnosis": { + "paths": { + "diagnosisDescriptor": "$.interventionEffectivenesses[*].diagnosisDescriptor" + }, + "pathOrder": [ + "diagnosisDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DiagnosisDescriptor" + }, + "InterventionEffectiveness.PopulationServed": { + "paths": { + "populationServedDescriptor": "$.interventionEffectivenesses[*].populationServedDescriptor" + }, + "pathOrder": [ + "populationServedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PopulationServedDescriptor" + }, + "InterventionEffectiveness.GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.interventionEffectivenesses[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "InterventionEffectiveness.ImprovementIndex": { + "paths": { + "improvementIndex": "$.interventionEffectivenesses[*].improvementIndex" + }, + "pathOrder": [ + "improvementIndex" + ], + "isReference": false + }, + "InterventionEffectiveness.InterventionEffectivenessRating": { + "paths": { + "interventionEffectivenessRatingDescriptor": "$.interventionEffectivenesses[*].interventionEffectivenessRatingDescriptor" + }, + "pathOrder": [ + "interventionEffectivenessRatingDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InterventionEffectivenessRatingDescriptor" + }, + "Participants": { + "paths": { + "participants": "$.participants" + }, + "pathOrder": [ + "participants" + ], + "isReference": false + }, + "DeliveryMethod": { + "paths": { + "deliveryMethodDescriptor": "$.deliveryMethodDescriptor" + }, + "pathOrder": [ + "deliveryMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DeliveryMethodDescriptor" + }, + "InterventionClass": { + "paths": { + "interventionClassDescriptor": "$.interventionClassDescriptor" + }, + "pathOrder": [ + "interventionClassDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InterventionClassDescriptor" + }, + "AppropriateGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.appropriateGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "PopulationServed": { + "paths": { + "populationServedDescriptor": "$.populationServeds[*].populationServedDescriptor" + }, + "pathOrder": [ + "populationServedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PopulationServedDescriptor" + }, + "AppropriateSex": { + "paths": { + "sexDescriptor": "$.appropriateSexes[*].sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.stateAbbreviations[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "InterventionStudyIdentificationCode": { + "paths": { + "interventionStudyIdentificationCode": "$.interventionStudyIdentificationCode" + }, + "pathOrder": [ + "interventionStudyIdentificationCode" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "interventionStudyIdentificationCode" + ], + "isSubclass": false + }, + "learningStandards": { + "resourceName": "LearningStandard", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LearningStandard", + "description": "A statement that describes a specific competency or academic standard.", + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a Learning Standard.", + "minLength": 1, + "maxLength": 60 + }, + "contentStandardName": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 65 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "contentStandardName" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "description": { + "type": "string", + "description": "The text of the statement. The textual content that either describes a specific competency such as \"Apply the Pythagorean Theorem to determine unknown side lengths in right triangles in real-world and mathematical problems in two and three dimensions.\" or describes a less granular group of competencies within the taxonomy of the standards document, e.g. \"Understand and apply the Pythagorean Theorem,\" or \"Geometry\".", + "minLength": 1, + "maxLength": 1024 + }, + "learningStandardItemCode": { + "type": "string", + "description": "A code designated by the promulgating body to identify the statement, e.g. 1.N.3 (usually not globally unique).", + "minLength": 1, + "maxLength": 60 + }, + "contentStandard": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 75 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The person or organization chiefly responsible for the intellectual content of the standard.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 50 + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the standards using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "publicationStatusDescriptor": { + "type": "string", + "description": "The publication status of the document (i.e., Adopted, Draft, Published, Deprecated, Unknown)." + }, + "mandatingEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The beginning of the period during which this learning standard document is intended for use." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end of the period during which this learning standard document is intended for use." + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the statement using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "courseTitle": { + "type": "string", + "description": "The official course title with which this learning standard is associated.", + "minLength": 1, + "maxLength": 60 + }, + "successCriteria": { + "type": "string", + "description": "One or more statements that describes the criteria used by teachers and students to check for attainment of a learning standard. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the learning standard.", + "minLength": 1, + "maxLength": 150 + }, + "parentLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "namespace": { + "type": "string", + "description": "The namespace of the organization or entity who governs the standard. It is recommended the namespaces observe a URI format and begin with a domain name under the governing organization or entity control.", + "minLength": 5, + "maxLength": 255 + }, + "learningStandardCategoryDescriptor": { + "type": "string", + "description": "An additional classification of the type of a specific learning standard." + }, + "learningStandardScopeDescriptor": { + "type": "string", + "description": "Signals the scope of usage the standard. Does not necessarily relate the standard to the governing body." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId", + "description", + "contentStandard", + "gradeLevels", + "academicSubjects", + "namespace" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LearningStandard", + "description": "A statement that describes a specific competency or academic standard.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a Learning Standard.", + "minLength": 1, + "maxLength": 60 + }, + "contentStandardName": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 65 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "contentStandardName" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "description": { + "type": "string", + "description": "The text of the statement. The textual content that either describes a specific competency such as \"Apply the Pythagorean Theorem to determine unknown side lengths in right triangles in real-world and mathematical problems in two and three dimensions.\" or describes a less granular group of competencies within the taxonomy of the standards document, e.g. \"Understand and apply the Pythagorean Theorem,\" or \"Geometry\".", + "minLength": 1, + "maxLength": 1024 + }, + "learningStandardItemCode": { + "type": "string", + "description": "A code designated by the promulgating body to identify the statement, e.g. 1.N.3 (usually not globally unique).", + "minLength": 1, + "maxLength": 60 + }, + "contentStandard": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 75 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The person or organization chiefly responsible for the intellectual content of the standard.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 50 + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the standards using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "publicationStatusDescriptor": { + "type": "string", + "description": "The publication status of the document (i.e., Adopted, Draft, Published, Deprecated, Unknown)." + }, + "mandatingEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The beginning of the period during which this learning standard document is intended for use." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end of the period during which this learning standard document is intended for use." + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the statement using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "courseTitle": { + "type": "string", + "description": "The official course title with which this learning standard is associated.", + "minLength": 1, + "maxLength": 60 + }, + "successCriteria": { + "type": "string", + "description": "One or more statements that describes the criteria used by teachers and students to check for attainment of a learning standard. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the learning standard.", + "minLength": 1, + "maxLength": 150 + }, + "parentLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "namespace": { + "type": "string", + "description": "The namespace of the organization or entity who governs the standard. It is recommended the namespaces observe a URI format and begin with a domain name under the governing organization or entity control.", + "minLength": 5, + "maxLength": 255 + }, + "learningStandardCategoryDescriptor": { + "type": "string", + "description": "An additional classification of the type of a specific learning standard." + }, + "learningStandardScopeDescriptor": { + "type": "string", + "description": "Signals the scope of usage the standard. Does not necessarily relate the standard to the governing body." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "learningStandardId", + "description", + "contentStandard", + "gradeLevels", + "academicSubjects", + "namespace" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LearningStandard", + "description": "A statement that describes a specific competency or academic standard.", + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a Learning Standard.", + "minLength": 1, + "maxLength": 60 + }, + "contentStandardName": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 65 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "contentStandardName" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "description": { + "type": "string", + "description": "The text of the statement. The textual content that either describes a specific competency such as \"Apply the Pythagorean Theorem to determine unknown side lengths in right triangles in real-world and mathematical problems in two and three dimensions.\" or describes a less granular group of competencies within the taxonomy of the standards document, e.g. \"Understand and apply the Pythagorean Theorem,\" or \"Geometry\".", + "minLength": 1, + "maxLength": 1024 + }, + "learningStandardItemCode": { + "type": "string", + "description": "A code designated by the promulgating body to identify the statement, e.g. 1.N.3 (usually not globally unique).", + "minLength": 1, + "maxLength": 60 + }, + "contentStandard": { + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "The name of the content standard, for example Common Core.", + "minLength": 1, + "maxLength": 75 + }, + "authors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "author": { + "type": "string", + "description": "The person or organization chiefly responsible for the intellectual content of the standard.", + "minLength": 1, + "maxLength": 100 + } + }, + "additionalProperties": false, + "required": [ + "author" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "version": { + "type": "string", + "description": "The version identifier for the content.", + "minLength": 1, + "maxLength": 50 + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the standards using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "publicationDate": { + "type": "string", + "format": "date", + "description": "The date on which this content was first published." + }, + "publicationYear": { + "type": "integer", + "description": "The year at which this content was first published." + }, + "publicationStatusDescriptor": { + "type": "string", + "description": "The publication status of the document (i.e., Adopted, Draft, Published, Deprecated, Unknown)." + }, + "mandatingEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The beginning of the period during which this learning standard document is intended for use." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end of the period during which this learning standard document is intended for use." + } + }, + "additionalProperties": false, + "required": [ + "title" + ] + }, + "uri": { + "type": "string", + "description": "An unambiguous reference to the statement using a network-resolvable URI.", + "minLength": 5, + "maxLength": 255 + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "courseTitle": { + "type": "string", + "description": "The official course title with which this learning standard is associated.", + "minLength": 1, + "maxLength": 60 + }, + "successCriteria": { + "type": "string", + "description": "One or more statements that describes the criteria used by teachers and students to check for attainment of a learning standard. This criteria gives clear indications as to the degree to which learning is moving through the Zone or Proximal Development toward independent achievement of the learning standard.", + "minLength": 1, + "maxLength": 150 + }, + "parentLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "namespace": { + "type": "string", + "description": "The namespace of the organization or entity who governs the standard. It is recommended the namespaces observe a URI format and begin with a domain name under the governing organization or entity control.", + "minLength": 5, + "maxLength": 255 + }, + "learningStandardCategoryDescriptor": { + "type": "string", + "description": "An additional classification of the type of a specific learning standard." + }, + "learningStandardScopeDescriptor": { + "type": "string", + "description": "Signals the scope of usage the standard. Does not necessarily relate the standard to the governing body." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "LearningStandardId" + ], + "documentPathsMapping": { + "LearningStandardId": { + "paths": { + "learningStandardId": "$.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": false + }, + "LearningStandardIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "LearningStandardIdentificationCode.ContentStandardName": { + "paths": { + "contentStandardName": "$.identificationCodes[*].contentStandardName" + }, + "pathOrder": [ + "contentStandardName" + ], + "isReference": false + }, + "Description": { + "paths": { + "description": "$.description" + }, + "pathOrder": [ + "description" + ], + "isReference": false + }, + "LearningStandardItemCode": { + "paths": { + "learningStandardItemCode": "$.learningStandardItemCode" + }, + "pathOrder": [ + "learningStandardItemCode" + ], + "isReference": false + }, + "ContentStandard.Title": { + "paths": { + "title": "$.contentStandard.title" + }, + "pathOrder": [ + "title" + ], + "isReference": false + }, + "ContentStandard.Author": { + "paths": { + "author": "$.contentStandard.authors[*].author" + }, + "pathOrder": [ + "author" + ], + "isReference": false + }, + "ContentStandard.Version": { + "paths": { + "version": "$.contentStandard.version" + }, + "pathOrder": [ + "version" + ], + "isReference": false + }, + "ContentStandard.URI": { + "paths": { + "uri": "$.contentStandard.uri" + }, + "pathOrder": [ + "uri" + ], + "isReference": false + }, + "ContentStandard.PublicationDateChoice.PublicationDate": { + "paths": { + "publicationDate": "$.contentStandard.publicationDate" + }, + "pathOrder": [ + "publicationDate" + ], + "isReference": false + }, + "ContentStandard.PublicationDateChoice.PublicationYear": { + "paths": { + "publicationYear": "$.contentStandard.publicationYear" + }, + "pathOrder": [ + "publicationYear" + ], + "isReference": false + }, + "ContentStandard.PublicationStatus": { + "paths": { + "publicationStatusDescriptor": "$.contentStandard.publicationStatusDescriptor" + }, + "pathOrder": [ + "publicationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PublicationStatusDescriptor" + }, + "ContentStandard.MandatingEducationOrganization": { + "paths": { + "educationOrganizationId": "$.contentStandard.mandatingEducationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ContentStandard.BeginDate": { + "paths": { + "beginDate": "$.contentStandard.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "ContentStandard.EndDate": { + "paths": { + "endDate": "$.contentStandard.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "URI": { + "paths": { + "uri": "$.uri" + }, + "pathOrder": [ + "uri" + ], + "isReference": false + }, + "GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.gradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "CourseTitle": { + "paths": { + "courseTitle": "$.courseTitle" + }, + "pathOrder": [ + "courseTitle" + ], + "isReference": false + }, + "SuccessCriteria": { + "paths": { + "successCriteria": "$.successCriteria" + }, + "pathOrder": [ + "successCriteria" + ], + "isReference": false + }, + "ParentLearningStandard": { + "paths": { + "learningStandardId": "$.parentLearningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + }, + "LearningStandardCategory": { + "paths": { + "learningStandardCategoryDescriptor": "$.learningStandardCategoryDescriptor" + }, + "pathOrder": [ + "learningStandardCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LearningStandardCategoryDescriptor" + }, + "LearningStandardScope": { + "paths": { + "learningStandardScopeDescriptor": "$.learningStandardScopeDescriptor" + }, + "pathOrder": [ + "learningStandardScopeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LearningStandardScopeDescriptor" + } + }, + "identityPathOrder": [ + "learningStandardId" + ], + "isSubclass": false + }, + "localAccounts": { + "resourceName": "LocalAccount", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalAccount", + "description": "The set of account codes defined by an education organization for a fiscal year. It provides a formal record of the debits and credits relating to the specific account.", + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + }, + "accountName": { + "type": "string", + "description": "A descriptive name for the account.", + "maxLength": 100 + }, + "chartOfAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "SEA populated code value for the valid combination of account dimensions under which financials are reported.", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tagValue": { + "type": "string", + "description": "The value associated with the reporting tag.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTagDescriptor": { + "type": "string", + "description": "A descriptor used at the dimension and/or chart of account levels to demote specific state needs for reporting." + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationReference", + "fiscalYear", + "chartOfAccountReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalAccount", + "description": "The set of account codes defined by an education organization for a fiscal year. It provides a formal record of the debits and credits relating to the specific account.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + }, + "accountName": { + "type": "string", + "description": "A descriptive name for the account.", + "maxLength": 100 + }, + "chartOfAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "SEA populated code value for the valid combination of account dimensions under which financials are reported.", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tagValue": { + "type": "string", + "description": "The value associated with the reporting tag.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTagDescriptor": { + "type": "string", + "description": "A descriptor used at the dimension and/or chart of account levels to demote specific state needs for reporting." + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "accountIdentifier", + "educationOrganizationReference", + "fiscalYear", + "chartOfAccountReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalAccount", + "description": "The set of account codes defined by an education organization for a fiscal year. It provides a formal record of the debits and credits relating to the specific account.", + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + }, + "accountName": { + "type": "string", + "description": "A descriptive name for the account.", + "maxLength": 100 + }, + "chartOfAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "SEA populated code value for the valid combination of account dimensions under which financials are reported.", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tagValue": { + "type": "string", + "description": "The value associated with the reporting tag.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTagDescriptor": { + "type": "string", + "description": "A descriptor used at the dimension and/or chart of account levels to demote specific state needs for reporting." + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.chartOfAccountReference.fiscalYear", + "targetJsonPath": "$.fiscalYear" + } + ], + "identityFullnames": [ + "AccountIdentifier", + "EducationOrganization", + "FiscalYear" + ], + "documentPathsMapping": { + "AccountIdentifier": { + "paths": { + "accountIdentifier": "$.accountIdentifier" + }, + "pathOrder": [ + "accountIdentifier" + ], + "isReference": false + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "AccountName": { + "paths": { + "accountName": "$.accountName" + }, + "pathOrder": [ + "accountName" + ], + "isReference": false + }, + "ChartOfAccount": { + "paths": { + "accountIdentifier": "$.chartOfAccountReference.accountIdentifier", + "educationOrganizationId": "$.chartOfAccountReference.educationOrganizationId", + "fiscalYear": "$.chartOfAccountReference.fiscalYear" + }, + "pathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ChartOfAccount" + }, + "ReportingTag.TagValue": { + "paths": { + "tagValue": "$.reportingTags[*].tagValue" + }, + "pathOrder": [ + "tagValue" + ], + "isReference": false + }, + "ReportingTag.ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isSubclass": false + }, + "localActuals": { + "resourceName": "LocalActual", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalActual", + "description": "The set of local education agency or charter management organization expense or revenue amounts.", + "type": "object", + "properties": { + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalActual", + "description": "The set of local education agency or charter management organization expense or revenue amounts.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalActual", + "description": "The set of local education agency or charter management organization expense or revenue amounts.", + "type": "object", + "properties": { + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "LocalAccount", + "AsOfDate" + ], + "documentPathsMapping": { + "LocalAccount": { + "paths": { + "accountIdentifier": "$.localAccountReference.accountIdentifier", + "educationOrganizationId": "$.localAccountReference.educationOrganizationId", + "fiscalYear": "$.localAccountReference.fiscalYear" + }, + "pathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalAccount" + }, + "AsOfDate": { + "paths": { + "asOfDate": "$.asOfDate" + }, + "pathOrder": [ + "asOfDate" + ], + "isReference": false + }, + "Amount": { + "paths": { + "amount": "$.amount" + }, + "pathOrder": [ + "amount" + ], + "isReference": false + }, + "FinancialCollection": { + "paths": { + "financialCollectionDescriptor": "$.financialCollectionDescriptor" + }, + "pathOrder": [ + "financialCollectionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "FinancialCollectionDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "asOfDate", + "educationOrganizationId", + "fiscalYear" + ], + "isSubclass": false + }, + "localBudgets": { + "resourceName": "LocalBudget", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalBudget", + "description": "The set of local education agency or charter management organization budget amounts.", + "type": "object", + "properties": { + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalBudget", + "description": "The set of local education agency or charter management organization budget amounts.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalBudget", + "description": "The set of local education agency or charter management organization budget amounts.", + "type": "object", + "properties": { + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "LocalAccount", + "AsOfDate" + ], + "documentPathsMapping": { + "LocalAccount": { + "paths": { + "accountIdentifier": "$.localAccountReference.accountIdentifier", + "educationOrganizationId": "$.localAccountReference.educationOrganizationId", + "fiscalYear": "$.localAccountReference.fiscalYear" + }, + "pathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalAccount" + }, + "AsOfDate": { + "paths": { + "asOfDate": "$.asOfDate" + }, + "pathOrder": [ + "asOfDate" + ], + "isReference": false + }, + "Amount": { + "paths": { + "amount": "$.amount" + }, + "pathOrder": [ + "amount" + ], + "isReference": false + }, + "FinancialCollection": { + "paths": { + "financialCollectionDescriptor": "$.financialCollectionDescriptor" + }, + "pathOrder": [ + "financialCollectionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "FinancialCollectionDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "asOfDate", + "educationOrganizationId", + "fiscalYear" + ], + "isSubclass": false + }, + "localContractedStaffs": { + "resourceName": "LocalContractedStaff", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalContractedStaff", + "description": "The set of local education agency or charter management organization contracted staff amounts.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalContractedStaff", + "description": "The set of local education agency or charter management organization contracted staff amounts.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalContractedStaff", + "description": "The set of local education agency or charter management organization contracted staff amounts.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "LocalAccount", + "AsOfDate" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "LocalAccount": { + "paths": { + "accountIdentifier": "$.localAccountReference.accountIdentifier", + "educationOrganizationId": "$.localAccountReference.educationOrganizationId", + "fiscalYear": "$.localAccountReference.fiscalYear" + }, + "pathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalAccount" + }, + "AsOfDate": { + "paths": { + "asOfDate": "$.asOfDate" + }, + "pathOrder": [ + "asOfDate" + ], + "isReference": false + }, + "Amount": { + "paths": { + "amount": "$.amount" + }, + "pathOrder": [ + "amount" + ], + "isReference": false + }, + "FinancialCollection": { + "paths": { + "financialCollectionDescriptor": "$.financialCollectionDescriptor" + }, + "pathOrder": [ + "financialCollectionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "FinancialCollectionDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "asOfDate", + "educationOrganizationId", + "fiscalYear", + "staffUniqueId" + ], + "isSubclass": false + }, + "localEncumbrances": { + "resourceName": "LocalEncumbrance", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalEncumbrance", + "description": "The set of local education agency or charter management organization encumbrance amounts.", + "type": "object", + "properties": { + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalEncumbrance", + "description": "The set of local education agency or charter management organization encumbrance amounts.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalEncumbrance", + "description": "The set of local education agency or charter management organization encumbrance amounts.", + "type": "object", + "properties": { + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "LocalAccount", + "AsOfDate" + ], + "documentPathsMapping": { + "LocalAccount": { + "paths": { + "accountIdentifier": "$.localAccountReference.accountIdentifier", + "educationOrganizationId": "$.localAccountReference.educationOrganizationId", + "fiscalYear": "$.localAccountReference.fiscalYear" + }, + "pathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalAccount" + }, + "AsOfDate": { + "paths": { + "asOfDate": "$.asOfDate" + }, + "pathOrder": [ + "asOfDate" + ], + "isReference": false + }, + "Amount": { + "paths": { + "amount": "$.amount" + }, + "pathOrder": [ + "amount" + ], + "isReference": false + }, + "FinancialCollection": { + "paths": { + "financialCollectionDescriptor": "$.financialCollectionDescriptor" + }, + "pathOrder": [ + "financialCollectionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "FinancialCollectionDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "asOfDate", + "educationOrganizationId", + "fiscalYear" + ], + "isSubclass": false + }, + "localPayrolls": { + "resourceName": "LocalPayroll", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalPayroll", + "description": "The set of local education agency or charter management organization payroll amounts.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalPayroll", + "description": "The set of local education agency or charter management organization payroll amounts.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "localAccountReference", + "asOfDate", + "amount" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalPayroll", + "description": "The set of local education agency or charter management organization payroll amounts.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "localAccountReference": { + "type": "object", + "properties": { + "accountIdentifier": { + "type": "string", + "description": "Code value for the valid combination of account dimensions by LEA under which financials are reported. ", + "minLength": 1, + "maxLength": 50 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for the account.", + "minimum": 2020, + "maximum": 2040 + } + }, + "additionalProperties": false, + "required": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ] + }, + "asOfDate": { + "type": "string", + "format": "date", + "description": "The date of the reported amount for the account." + }, + "amount": { + "type": "number", + "description": "Current balance for the account." + }, + "financialCollectionDescriptor": { + "type": "string", + "description": "The accounting period or grouping for which the amount is collected." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "LocalAccount", + "AsOfDate" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "LocalAccount": { + "paths": { + "accountIdentifier": "$.localAccountReference.accountIdentifier", + "educationOrganizationId": "$.localAccountReference.educationOrganizationId", + "fiscalYear": "$.localAccountReference.fiscalYear" + }, + "pathOrder": [ + "accountIdentifier", + "educationOrganizationId", + "fiscalYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalAccount" + }, + "AsOfDate": { + "paths": { + "asOfDate": "$.asOfDate" + }, + "pathOrder": [ + "asOfDate" + ], + "isReference": false + }, + "Amount": { + "paths": { + "amount": "$.amount" + }, + "pathOrder": [ + "amount" + ], + "isReference": false + }, + "FinancialCollection": { + "paths": { + "financialCollectionDescriptor": "$.financialCollectionDescriptor" + }, + "pathOrder": [ + "financialCollectionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "FinancialCollectionDescriptor" + } + }, + "identityPathOrder": [ + "accountIdentifier", + "asOfDate", + "educationOrganizationId", + "fiscalYear", + "staffUniqueId" + ], + "isSubclass": false + }, + "locations": { + "resourceName": "Location", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Location", + "description": "This entity represents the physical space where students gather for a particular class/section. The location may be an indoor or outdoor area designated for the purpose of meeting the educational needs of students.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classroomIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a room by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "maximumNumberOfSeats": { + "type": "integer", + "description": "The most number of seats the class can maintain." + }, + "optimalNumberOfSeats": { + "type": "integer", + "description": "The number of seats that is most favorable to the class." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "schoolReference", + "classroomIdentificationCode" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Location", + "description": "This entity represents the physical space where students gather for a particular class/section. The location may be an indoor or outdoor area designated for the purpose of meeting the educational needs of students.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classroomIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a room by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "maximumNumberOfSeats": { + "type": "integer", + "description": "The most number of seats the class can maintain." + }, + "optimalNumberOfSeats": { + "type": "integer", + "description": "The number of seats that is most favorable to the class." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "schoolReference", + "classroomIdentificationCode" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Location", + "description": "This entity represents the physical space where students gather for a particular class/section. The location may be an indoor or outdoor area designated for the purpose of meeting the educational needs of students.", + "type": "object", + "properties": { + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "classroomIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a room by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "maximumNumberOfSeats": { + "type": "integer", + "description": "The most number of seats the class can maintain." + }, + "optimalNumberOfSeats": { + "type": "integer", + "description": "The number of seats that is most favorable to the class." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "School", + "ClassroomIdentificationCode" + ], + "documentPathsMapping": { + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "ClassroomIdentificationCode": { + "paths": { + "classroomIdentificationCode": "$.classroomIdentificationCode" + }, + "pathOrder": [ + "classroomIdentificationCode" + ], + "isReference": false + }, + "MaximumNumberOfSeats": { + "paths": { + "maximumNumberOfSeats": "$.maximumNumberOfSeats" + }, + "pathOrder": [ + "maximumNumberOfSeats" + ], + "isReference": false + }, + "OptimalNumberOfSeats": { + "paths": { + "optimalNumberOfSeats": "$.optimalNumberOfSeats" + }, + "pathOrder": [ + "optimalNumberOfSeats" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "classroomIdentificationCode", + "schoolId" + ], + "isSubclass": false + }, + "objectDimensions": { + "resourceName": "ObjectDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ObjectDimension", + "description": "The NCES object accounting dimension representing an expenditure. Per the NCES definition, this classification is used to describe the service or commodity obtained as the result of a specific expenditure, such as salaries, benefits, tuition reimbursement, and so forth.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account object dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account object dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account object dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ObjectDimension", + "description": "The NCES object accounting dimension representing an expenditure. Per the NCES definition, this classification is used to describe the service or commodity obtained as the result of a specific expenditure, such as salaries, benefits, tuition reimbursement, and so forth.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account object dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account object dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account object dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ObjectDimension", + "description": "The NCES object accounting dimension representing an expenditure. Per the NCES definition, this classification is used to describe the service or commodity obtained as the result of a specific expenditure, such as salaries, benefits, tuition reimbursement, and so forth.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account object dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account object dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account object dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "objectiveAssessments": { + "resourceName": "ObjectiveAssessment", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ObjectiveAssessment", + "description": "This entity represents subtests that assess specific learning objectives.", + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "percentOfAssessment": { + "type": "number", + "description": "The percentage of the assessment that tests this objective." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for this level of objective assessment.", + "minLength": 1, + "maxLength": 100 + }, + "description": { + "type": "string", + "description": "The description of the objective assessment (e.g., vocabulary, measurement, or geometry).", + "minLength": 1, + "maxLength": 1024 + }, + "assessmentItems": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentItemReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + } + }, + "additionalProperties": false, + "required": [ + "assessmentItemReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "parentObjectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The subject area of the objective assessment." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "assessmentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ObjectiveAssessment", + "description": "This entity represents subtests that assess specific learning objectives.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "percentOfAssessment": { + "type": "number", + "description": "The percentage of the assessment that tests this objective." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for this level of objective assessment.", + "minLength": 1, + "maxLength": 100 + }, + "description": { + "type": "string", + "description": "The description of the objective assessment (e.g., vocabulary, measurement, or geometry).", + "minLength": 1, + "maxLength": 1024 + }, + "assessmentItems": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentItemReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + } + }, + "additionalProperties": false, + "required": [ + "assessmentItemReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "parentObjectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The subject area of the objective assessment." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "identificationCode", + "assessmentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ObjectiveAssessment", + "description": "This entity represents subtests that assess specific learning objectives.", + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "maxRawScore": { + "type": "number", + "description": "The maximum raw score achievable across all assessment items that are correct and scored at the maximum." + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "The performance level(s) defined for the assessment." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement of all students. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score required to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score to make the indicated level of performance.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "percentOfAssessment": { + "type": "number", + "description": "The percentage of the assessment that tests this objective." + }, + "nomenclature": { + "type": "string", + "description": "Reflects the specific nomenclature used for this level of objective assessment.", + "minLength": 1, + "maxLength": 100 + }, + "description": { + "type": "string", + "description": "The description of the objective assessment (e.g., vocabulary, measurement, or geometry).", + "minLength": 1, + "maxLength": 1024 + }, + "assessmentItems": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentItemReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + } + }, + "additionalProperties": false, + "required": [ + "assessmentItemReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "parentObjectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "scores": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + }, + "minimumScore": { + "type": "string", + "description": "The minimum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "maximumScore": { + "type": "string", + "description": "The maximum score possible on the assessment.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + } + }, + "additionalProperties": false, + "required": [ + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The subject area of the objective assessment." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.assessmentItems[*].assessmentItemReference.assessmentIdentifier", + "targetJsonPath": "$.assessmentReference.assessmentIdentifier" + }, + { + "sourceJsonPath": "$.assessmentItems[*].assessmentItemReference.namespace", + "targetJsonPath": "$.assessmentReference.namespace" + }, + { + "sourceJsonPath": "$.parentObjectiveAssessmentReference.assessmentIdentifier", + "targetJsonPath": "$.assessmentReference.assessmentIdentifier" + }, + { + "sourceJsonPath": "$.parentObjectiveAssessmentReference.namespace", + "targetJsonPath": "$.assessmentReference.namespace" + } + ], + "identityFullnames": [ + "IdentificationCode", + "Assessment" + ], + "documentPathsMapping": { + "IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "MaxRawScore": { + "paths": { + "maxRawScore": "$.maxRawScore" + }, + "pathOrder": [ + "maxRawScore" + ], + "isReference": false + }, + "AssessmentPerformanceLevel.PerformanceLevel": { + "paths": { + "performanceLevelDescriptor": "$.performanceLevels[*].performanceLevelDescriptor" + }, + "pathOrder": [ + "performanceLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceLevelDescriptor" + }, + "AssessmentPerformanceLevel.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.performanceLevels[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "AssessmentPerformanceLevel.MinimumScore": { + "paths": { + "minimumScore": "$.performanceLevels[*].minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "AssessmentPerformanceLevel.MaximumScore": { + "paths": { + "maximumScore": "$.performanceLevels[*].maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "AssessmentPerformanceLevel.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.performanceLevels[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "AssessmentPerformanceLevel.PerformanceLevelIndicatorName": { + "paths": { + "performanceLevelIndicatorName": "$.performanceLevels[*].performanceLevelIndicatorName" + }, + "pathOrder": [ + "performanceLevelIndicatorName" + ], + "isReference": false + }, + "PercentOfAssessment": { + "paths": { + "percentOfAssessment": "$.percentOfAssessment" + }, + "pathOrder": [ + "percentOfAssessment" + ], + "isReference": false + }, + "Nomenclature": { + "paths": { + "nomenclature": "$.nomenclature" + }, + "pathOrder": [ + "nomenclature" + ], + "isReference": false + }, + "Description": { + "paths": { + "description": "$.description" + }, + "pathOrder": [ + "description" + ], + "isReference": false + }, + "AssessmentItem": { + "paths": { + "assessmentIdentifier": "$.assessmentItems[*].assessmentItemReference.assessmentIdentifier", + "identificationCode": "$.assessmentItems[*].assessmentItemReference.identificationCode", + "namespace": "$.assessmentItems[*].assessmentItemReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "AssessmentItem" + }, + "LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandards[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "ParentObjectiveAssessment": { + "paths": { + "assessmentIdentifier": "$.parentObjectiveAssessmentReference.assessmentIdentifier", + "identificationCode": "$.parentObjectiveAssessmentReference.identificationCode", + "namespace": "$.parentObjectiveAssessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ObjectiveAssessment" + }, + "Assessment": { + "paths": { + "assessmentIdentifier": "$.assessmentReference.assessmentIdentifier", + "namespace": "$.assessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Assessment" + }, + "AssessmentScore.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.scores[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "AssessmentScore.MinimumScore": { + "paths": { + "minimumScore": "$.scores[*].minimumScore" + }, + "pathOrder": [ + "minimumScore" + ], + "isReference": false + }, + "AssessmentScore.MaximumScore": { + "paths": { + "maximumScore": "$.scores[*].maximumScore" + }, + "pathOrder": [ + "maximumScore" + ], + "isReference": false + }, + "AssessmentScore.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.scores[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + } + }, + "identityPathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isSubclass": false + }, + "openStaffPositions": { + "resourceName": "OpenStaffPosition", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OpenStaffPosition", + "description": "This entity represents an open staff position that the education organization is seeking to fill.", + "type": "object", + "properties": { + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract desired for the position." + }, + "staffClassificationDescriptor": { + "type": "string", + "description": "The titles of employment, official status, or rank of education staff." + }, + "positionTitle": { + "type": "string", + "description": "The descriptive name of an individual's position.", + "minLength": 1, + "maxLength": 100 + }, + "requisitionNumber": { + "type": "string", + "description": "The number or identifier assigned to an open staff position, typically a requisition number assigned by Human Resources.", + "minLength": 1, + "maxLength": 20 + }, + "programAssignmentDescriptor": { + "type": "string", + "description": "The name of the program for which the open staff position will be assigned." + }, + "instructionalGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "datePosted": { + "type": "string", + "format": "date", + "description": "Date the open staff position was posted." + }, + "datePostingRemoved": { + "type": "string", + "format": "date", + "description": "The date the posting was removed or filled." + }, + "postingResultDescriptor": { + "type": "string", + "description": "Indication of whether the OpenStaffPosition was filled or retired without filling." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "employmentStatusDescriptor", + "staffClassificationDescriptor", + "requisitionNumber", + "datePosted", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OpenStaffPosition", + "description": "This entity represents an open staff position that the education organization is seeking to fill.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract desired for the position." + }, + "staffClassificationDescriptor": { + "type": "string", + "description": "The titles of employment, official status, or rank of education staff." + }, + "positionTitle": { + "type": "string", + "description": "The descriptive name of an individual's position.", + "minLength": 1, + "maxLength": 100 + }, + "requisitionNumber": { + "type": "string", + "description": "The number or identifier assigned to an open staff position, typically a requisition number assigned by Human Resources.", + "minLength": 1, + "maxLength": 20 + }, + "programAssignmentDescriptor": { + "type": "string", + "description": "The name of the program for which the open staff position will be assigned." + }, + "instructionalGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "datePosted": { + "type": "string", + "format": "date", + "description": "Date the open staff position was posted." + }, + "datePostingRemoved": { + "type": "string", + "format": "date", + "description": "The date the posting was removed or filled." + }, + "postingResultDescriptor": { + "type": "string", + "description": "Indication of whether the OpenStaffPosition was filled or retired without filling." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "employmentStatusDescriptor", + "staffClassificationDescriptor", + "requisitionNumber", + "datePosted", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OpenStaffPosition", + "description": "This entity represents an open staff position that the education organization is seeking to fill.", + "type": "object", + "properties": { + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract desired for the position." + }, + "staffClassificationDescriptor": { + "type": "string", + "description": "The titles of employment, official status, or rank of education staff." + }, + "positionTitle": { + "type": "string", + "description": "The descriptive name of an individual's position.", + "minLength": 1, + "maxLength": 100 + }, + "requisitionNumber": { + "type": "string", + "description": "The number or identifier assigned to an open staff position, typically a requisition number assigned by Human Resources.", + "minLength": 1, + "maxLength": 20 + }, + "programAssignmentDescriptor": { + "type": "string", + "description": "The name of the program for which the open staff position will be assigned." + }, + "instructionalGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "datePosted": { + "type": "string", + "format": "date", + "description": "Date the open staff position was posted." + }, + "datePostingRemoved": { + "type": "string", + "format": "date", + "description": "The date the posting was removed or filled." + }, + "postingResultDescriptor": { + "type": "string", + "description": "Indication of whether the OpenStaffPosition was filled or retired without filling." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "RequisitionNumber", + "EducationOrganization" + ], + "documentPathsMapping": { + "EmploymentStatus": { + "paths": { + "employmentStatusDescriptor": "$.employmentStatusDescriptor" + }, + "pathOrder": [ + "employmentStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EmploymentStatusDescriptor" + }, + "StaffClassification": { + "paths": { + "staffClassificationDescriptor": "$.staffClassificationDescriptor" + }, + "pathOrder": [ + "staffClassificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StaffClassificationDescriptor" + }, + "PositionTitle": { + "paths": { + "positionTitle": "$.positionTitle" + }, + "pathOrder": [ + "positionTitle" + ], + "isReference": false + }, + "RequisitionNumber": { + "paths": { + "requisitionNumber": "$.requisitionNumber" + }, + "pathOrder": [ + "requisitionNumber" + ], + "isReference": false + }, + "ProgramAssignment": { + "paths": { + "programAssignmentDescriptor": "$.programAssignmentDescriptor" + }, + "pathOrder": [ + "programAssignmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgramAssignmentDescriptor" + }, + "InstructionalGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.instructionalGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "DatePosted": { + "paths": { + "datePosted": "$.datePosted" + }, + "pathOrder": [ + "datePosted" + ], + "isReference": false + }, + "DatePostingRemoved": { + "paths": { + "datePostingRemoved": "$.datePostingRemoved" + }, + "pathOrder": [ + "datePostingRemoved" + ], + "isReference": false + }, + "PostingResult": { + "paths": { + "postingResultDescriptor": "$.postingResultDescriptor" + }, + "pathOrder": [ + "postingResultDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PostingResultDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "requisitionNumber" + ], + "isSubclass": false + }, + "operationalUnitDimensions": { + "resourceName": "OperationalUnitDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OperationalUnitDimension", + "description": "The NCES operational unit accounting dimension. This dimension is used to segregate costs by school and operational unit such as physical location, department, or other method.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account operational unit dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account operational unit dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account operational unit dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OperationalUnitDimension", + "description": "The NCES operational unit accounting dimension. This dimension is used to segregate costs by school and operational unit such as physical location, department, or other method.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account operational unit dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account operational unit dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account operational unit dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OperationalUnitDimension", + "description": "The NCES operational unit accounting dimension. This dimension is used to segregate costs by school and operational unit such as physical location, department, or other method.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account operational unit dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account operational unit dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account operational unit dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "people": { + "resourceName": "Person", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Person", + "description": "This entity represents a human being.", + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Person", + "description": "This entity represents a human being.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "personId", + "sourceSystemDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Person", + "description": "This entity represents a human being.", + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "PersonId", + "SourceSystem" + ], + "documentPathsMapping": { + "PersonId": { + "paths": { + "personId": "$.personId" + }, + "pathOrder": [ + "personId" + ], + "isReference": false + }, + "SourceSystem": { + "paths": { + "sourceSystemDescriptor": "$.sourceSystemDescriptor" + }, + "pathOrder": [ + "sourceSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SourceSystemDescriptor" + } + }, + "identityPathOrder": [ + "personId", + "sourceSystemDescriptor" + ], + "isSubclass": false + }, + "postSecondaryEvents": { + "resourceName": "PostSecondaryEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.PostSecondaryEvent", + "description": "This entity captures significant postsecondary events during a student's high school tenure (e.g., FAFSA application or college application, acceptance, and enrollment) or during a student's enrollment at a post-secondary institution.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "The date the event occurred or was recorded." + }, + "postSecondaryEventCategoryDescriptor": { + "type": "string", + "description": "The post secondary event that is logged." + }, + "postSecondaryInstitutionReference": { + "type": "object", + "properties": { + "postSecondaryInstitutionId": { + "type": "integer", + "description": "The ID of the post secondary institution." + } + }, + "additionalProperties": false, + "required": [ + "postSecondaryInstitutionId" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "eventDate", + "postSecondaryEventCategoryDescriptor", + "studentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.PostSecondaryEvent", + "description": "This entity captures significant postsecondary events during a student's high school tenure (e.g., FAFSA application or college application, acceptance, and enrollment) or during a student's enrollment at a post-secondary institution.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "The date the event occurred or was recorded." + }, + "postSecondaryEventCategoryDescriptor": { + "type": "string", + "description": "The post secondary event that is logged." + }, + "postSecondaryInstitutionReference": { + "type": "object", + "properties": { + "postSecondaryInstitutionId": { + "type": "integer", + "description": "The ID of the post secondary institution." + } + }, + "additionalProperties": false, + "required": [ + "postSecondaryInstitutionId" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "eventDate", + "postSecondaryEventCategoryDescriptor", + "studentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.PostSecondaryEvent", + "description": "This entity captures significant postsecondary events during a student's high school tenure (e.g., FAFSA application or college application, acceptance, and enrollment) or during a student's enrollment at a post-secondary institution.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "The date the event occurred or was recorded." + }, + "postSecondaryEventCategoryDescriptor": { + "type": "string", + "description": "The post secondary event that is logged." + }, + "postSecondaryInstitutionReference": { + "type": "object", + "properties": { + "postSecondaryInstitutionId": { + "type": "integer", + "description": "The ID of the post secondary institution." + } + }, + "additionalProperties": false, + "required": [ + "postSecondaryInstitutionId" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EventDate", + "PostSecondaryEventCategory", + "Student" + ], + "documentPathsMapping": { + "EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "PostSecondaryEventCategory": { + "paths": { + "postSecondaryEventCategoryDescriptor": "$.postSecondaryEventCategoryDescriptor" + }, + "pathOrder": [ + "postSecondaryEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PostSecondaryEventCategoryDescriptor" + }, + "PostSecondaryInstitution": { + "paths": { + "postSecondaryInstitutionId": "$.postSecondaryInstitutionReference.postSecondaryInstitutionId" + }, + "pathOrder": [ + "postSecondaryInstitutionId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "PostSecondaryInstitution" + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + } + }, + "identityPathOrder": [ + "eventDate", + "postSecondaryEventCategoryDescriptor", + "studentUniqueId" + ], + "isSubclass": false + }, + "programs": { + "resourceName": "Program", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Program", + "description": "This entity represents any program designed to work in conjunction with, or as a supplement to, the main academic program. Programs may provide instruction, training, services, or benefits through federal, state, or local agencies. Programs may also include organized extracurricular activities for students.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programId": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a program by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 20 + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + }, + "characteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "programCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sponsors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programSponsorDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "programSponsorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationReference", + "programName", + "programTypeDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Program", + "description": "This entity represents any program designed to work in conjunction with, or as a supplement to, the main academic program. Programs may provide instruction, training, services, or benefits through federal, state, or local agencies. Programs may also include organized extracurricular activities for students.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programId": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a program by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 20 + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + }, + "characteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "programCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sponsors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programSponsorDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "programSponsorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationReference", + "programName", + "programTypeDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Program", + "description": "This entity represents any program designed to work in conjunction with, or as a supplement to, the main academic program. Programs may provide instruction, training, services, or benefits through federal, state, or local agencies. Programs may also include organized extracurricular activities for students.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programId": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a program by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 20 + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + }, + "characteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "programCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sponsors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programSponsorDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "programSponsorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "learningStandards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "learningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + } + }, + "additionalProperties": false, + "required": [ + "learningStandardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "ProgramName", + "ProgramType" + ], + "documentPathsMapping": { + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ProgramId": { + "paths": { + "programId": "$.programId" + }, + "pathOrder": [ + "programId" + ], + "isReference": false + }, + "ProgramName": { + "paths": { + "programName": "$.programName" + }, + "pathOrder": [ + "programName" + ], + "isReference": false + }, + "ProgramType": { + "paths": { + "programTypeDescriptor": "$.programTypeDescriptor" + }, + "pathOrder": [ + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgramTypeDescriptor" + }, + "ProgramCharacteristic": { + "paths": { + "programCharacteristicDescriptor": "$.characteristics[*].programCharacteristicDescriptor" + }, + "pathOrder": [ + "programCharacteristicDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgramCharacteristicDescriptor" + }, + "ProgramSponsor": { + "paths": { + "programSponsorDescriptor": "$.sponsors[*].programSponsorDescriptor" + }, + "pathOrder": [ + "programSponsorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgramSponsorDescriptor" + }, + "LearningStandard": { + "paths": { + "learningStandardId": "$.learningStandards[*].learningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isSubclass": false + }, + "programDimensions": { + "resourceName": "ProgramDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ProgramDimension", + "description": "The NCES program accounting dimension. A program is defined by the NCES as a plan of activities and procedures designed to accomplish a predetermined objective or set of objectives. These are often categorized into broad program areas such as regular education, special education, vocational education, other PK-12 instructional, nonpublic school, adult and continuing education, community and junior college education, community services, and co-curricular or extracurricular activities.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account program dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account program dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account program dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ProgramDimension", + "description": "The NCES program accounting dimension. A program is defined by the NCES as a plan of activities and procedures designed to accomplish a predetermined objective or set of objectives. These are often categorized into broad program areas such as regular education, special education, vocational education, other PK-12 instructional, nonpublic school, adult and continuing education, community and junior college education, community services, and co-curricular or extracurricular activities.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account program dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account program dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account program dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ProgramDimension", + "description": "The NCES program accounting dimension. A program is defined by the NCES as a plan of activities and procedures designed to accomplish a predetermined objective or set of objectives. These are often categorized into broad program areas such as regular education, special education, vocational education, other PK-12 instructional, nonpublic school, adult and continuing education, community and junior college education, community services, and co-curricular or extracurricular activities.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account program dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account program dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account program dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "projectDimensions": { + "resourceName": "ProjectDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ProjectDimension", + "description": "The NCES project accounting dimension. The project dimension reporting code permits school districts to accumulate expenditures to meet a variety of specialized reporting requirements at the local, state, and federal levels.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account project dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account project dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account project dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ProjectDimension", + "description": "The NCES project accounting dimension. The project dimension reporting code permits school districts to accumulate expenditures to meet a variety of specialized reporting requirements at the local, state, and federal levels.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account project dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account project dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account project dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ProjectDimension", + "description": "The NCES project accounting dimension. The project dimension reporting code permits school districts to accumulate expenditures to meet a variety of specialized reporting requirements at the local, state, and federal levels.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account project dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account project dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account project dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "reportCards": { + "resourceName": "ReportCard", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ReportCard", + "description": "This educational entity represents the collection of student grades for courses taken during a grading period.", + "type": "object", + "properties": { + "grades": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeReference": { + "type": "object", + "properties": { + "gradeTypeDescriptor": { + "type": "string", + "description": "The type of grade reported (e.g., exam, final, grading period)." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "gradeTypeDescriptor", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "beginDate", + "localCourseCode", + "sessionName", + "sectionIdentifier", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "gradeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentCompetencyObjectives": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentCompetencyObjectiveReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "studentCompetencyObjectiveReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "gradePointAverages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradePointAverageTypeDescriptor": { + "type": "string", + "description": "The system used for calculating the grade point average for an individual." + }, + "isCumulative": { + "type": "boolean", + "description": "Indicator of whether or not the Grade Point Average value is cumulative." + }, + "gradePointAverageValue": { + "type": "number", + "description": "The value of the grade points earned divided by the number of credits attempted." + }, + "maxGradePointAverageValue": { + "type": "number", + "description": "The maximum value for the grade point average." + } + }, + "additionalProperties": false, + "required": [ + "gradePointAverageTypeDescriptor", + "gradePointAverageValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "numberOfDaysAbsent": { + "type": "number", + "description": "The number of days an individual is absent when school is in session during a given reporting period." + }, + "numberOfDaysInAttendance": { + "type": "number", + "description": "The number of days an individual is present when school is in session during a given reporting period." + }, + "numberOfDaysTardy": { + "type": "integer", + "description": "The number of days an individual is tardy during a given reporting period.", + "minimum": 0 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "educationOrganizationReference", + "gradingPeriodReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ReportCard", + "description": "This educational entity represents the collection of student grades for courses taken during a grading period.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "grades": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeReference": { + "type": "object", + "properties": { + "gradeTypeDescriptor": { + "type": "string", + "description": "The type of grade reported (e.g., exam, final, grading period)." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "gradeTypeDescriptor", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "beginDate", + "localCourseCode", + "sessionName", + "sectionIdentifier", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "gradeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentCompetencyObjectives": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentCompetencyObjectiveReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "studentCompetencyObjectiveReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "gradePointAverages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradePointAverageTypeDescriptor": { + "type": "string", + "description": "The system used for calculating the grade point average for an individual." + }, + "isCumulative": { + "type": "boolean", + "description": "Indicator of whether or not the Grade Point Average value is cumulative." + }, + "gradePointAverageValue": { + "type": "number", + "description": "The value of the grade points earned divided by the number of credits attempted." + }, + "maxGradePointAverageValue": { + "type": "number", + "description": "The maximum value for the grade point average." + } + }, + "additionalProperties": false, + "required": [ + "gradePointAverageTypeDescriptor", + "gradePointAverageValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "numberOfDaysAbsent": { + "type": "number", + "description": "The number of days an individual is absent when school is in session during a given reporting period." + }, + "numberOfDaysInAttendance": { + "type": "number", + "description": "The number of days an individual is present when school is in session during a given reporting period." + }, + "numberOfDaysTardy": { + "type": "integer", + "description": "The number of days an individual is tardy during a given reporting period.", + "minimum": 0 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "educationOrganizationReference", + "gradingPeriodReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.ReportCard", + "description": "This educational entity represents the collection of student grades for courses taken during a grading period.", + "type": "object", + "properties": { + "grades": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeReference": { + "type": "object", + "properties": { + "gradeTypeDescriptor": { + "type": "string", + "description": "The type of grade reported (e.g., exam, final, grading period)." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "gradeTypeDescriptor", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "beginDate", + "localCourseCode", + "sessionName", + "sectionIdentifier", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "gradeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentCompetencyObjectives": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentCompetencyObjectiveReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "studentCompetencyObjectiveReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "gradePointAverages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradePointAverageTypeDescriptor": { + "type": "string", + "description": "The system used for calculating the grade point average for an individual." + }, + "isCumulative": { + "type": "boolean", + "description": "Indicator of whether or not the Grade Point Average value is cumulative." + }, + "gradePointAverageValue": { + "type": "number", + "description": "The value of the grade points earned divided by the number of credits attempted." + }, + "maxGradePointAverageValue": { + "type": "number", + "description": "The maximum value for the grade point average." + } + }, + "additionalProperties": false, + "required": [ + "gradePointAverageTypeDescriptor", + "gradePointAverageValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "numberOfDaysAbsent": { + "type": "number", + "description": "The number of days an individual is absent when school is in session during a given reporting period." + }, + "numberOfDaysInAttendance": { + "type": "number", + "description": "The number of days an individual is present when school is in session during a given reporting period." + }, + "numberOfDaysTardy": { + "type": "integer", + "description": "The number of days an individual is tardy during a given reporting period.", + "minimum": 0 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.grades[*].gradeReference.gradingPeriodDescriptor", + "targetJsonPath": "$.gradingPeriodReference.gradingPeriodDescriptor" + }, + { + "sourceJsonPath": "$.grades[*].gradeReference.periodSequence", + "targetJsonPath": "$.gradingPeriodReference.periodSequence" + }, + { + "sourceJsonPath": "$.grades[*].gradeReference.schoolId", + "targetJsonPath": "$.gradingPeriodReference.schoolId" + }, + { + "sourceJsonPath": "$.grades[*].gradeReference.schoolYear", + "targetJsonPath": "$.gradingPeriodReference.schoolYear" + }, + { + "sourceJsonPath": "$.grades[*].gradeReference.studentUniqueId", + "targetJsonPath": "$.studentReference.studentUniqueId" + }, + { + "sourceJsonPath": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.gradingPeriodDescriptor", + "targetJsonPath": "$.gradingPeriodReference.gradingPeriodDescriptor" + }, + { + "sourceJsonPath": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.periodSequence", + "targetJsonPath": "$.gradingPeriodReference.periodSequence" + }, + { + "sourceJsonPath": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.schoolId", + "targetJsonPath": "$.gradingPeriodReference.schoolId" + }, + { + "sourceJsonPath": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.schoolYear", + "targetJsonPath": "$.gradingPeriodReference.schoolYear" + }, + { + "sourceJsonPath": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.studentUniqueId", + "targetJsonPath": "$.studentReference.studentUniqueId" + } + ], + "identityFullnames": [ + "Student", + "EducationOrganization", + "GradingPeriod" + ], + "documentPathsMapping": { + "Grade": { + "paths": { + "beginDate": "$.grades[*].gradeReference.beginDate", + "gradeTypeDescriptor": "$.grades[*].gradeReference.gradeTypeDescriptor", + "gradingPeriodDescriptor": "$.grades[*].gradeReference.gradingPeriodDescriptor", + "localCourseCode": "$.grades[*].gradeReference.localCourseCode", + "periodSequence": "$.grades[*].gradeReference.periodSequence", + "schoolId": "$.grades[*].gradeReference.schoolId", + "schoolYear": "$.grades[*].gradeReference.schoolYear", + "sectionIdentifier": "$.grades[*].gradeReference.sectionIdentifier", + "sessionName": "$.grades[*].gradeReference.sessionName", + "studentUniqueId": "$.grades[*].gradeReference.studentUniqueId" + }, + "pathOrder": [ + "beginDate", + "gradeTypeDescriptor", + "gradingPeriodDescriptor", + "localCourseCode", + "periodSequence", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Grade" + }, + "StudentCompetencyObjective": { + "paths": { + "educationOrganizationId": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.educationOrganizationId", + "gradingPeriodDescriptor": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.gradingPeriodDescriptor", + "objective": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.objective", + "objectiveGradeLevelDescriptor": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.objectiveGradeLevelDescriptor", + "periodSequence": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.periodSequence", + "schoolId": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.schoolId", + "schoolYear": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.schoolYear", + "studentUniqueId": "$.studentCompetencyObjectives[*].studentCompetencyObjectiveReference.studentUniqueId" + }, + "pathOrder": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "objective", + "objectiveGradeLevelDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StudentCompetencyObjective" + }, + "GradePointAverage.GradePointAverageType": { + "paths": { + "gradePointAverageTypeDescriptor": "$.gradePointAverages[*].gradePointAverageTypeDescriptor" + }, + "pathOrder": [ + "gradePointAverageTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradePointAverageTypeDescriptor" + }, + "GradePointAverage.IsCumulative": { + "paths": { + "isCumulative": "$.gradePointAverages[*].isCumulative" + }, + "pathOrder": [ + "isCumulative" + ], + "isReference": false + }, + "GradePointAverage.GradePointAverageValue": { + "paths": { + "gradePointAverageValue": "$.gradePointAverages[*].gradePointAverageValue" + }, + "pathOrder": [ + "gradePointAverageValue" + ], + "isReference": false + }, + "GradePointAverage.MaxGradePointAverageValue": { + "paths": { + "maxGradePointAverageValue": "$.gradePointAverages[*].maxGradePointAverageValue" + }, + "pathOrder": [ + "maxGradePointAverageValue" + ], + "isReference": false + }, + "NumberOfDaysAbsent": { + "paths": { + "numberOfDaysAbsent": "$.numberOfDaysAbsent" + }, + "pathOrder": [ + "numberOfDaysAbsent" + ], + "isReference": false + }, + "NumberOfDaysInAttendance": { + "paths": { + "numberOfDaysInAttendance": "$.numberOfDaysInAttendance" + }, + "pathOrder": [ + "numberOfDaysInAttendance" + ], + "isReference": false + }, + "NumberOfDaysTardy": { + "paths": { + "numberOfDaysTardy": "$.numberOfDaysTardy" + }, + "pathOrder": [ + "numberOfDaysTardy" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "GradingPeriod": { + "paths": { + "gradingPeriodDescriptor": "$.gradingPeriodReference.gradingPeriodDescriptor", + "periodSequence": "$.gradingPeriodReference.periodSequence", + "schoolId": "$.gradingPeriodReference.schoolId", + "schoolYear": "$.gradingPeriodReference.schoolYear" + }, + "pathOrder": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GradingPeriod" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ], + "isSubclass": false + }, + "restraintEvents": { + "resourceName": "RestraintEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.RestraintEvent", + "description": "This event entity represents the instances where a special education student was physically or mechanically restrained due to imminent serious physical harm to themselves or others, imminent serious property destruction or a combination of both imminent serious physical harm to themselves or others and imminent serious property destruction.", + "type": "object", + "properties": { + "restraintEventIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a restraint event by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 36 + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the restraint event." + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting where the RestraintEvent was exercised." + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "restraintEventReasonDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "restraintEventReasonDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "restraintEventIdentifier", + "eventDate", + "studentReference", + "schoolReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.RestraintEvent", + "description": "This event entity represents the instances where a special education student was physically or mechanically restrained due to imminent serious physical harm to themselves or others, imminent serious property destruction or a combination of both imminent serious physical harm to themselves or others and imminent serious property destruction.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "restraintEventIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a restraint event by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 36 + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the restraint event." + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting where the RestraintEvent was exercised." + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "restraintEventReasonDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "restraintEventReasonDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "restraintEventIdentifier", + "eventDate", + "studentReference", + "schoolReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.RestraintEvent", + "description": "This event entity represents the instances where a special education student was physically or mechanically restrained due to imminent serious physical harm to themselves or others, imminent serious property destruction or a combination of both imminent serious physical harm to themselves or others and imminent serious property destruction.", + "type": "object", + "properties": { + "restraintEventIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a restraint event by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 36 + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the restraint event." + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting where the RestraintEvent was exercised." + }, + "reasons": { + "type": "array", + "items": { + "type": "object", + "properties": { + "restraintEventReasonDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "restraintEventReasonDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "RestraintEventIdentifier", + "Student", + "School" + ], + "documentPathsMapping": { + "RestraintEventIdentifier": { + "paths": { + "restraintEventIdentifier": "$.restraintEventIdentifier" + }, + "pathOrder": [ + "restraintEventIdentifier" + ], + "isReference": false + }, + "EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "EducationalEnvironment": { + "paths": { + "educationalEnvironmentDescriptor": "$.educationalEnvironmentDescriptor" + }, + "pathOrder": [ + "educationalEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationalEnvironmentDescriptor" + }, + "RestraintEventReason": { + "paths": { + "restraintEventReasonDescriptor": "$.reasons[*].restraintEventReasonDescriptor" + }, + "pathOrder": [ + "restraintEventReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RestraintEventReasonDescriptor" + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programs[*].programReference.educationOrganizationId", + "programName": "$.programs[*].programReference.programName", + "programTypeDescriptor": "$.programs[*].programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + } + }, + "identityPathOrder": [ + "restraintEventIdentifier", + "schoolId", + "studentUniqueId" + ], + "isSubclass": false + }, + "sections": { + "resourceName": "Section", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Section", + "description": "This entity represents a setting in which organized instruction of course content is provided, in-person or otherwise, to one or more students for a given period of time. A course offering may be offered to more than one section.", + "type": "object", + "properties": { + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "sequenceOfCourse": { + "type": "integer", + "description": "When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1.", + "minimum": 1, + "maximum": 8 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a student receives education and related services." + }, + "mediumOfInstructionDescriptor": { + "type": "string", + "description": "The media through which teachers provide instruction to students and students and teachers communicate about instructional matters." + }, + "populationServedDescriptor": { + "type": "string", + "description": "The type of students the section is offered and tailored to." + }, + "availableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "availableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "availableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "characteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sectionCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "instructionLanguageDescriptor": { + "type": "string", + "description": "The primary language of instruction. If omitted, English is assumed." + }, + "courseOfferingReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "locationSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "locationReference": { + "type": "object", + "properties": { + "classroomIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a room by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classroomIdentificationCode", + "schoolId" + ] + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "courseLevelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "officialAttendancePeriod": { + "type": "boolean", + "description": "Indicator of whether this section is used for official daily attendance. Alternatively, official daily attendance may be tied to a class period." + }, + "sectionName": { + "type": "string", + "description": "A locally-defined name for the section, generally created to make the section more recognizable in informal contexts and generally distinct from the section identifier.", + "minLength": 1, + "maxLength": 100 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "sectionIdentifier", + "courseOfferingReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Section", + "description": "This entity represents a setting in which organized instruction of course content is provided, in-person or otherwise, to one or more students for a given period of time. A course offering may be offered to more than one section.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "sequenceOfCourse": { + "type": "integer", + "description": "When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1.", + "minimum": 1, + "maximum": 8 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a student receives education and related services." + }, + "mediumOfInstructionDescriptor": { + "type": "string", + "description": "The media through which teachers provide instruction to students and students and teachers communicate about instructional matters." + }, + "populationServedDescriptor": { + "type": "string", + "description": "The type of students the section is offered and tailored to." + }, + "availableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "availableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "availableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "characteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sectionCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "instructionLanguageDescriptor": { + "type": "string", + "description": "The primary language of instruction. If omitted, English is assumed." + }, + "courseOfferingReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "locationSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "locationReference": { + "type": "object", + "properties": { + "classroomIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a room by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classroomIdentificationCode", + "schoolId" + ] + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "courseLevelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "officialAttendancePeriod": { + "type": "boolean", + "description": "Indicator of whether this section is used for official daily attendance. Alternatively, official daily attendance may be tied to a class period." + }, + "sectionName": { + "type": "string", + "description": "A locally-defined name for the section, generally created to make the section more recognizable in informal contexts and generally distinct from the section identifier.", + "minLength": 1, + "maxLength": 100 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "sectionIdentifier", + "courseOfferingReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Section", + "description": "This entity represents a setting in which organized instruction of course content is provided, in-person or otherwise, to one or more students for a given period of time. A course offering may be offered to more than one section.", + "type": "object", + "properties": { + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "sequenceOfCourse": { + "type": "integer", + "description": "When a section is part of a sequence of parts for a course, the number of the sequence. If the course has only one part, the value of this section attribute should be 1.", + "minimum": 1, + "maximum": 8 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a student receives education and related services." + }, + "mediumOfInstructionDescriptor": { + "type": "string", + "description": "The media through which teachers provide instruction to students and students and teachers communicate about instructional matters." + }, + "populationServedDescriptor": { + "type": "string", + "description": "The type of students the section is offered and tailored to." + }, + "availableCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "availableCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "availableCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "characteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "sectionCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "instructionLanguageDescriptor": { + "type": "string", + "description": "The primary language of instruction. If omitted, English is assumed." + }, + "courseOfferingReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "locationSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "locationReference": { + "type": "object", + "properties": { + "classroomIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a room by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classroomIdentificationCode", + "schoolId" + ] + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "programs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "programReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "courseLevelCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "courseLevelCharacteristicDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "courseLevelCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "offeredGradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "officialAttendancePeriod": { + "type": "boolean", + "description": "Indicator of whether this section is used for official daily attendance. Alternatively, official daily attendance may be tied to a class period." + }, + "sectionName": { + "type": "string", + "description": "A locally-defined name for the section, generally created to make the section more recognizable in informal contexts and generally distinct from the section identifier.", + "minLength": 1, + "maxLength": 100 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.classPeriods[*].classPeriodReference.schoolId", + "targetJsonPath": "$.courseOfferingReference.schoolId" + } + ], + "identityFullnames": [ + "SectionIdentifier", + "CourseOffering" + ], + "documentPathsMapping": { + "SectionIdentifier": { + "paths": { + "sectionIdentifier": "$.sectionIdentifier" + }, + "pathOrder": [ + "sectionIdentifier" + ], + "isReference": false + }, + "SequenceOfCourse": { + "paths": { + "sequenceOfCourse": "$.sequenceOfCourse" + }, + "pathOrder": [ + "sequenceOfCourse" + ], + "isReference": false + }, + "EducationalEnvironment": { + "paths": { + "educationalEnvironmentDescriptor": "$.educationalEnvironmentDescriptor" + }, + "pathOrder": [ + "educationalEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationalEnvironmentDescriptor" + }, + "MediumOfInstruction": { + "paths": { + "mediumOfInstructionDescriptor": "$.mediumOfInstructionDescriptor" + }, + "pathOrder": [ + "mediumOfInstructionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MediumOfInstructionDescriptor" + }, + "PopulationServed": { + "paths": { + "populationServedDescriptor": "$.populationServedDescriptor" + }, + "pathOrder": [ + "populationServedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PopulationServedDescriptor" + }, + "AvailableCredits.Credits": { + "paths": { + "availableCredits": "$.availableCredits" + }, + "pathOrder": [ + "availableCredits" + ], + "isReference": false + }, + "AvailableCredits.CreditType": { + "paths": { + "availableCreditTypeDescriptor": "$.availableCreditTypeDescriptor" + }, + "pathOrder": [ + "availableCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "AvailableCredits.CreditConversion": { + "paths": { + "availableCreditConversions": "$.availableCreditConversions" + }, + "pathOrder": [ + "availableCreditConversions" + ], + "isReference": false + }, + "SectionCharacteristic": { + "paths": { + "sectionCharacteristicDescriptor": "$.characteristics[*].sectionCharacteristicDescriptor" + }, + "pathOrder": [ + "sectionCharacteristicDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SectionCharacteristicDescriptor" + }, + "InstructionLanguage": { + "paths": { + "instructionLanguageDescriptor": "$.instructionLanguageDescriptor" + }, + "pathOrder": [ + "instructionLanguageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "CourseOffering": { + "paths": { + "localCourseCode": "$.courseOfferingReference.localCourseCode", + "schoolId": "$.courseOfferingReference.schoolId", + "schoolYear": "$.courseOfferingReference.schoolYear", + "sessionName": "$.courseOfferingReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "CourseOffering" + }, + "LocationSchool": { + "paths": { + "schoolId": "$.locationSchoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "Location": { + "paths": { + "classroomIdentificationCode": "$.locationReference.classroomIdentificationCode", + "schoolId": "$.locationReference.schoolId" + }, + "pathOrder": [ + "classroomIdentificationCode", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Location" + }, + "ClassPeriod": { + "paths": { + "classPeriodName": "$.classPeriods[*].classPeriodReference.classPeriodName", + "schoolId": "$.classPeriods[*].classPeriodReference.schoolId" + }, + "pathOrder": [ + "classPeriodName", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ClassPeriod" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programs[*].programReference.educationOrganizationId", + "programName": "$.programs[*].programReference.programName", + "programTypeDescriptor": "$.programs[*].programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "CourseLevelCharacteristic": { + "paths": { + "courseLevelCharacteristicDescriptor": "$.courseLevelCharacteristics[*].courseLevelCharacteristicDescriptor" + }, + "pathOrder": [ + "courseLevelCharacteristicDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CourseLevelCharacteristicDescriptor" + }, + "OfferedGradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.offeredGradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "OfficialAttendancePeriod": { + "paths": { + "officialAttendancePeriod": "$.officialAttendancePeriod" + }, + "pathOrder": [ + "officialAttendancePeriod" + ], + "isReference": false + }, + "SectionName": { + "paths": { + "sectionName": "$.sectionName" + }, + "pathOrder": [ + "sectionName" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isSubclass": false + }, + "sectionAttendanceTakenEvents": { + "resourceName": "SectionAttendanceTakenEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SectionAttendanceTakenEvent", + "description": "Captures attendance taken event for given section.", + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "calendarDateReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "date": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the calendar event." + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear", + "date" + ] + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "The date the section attendance taken event was submitted, which could be a different date than the instructional day." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "sectionReference", + "calendarDateReference", + "eventDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SectionAttendanceTakenEvent", + "description": "Captures attendance taken event for given section.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "calendarDateReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "date": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the calendar event." + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear", + "date" + ] + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "The date the section attendance taken event was submitted, which could be a different date than the instructional day." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "sectionReference", + "calendarDateReference", + "eventDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SectionAttendanceTakenEvent", + "description": "Captures attendance taken event for given section.", + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "calendarDateReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "date": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the calendar event." + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear", + "date" + ] + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "The date the section attendance taken event was submitted, which could be a different date than the instructional day." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.calendarDateReference.schoolId", + "targetJsonPath": "$.sectionReference.schoolId" + }, + { + "sourceJsonPath": "$.calendarDateReference.schoolYear", + "targetJsonPath": "$.sectionReference.schoolYear" + } + ], + "identityFullnames": [ + "Section", + "CalendarDate" + ], + "documentPathsMapping": { + "Section": { + "paths": { + "localCourseCode": "$.sectionReference.localCourseCode", + "schoolId": "$.sectionReference.schoolId", + "schoolYear": "$.sectionReference.schoolYear", + "sectionIdentifier": "$.sectionReference.sectionIdentifier", + "sessionName": "$.sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + }, + "CalendarDate": { + "paths": { + "calendarCode": "$.calendarDateReference.calendarCode", + "date": "$.calendarDateReference.date", + "schoolId": "$.calendarDateReference.schoolId", + "schoolYear": "$.calendarDateReference.schoolYear" + }, + "pathOrder": [ + "calendarCode", + "date", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "CalendarDate" + }, + "EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + } + }, + "identityPathOrder": [ + "calendarCode", + "date", + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isSubclass": false + }, + "sessions": { + "resourceName": "Session", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Session", + "description": "A term in the school year, generally a unit of time into which courses are scheduled, instruction occurs and by which credits are awarded. Sessions may be interrupted by vacations or other events.", + "type": "object", + "properties": { + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the first day of the session." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day and year of the last day of the session." + }, + "termDescriptor": { + "type": "string", + "description": "An descriptor value indicating the term." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "The total number of instructional days in the school calendar.", + "minimum": 0 + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "gradingPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicWeeks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicWeekReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "weekIdentifier": { + "type": "string", + "description": "The school label for the week.", + "minLength": 5, + "maxLength": 80 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "weekIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "academicWeekReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "sessionName", + "schoolYearTypeReference", + "beginDate", + "endDate", + "termDescriptor", + "totalInstructionalDays", + "schoolReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Session", + "description": "A term in the school year, generally a unit of time into which courses are scheduled, instruction occurs and by which credits are awarded. Sessions may be interrupted by vacations or other events.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the first day of the session." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day and year of the last day of the session." + }, + "termDescriptor": { + "type": "string", + "description": "An descriptor value indicating the term." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "The total number of instructional days in the school calendar.", + "minimum": 0 + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "gradingPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicWeeks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicWeekReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "weekIdentifier": { + "type": "string", + "description": "The school label for the week.", + "minLength": 5, + "maxLength": 80 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "weekIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "academicWeekReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "sessionName", + "schoolYearTypeReference", + "beginDate", + "endDate", + "termDescriptor", + "totalInstructionalDays", + "schoolReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Session", + "description": "A term in the school year, generally a unit of time into which courses are scheduled, instruction occurs and by which credits are awarded. Sessions may be interrupted by vacations or other events.", + "type": "object", + "properties": { + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the first day of the session." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day and year of the last day of the session." + }, + "termDescriptor": { + "type": "string", + "description": "An descriptor value indicating the term." + }, + "totalInstructionalDays": { + "type": "integer", + "description": "The total number of instructional days in the school calendar.", + "minimum": 0 + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "gradingPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicWeeks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicWeekReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "weekIdentifier": { + "type": "string", + "description": "The school label for the week.", + "minLength": 5, + "maxLength": 80 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "weekIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "academicWeekReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.gradingPeriods[*].gradingPeriodReference.schoolYear", + "targetJsonPath": "$.schoolYearTypeReference.schoolYear" + }, + { + "sourceJsonPath": "$.gradingPeriods[*].gradingPeriodReference.schoolId", + "targetJsonPath": "$.schoolReference.schoolId" + } + ], + "identityFullnames": [ + "SessionName", + "SchoolYear", + "School" + ], + "documentPathsMapping": { + "SessionName": { + "paths": { + "sessionName": "$.sessionName" + }, + "pathOrder": [ + "sessionName" + ], + "isReference": false + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Term": { + "paths": { + "termDescriptor": "$.termDescriptor" + }, + "pathOrder": [ + "termDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TermDescriptor" + }, + "TotalInstructionalDays": { + "paths": { + "totalInstructionalDays": "$.totalInstructionalDays" + }, + "pathOrder": [ + "totalInstructionalDays" + ], + "isReference": false + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "GradingPeriod": { + "paths": { + "gradingPeriodDescriptor": "$.gradingPeriods[*].gradingPeriodReference.gradingPeriodDescriptor", + "periodSequence": "$.gradingPeriods[*].gradingPeriodReference.periodSequence", + "schoolId": "$.gradingPeriods[*].gradingPeriodReference.schoolId", + "schoolYear": "$.gradingPeriods[*].gradingPeriodReference.schoolYear" + }, + "pathOrder": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GradingPeriod" + }, + "AcademicWeek": { + "paths": { + "schoolId": "$.academicWeeks[*].academicWeekReference.schoolId", + "weekIdentifier": "$.academicWeeks[*].academicWeekReference.weekIdentifier" + }, + "pathOrder": [ + "schoolId", + "weekIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "AcademicWeek" + } + }, + "identityPathOrder": [ + "schoolId", + "schoolYear", + "sessionName" + ], + "isSubclass": false + }, + "sourceDimensions": { + "resourceName": "SourceDimension", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SourceDimension", + "description": "The NCES source dimension. This dimension is used to segregate costs by school and operational unit such as physical location, department, or other method.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account source dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account source dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account source dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "code", + "fiscalYear" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SourceDimension", + "description": "The NCES source dimension. This dimension is used to segregate costs by school and operational unit such as physical location, department, or other method.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "code": { + "type": "string", + "description": "The code representation of the account source dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account source dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account source dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "code", + "fiscalYear" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SourceDimension", + "description": "The NCES source dimension. This dimension is used to segregate costs by school and operational unit such as physical location, department, or other method.", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "The code representation of the account source dimension.", + "minLength": 1, + "maxLength": 16 + }, + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the account source dimension is valid.", + "minimum": 2020, + "maximum": 2040 + }, + "codeName": { + "type": "string", + "description": "A description of the account source dimension.", + "minLength": 1, + "maxLength": 100 + }, + "reportingTags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportingTagDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "reportingTagDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Code", + "FiscalYear" + ], + "documentPathsMapping": { + "Code": { + "paths": { + "code": "$.code" + }, + "pathOrder": [ + "code" + ], + "isReference": false + }, + "FiscalYear": { + "paths": { + "fiscalYear": "$.fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "CodeName": { + "paths": { + "codeName": "$.codeName" + }, + "pathOrder": [ + "codeName" + ], + "isReference": false + }, + "ReportingTag": { + "paths": { + "reportingTagDescriptor": "$.reportingTags[*].reportingTagDescriptor" + }, + "pathOrder": [ + "reportingTagDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReportingTagDescriptor" + } + }, + "identityPathOrder": [ + "code", + "fiscalYear" + ], + "isSubclass": false + }, + "staffs": { + "resourceName": "Staff", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Staff", + "description": "This entity represents an individual who performs specified activities for any public or private education institution or agency that provides instructional and/or support services to students or staff at the early childhood level through high school completion.", + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a staff member by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "staffIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a staff member." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the staff Identification Code.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "staffIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "A person's gender." + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was born." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "hispanicLatinoEthnicity": { + "type": "boolean", + "description": "An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"" + }, + "races": { + "type": "array", + "items": { + "type": "object", + "properties": { + "raceDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "raceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "citizenshipStatusDescriptor": { + "type": "string", + "description": "An indicator of whether or not the person is a U.S. citizen." + }, + "visas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "visaDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "visaDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false + }, + "minItems": 0, + "uniqueItems": false + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "highestCompletedLevelOfEducationDescriptor": { + "type": "string", + "description": "The extent of formal instruction an individual has received (e.g., the highest grade in school completed or its equivalent or the highest degree received)." + }, + "yearsOfPriorProfessionalExperience": { + "type": "number", + "description": "The total number of years that an individual has previously held a similar professional position in one or more education institutions prior to the current school year." + }, + "yearsOfPriorTeachingExperience": { + "type": "number", + "description": "The total number of years that an individual has previously held a teaching position in one or more education institutions prior to the current school year." + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "highlyQualifiedTeacher": { + "type": "boolean", + "description": "An indication of whether a teacher is classified as highly qualified for his/her assignment according to state definition. This attribute indicates the teacher is highly qualified for ALL Sections being taught." + }, + "recognitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "recognitionTypeDescriptor": { + "type": "string", + "description": "The nature of recognition given to the individual for accomplishments in a co-curricular, or extra-curricular activity." + }, + "recognitionDescription": { + "type": "string", + "description": "A description of the type of recognition earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "recognitionAwardDate": { + "type": "string", + "format": "date", + "description": "The date the recognition was awarded or earned." + }, + "recognitionAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the recognition expires." + } + }, + "additionalProperties": false, + "required": [ + "recognitionTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "credentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "credentialReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "tribalAffiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tribalAffiliationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "tribalAffiliationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "ancestryEthnicOrigins": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ancestryEthnicOriginDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "ancestryEthnicOriginDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId", + "firstName", + "lastSurname" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Staff", + "description": "This entity represents an individual who performs specified activities for any public or private education institution or agency that provides instructional and/or support services to students or staff at the early childhood level through high school completion.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a staff member by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "staffIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a staff member." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the staff Identification Code.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "staffIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "A person's gender." + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was born." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "hispanicLatinoEthnicity": { + "type": "boolean", + "description": "An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"" + }, + "races": { + "type": "array", + "items": { + "type": "object", + "properties": { + "raceDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "raceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "citizenshipStatusDescriptor": { + "type": "string", + "description": "An indicator of whether or not the person is a U.S. citizen." + }, + "visas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "visaDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "visaDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false + }, + "minItems": 0, + "uniqueItems": false + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "highestCompletedLevelOfEducationDescriptor": { + "type": "string", + "description": "The extent of formal instruction an individual has received (e.g., the highest grade in school completed or its equivalent or the highest degree received)." + }, + "yearsOfPriorProfessionalExperience": { + "type": "number", + "description": "The total number of years that an individual has previously held a similar professional position in one or more education institutions prior to the current school year." + }, + "yearsOfPriorTeachingExperience": { + "type": "number", + "description": "The total number of years that an individual has previously held a teaching position in one or more education institutions prior to the current school year." + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "highlyQualifiedTeacher": { + "type": "boolean", + "description": "An indication of whether a teacher is classified as highly qualified for his/her assignment according to state definition. This attribute indicates the teacher is highly qualified for ALL Sections being taught." + }, + "recognitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "recognitionTypeDescriptor": { + "type": "string", + "description": "The nature of recognition given to the individual for accomplishments in a co-curricular, or extra-curricular activity." + }, + "recognitionDescription": { + "type": "string", + "description": "A description of the type of recognition earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "recognitionAwardDate": { + "type": "string", + "format": "date", + "description": "The date the recognition was awarded or earned." + }, + "recognitionAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the recognition expires." + } + }, + "additionalProperties": false, + "required": [ + "recognitionTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "credentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "credentialReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "tribalAffiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tribalAffiliationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "tribalAffiliationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "ancestryEthnicOrigins": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ancestryEthnicOriginDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "ancestryEthnicOriginDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffUniqueId", + "firstName", + "lastSurname" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Staff", + "description": "This entity represents an individual who performs specified activities for any public or private education institution or agency that provides instructional and/or support services to students or staff at the early childhood level through high school completion.", + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a staff member by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "staffIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a staff member." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the staff Identification Code.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "staffIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "A person's gender." + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was born." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "hispanicLatinoEthnicity": { + "type": "boolean", + "description": "An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"" + }, + "races": { + "type": "array", + "items": { + "type": "object", + "properties": { + "raceDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "raceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "citizenshipStatusDescriptor": { + "type": "string", + "description": "An indicator of whether or not the person is a U.S. citizen." + }, + "visas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "visaDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "visaDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false + }, + "minItems": 0, + "uniqueItems": false + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "highestCompletedLevelOfEducationDescriptor": { + "type": "string", + "description": "The extent of formal instruction an individual has received (e.g., the highest grade in school completed or its equivalent or the highest degree received)." + }, + "yearsOfPriorProfessionalExperience": { + "type": "number", + "description": "The total number of years that an individual has previously held a similar professional position in one or more education institutions prior to the current school year." + }, + "yearsOfPriorTeachingExperience": { + "type": "number", + "description": "The total number of years that an individual has previously held a teaching position in one or more education institutions prior to the current school year." + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "highlyQualifiedTeacher": { + "type": "boolean", + "description": "An indication of whether a teacher is classified as highly qualified for his/her assignment according to state definition. This attribute indicates the teacher is highly qualified for ALL Sections being taught." + }, + "recognitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "recognitionTypeDescriptor": { + "type": "string", + "description": "The nature of recognition given to the individual for accomplishments in a co-curricular, or extra-curricular activity." + }, + "recognitionDescription": { + "type": "string", + "description": "A description of the type of recognition earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "recognitionAwardDate": { + "type": "string", + "format": "date", + "description": "The date the recognition was awarded or earned." + }, + "recognitionAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the recognition expires." + } + }, + "additionalProperties": false, + "required": [ + "recognitionTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "credentials": { + "type": "array", + "items": { + "type": "object", + "properties": { + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + } + }, + "additionalProperties": false, + "required": [ + "credentialReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "tribalAffiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tribalAffiliationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "tribalAffiliationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "ancestryEthnicOrigins": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ancestryEthnicOriginDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "ancestryEthnicOriginDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "StaffUniqueId" + ], + "documentPathsMapping": { + "StaffUniqueId": { + "paths": { + "staffUniqueId": "$.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": false + }, + "StaffIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "StaffIdentificationCode.StaffIdentificationSystem": { + "paths": { + "staffIdentificationSystemDescriptor": "$.identificationCodes[*].staffIdentificationSystemDescriptor" + }, + "pathOrder": [ + "staffIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StaffIdentificationSystemDescriptor" + }, + "StaffIdentificationCode.AssigningOrganizationIdentificationCode": { + "paths": { + "assigningOrganizationIdentificationCode": "$.identificationCodes[*].assigningOrganizationIdentificationCode" + }, + "pathOrder": [ + "assigningOrganizationIdentificationCode" + ], + "isReference": false + }, + "Name.PersonalTitlePrefix": { + "paths": { + "personalTitlePrefix": "$.personalTitlePrefix" + }, + "pathOrder": [ + "personalTitlePrefix" + ], + "isReference": false + }, + "Name.FirstName": { + "paths": { + "firstName": "$.firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "Name.MiddleName": { + "paths": { + "middleName": "$.middleName" + }, + "pathOrder": [ + "middleName" + ], + "isReference": false + }, + "Name.LastSurname": { + "paths": { + "lastSurname": "$.lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "Name.GenerationCodeSuffix": { + "paths": { + "generationCodeSuffix": "$.generationCodeSuffix" + }, + "pathOrder": [ + "generationCodeSuffix" + ], + "isReference": false + }, + "Name.MaidenName": { + "paths": { + "maidenName": "$.maidenName" + }, + "pathOrder": [ + "maidenName" + ], + "isReference": false + }, + "Name.PreferredFirstName": { + "paths": { + "preferredFirstName": "$.preferredFirstName" + }, + "pathOrder": [ + "preferredFirstName" + ], + "isReference": false + }, + "Name.PreferredLastSurname": { + "paths": { + "preferredLastSurname": "$.preferredLastSurname" + }, + "pathOrder": [ + "preferredLastSurname" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.DocumentTitle": { + "paths": { + "documentTitle": "$.personalIdentificationDocuments[*].documentTitle" + }, + "pathOrder": [ + "documentTitle" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.PersonalInformationVerification": { + "paths": { + "personalInformationVerificationDescriptor": "$.personalIdentificationDocuments[*].personalInformationVerificationDescriptor" + }, + "pathOrder": [ + "personalInformationVerificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PersonalInformationVerificationDescriptor" + }, + "Name.PersonalIdentificationDocument.DocumentExpirationDate": { + "paths": { + "documentExpirationDate": "$.personalIdentificationDocuments[*].documentExpirationDate" + }, + "pathOrder": [ + "documentExpirationDate" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerDocumentIdentificationCode": { + "paths": { + "issuerDocumentIdentificationCode": "$.personalIdentificationDocuments[*].issuerDocumentIdentificationCode" + }, + "pathOrder": [ + "issuerDocumentIdentificationCode" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerName": { + "paths": { + "issuerName": "$.personalIdentificationDocuments[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerCountry": { + "paths": { + "issuerCountryDescriptor": "$.personalIdentificationDocuments[*].issuerCountryDescriptor" + }, + "pathOrder": [ + "issuerCountryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "Name.PersonalIdentificationDocument.IdentificationDocumentUse": { + "paths": { + "identificationDocumentUseDescriptor": "$.personalIdentificationDocuments[*].identificationDocumentUseDescriptor" + }, + "pathOrder": [ + "identificationDocumentUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IdentificationDocumentUseDescriptor" + }, + "OtherName.PersonalTitlePrefix": { + "paths": { + "personalTitlePrefix": "$.otherNames[*].personalTitlePrefix" + }, + "pathOrder": [ + "personalTitlePrefix" + ], + "isReference": false + }, + "OtherName.FirstName": { + "paths": { + "firstName": "$.otherNames[*].firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "OtherName.MiddleName": { + "paths": { + "middleName": "$.otherNames[*].middleName" + }, + "pathOrder": [ + "middleName" + ], + "isReference": false + }, + "OtherName.LastSurname": { + "paths": { + "lastSurname": "$.otherNames[*].lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "OtherName.GenerationCodeSuffix": { + "paths": { + "generationCodeSuffix": "$.otherNames[*].generationCodeSuffix" + }, + "pathOrder": [ + "generationCodeSuffix" + ], + "isReference": false + }, + "OtherName.OtherNameType": { + "paths": { + "otherNameTypeDescriptor": "$.otherNames[*].otherNameTypeDescriptor" + }, + "pathOrder": [ + "otherNameTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OtherNameTypeDescriptor" + }, + "Sex": { + "paths": { + "sexDescriptor": "$.sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "BirthDate": { + "paths": { + "birthDate": "$.birthDate" + }, + "pathOrder": [ + "birthDate" + ], + "isReference": false + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Telephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.telephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "Telephone.TelephoneNumberType": { + "paths": { + "telephoneNumberTypeDescriptor": "$.telephones[*].telephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "telephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TelephoneNumberTypeDescriptor" + }, + "Telephone.OrderOfPriority": { + "paths": { + "orderOfPriority": "$.telephones[*].orderOfPriority" + }, + "pathOrder": [ + "orderOfPriority" + ], + "isReference": false + }, + "Telephone.TextMessageCapabilityIndicator": { + "paths": { + "textMessageCapabilityIndicator": "$.telephones[*].textMessageCapabilityIndicator" + }, + "pathOrder": [ + "textMessageCapabilityIndicator" + ], + "isReference": false + }, + "Telephone.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.telephones[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "ElectronicMail.ElectronicMailAddress": { + "paths": { + "electronicMailAddress": "$.electronicMails[*].electronicMailAddress" + }, + "pathOrder": [ + "electronicMailAddress" + ], + "isReference": false + }, + "ElectronicMail.ElectronicMailType": { + "paths": { + "electronicMailTypeDescriptor": "$.electronicMails[*].electronicMailTypeDescriptor" + }, + "pathOrder": [ + "electronicMailTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ElectronicMailTypeDescriptor" + }, + "ElectronicMail.PrimaryEmailAddressIndicator": { + "paths": { + "primaryEmailAddressIndicator": "$.electronicMails[*].primaryEmailAddressIndicator" + }, + "pathOrder": [ + "primaryEmailAddressIndicator" + ], + "isReference": false + }, + "ElectronicMail.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.electronicMails[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "HispanicLatinoEthnicity": { + "paths": { + "hispanicLatinoEthnicity": "$.hispanicLatinoEthnicity" + }, + "pathOrder": [ + "hispanicLatinoEthnicity" + ], + "isReference": false + }, + "Race": { + "paths": { + "raceDescriptor": "$.races[*].raceDescriptor" + }, + "pathOrder": [ + "raceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RaceDescriptor" + }, + "Citizenship.CitizenshipStatus": { + "paths": { + "citizenshipStatusDescriptor": "$.citizenshipStatusDescriptor" + }, + "pathOrder": [ + "citizenshipStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CitizenshipStatusDescriptor" + }, + "Citizenship.Visa": { + "paths": { + "visaDescriptor": "$.visas[*].visaDescriptor" + }, + "pathOrder": [ + "visaDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "VisaDescriptor" + }, + "Citizenship.IdentificationDocument.DocumentTitle": { + "paths": { + "documentTitle": "$.identificationDocuments[*].documentTitle" + }, + "pathOrder": [ + "documentTitle" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.PersonalInformationVerification": { + "paths": { + "personalInformationVerificationDescriptor": "$.identificationDocuments[*].personalInformationVerificationDescriptor" + }, + "pathOrder": [ + "personalInformationVerificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PersonalInformationVerificationDescriptor" + }, + "Citizenship.IdentificationDocument.DocumentExpirationDate": { + "paths": { + "documentExpirationDate": "$.identificationDocuments[*].documentExpirationDate" + }, + "pathOrder": [ + "documentExpirationDate" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.IssuerDocumentIdentificationCode": { + "paths": { + "issuerDocumentIdentificationCode": "$.identificationDocuments[*].issuerDocumentIdentificationCode" + }, + "pathOrder": [ + "issuerDocumentIdentificationCode" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.IssuerName": { + "paths": { + "issuerName": "$.identificationDocuments[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.IssuerCountry": { + "paths": { + "issuerCountryDescriptor": "$.identificationDocuments[*].issuerCountryDescriptor" + }, + "pathOrder": [ + "issuerCountryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "Citizenship.IdentificationDocument.IdentificationDocumentUse": { + "paths": { + "identificationDocumentUseDescriptor": "$.identificationDocuments[*].identificationDocumentUseDescriptor" + }, + "pathOrder": [ + "identificationDocumentUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IdentificationDocumentUseDescriptor" + }, + "Language.Language": { + "paths": { + "languageDescriptor": "$.languages[*].languageDescriptor" + }, + "pathOrder": [ + "languageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "Language.LanguageUse": { + "paths": { + "languageUseDescriptor": "$.languages[*].uses[*].languageUseDescriptor" + }, + "pathOrder": [ + "languageUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageUseDescriptor" + }, + "HighestCompletedLevelOfEducation": { + "paths": { + "highestCompletedLevelOfEducationDescriptor": "$.highestCompletedLevelOfEducationDescriptor" + }, + "pathOrder": [ + "highestCompletedLevelOfEducationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LevelOfEducationDescriptor" + }, + "YearsOfPriorProfessionalExperience": { + "paths": { + "yearsOfPriorProfessionalExperience": "$.yearsOfPriorProfessionalExperience" + }, + "pathOrder": [ + "yearsOfPriorProfessionalExperience" + ], + "isReference": false + }, + "YearsOfPriorTeachingExperience": { + "paths": { + "yearsOfPriorTeachingExperience": "$.yearsOfPriorTeachingExperience" + }, + "pathOrder": [ + "yearsOfPriorTeachingExperience" + ], + "isReference": false + }, + "LoginId": { + "paths": { + "loginId": "$.loginId" + }, + "pathOrder": [ + "loginId" + ], + "isReference": false + }, + "HighlyQualifiedTeacher": { + "paths": { + "highlyQualifiedTeacher": "$.highlyQualifiedTeacher" + }, + "pathOrder": [ + "highlyQualifiedTeacher" + ], + "isReference": false + }, + "Recognition.Achievement.AchievementTitle": { + "paths": { + "achievementTitle": "$.recognitions[*].achievementTitle" + }, + "pathOrder": [ + "achievementTitle" + ], + "isReference": false + }, + "Recognition.Achievement.AchievementCategory": { + "paths": { + "achievementCategoryDescriptor": "$.recognitions[*].achievementCategoryDescriptor" + }, + "pathOrder": [ + "achievementCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AchievementCategoryDescriptor" + }, + "Recognition.Achievement.AchievementCategorySystem": { + "paths": { + "achievementCategorySystem": "$.recognitions[*].achievementCategorySystem" + }, + "pathOrder": [ + "achievementCategorySystem" + ], + "isReference": false + }, + "Recognition.Achievement.IssuerName": { + "paths": { + "issuerName": "$.recognitions[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Recognition.Achievement.IssuerOriginURL": { + "paths": { + "issuerOriginURL": "$.recognitions[*].issuerOriginURL" + }, + "pathOrder": [ + "issuerOriginURL" + ], + "isReference": false + }, + "Recognition.Achievement.Criteria": { + "paths": { + "criteria": "$.recognitions[*].criteria" + }, + "pathOrder": [ + "criteria" + ], + "isReference": false + }, + "Recognition.Achievement.CriteriaURL": { + "paths": { + "criteriaURL": "$.recognitions[*].criteriaURL" + }, + "pathOrder": [ + "criteriaURL" + ], + "isReference": false + }, + "Recognition.Achievement.EvidenceStatement": { + "paths": { + "evidenceStatement": "$.recognitions[*].evidenceStatement" + }, + "pathOrder": [ + "evidenceStatement" + ], + "isReference": false + }, + "Recognition.Achievement.ImageURL": { + "paths": { + "imageURL": "$.recognitions[*].imageURL" + }, + "pathOrder": [ + "imageURL" + ], + "isReference": false + }, + "Recognition.RecognitionType": { + "paths": { + "recognitionTypeDescriptor": "$.recognitions[*].recognitionTypeDescriptor" + }, + "pathOrder": [ + "recognitionTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RecognitionTypeDescriptor" + }, + "Recognition.RecognitionDescription": { + "paths": { + "recognitionDescription": "$.recognitions[*].recognitionDescription" + }, + "pathOrder": [ + "recognitionDescription" + ], + "isReference": false + }, + "Recognition.RecognitionAwardDate": { + "paths": { + "recognitionAwardDate": "$.recognitions[*].recognitionAwardDate" + }, + "pathOrder": [ + "recognitionAwardDate" + ], + "isReference": false + }, + "Recognition.RecognitionAwardExpiresDate": { + "paths": { + "recognitionAwardExpiresDate": "$.recognitions[*].recognitionAwardExpiresDate" + }, + "pathOrder": [ + "recognitionAwardExpiresDate" + ], + "isReference": false + }, + "Credential": { + "paths": { + "credentialIdentifier": "$.credentials[*].credentialReference.credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor": "$.credentials[*].credentialReference.stateOfIssueStateAbbreviationDescriptor" + }, + "pathOrder": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Credential" + }, + "TribalAffiliation": { + "paths": { + "tribalAffiliationDescriptor": "$.tribalAffiliations[*].tribalAffiliationDescriptor" + }, + "pathOrder": [ + "tribalAffiliationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TribalAffiliationDescriptor" + }, + "Person": { + "paths": { + "personId": "$.personReference.personId", + "sourceSystemDescriptor": "$.personReference.sourceSystemDescriptor" + }, + "pathOrder": [ + "personId", + "sourceSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Person" + }, + "AncestryEthnicOrigin": { + "paths": { + "ancestryEthnicOriginDescriptor": "$.ancestryEthnicOrigins[*].ancestryEthnicOriginDescriptor" + }, + "pathOrder": [ + "ancestryEthnicOriginDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AncestryEthnicOriginDescriptor" + } + }, + "identityPathOrder": [ + "staffUniqueId" + ], + "isSubclass": false + }, + "staffAbsenceEvents": { + "resourceName": "StaffAbsenceEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffAbsenceEvent", + "description": "This event entity represents the recording of the dates of staff absence.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this leave event." + }, + "absenceEventCategoryDescriptor": { + "type": "string", + "description": "The code describing the type of absence." + }, + "absenceEventReason": { + "type": "string", + "description": "Expanded reason for the staff absence.", + "minLength": 1, + "maxLength": 40 + }, + "hoursAbsent": { + "type": "number", + "description": "The hours the staff was absent, if not the entire working day." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "eventDate", + "absenceEventCategoryDescriptor", + "staffReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffAbsenceEvent", + "description": "This event entity represents the recording of the dates of staff absence.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this leave event." + }, + "absenceEventCategoryDescriptor": { + "type": "string", + "description": "The code describing the type of absence." + }, + "absenceEventReason": { + "type": "string", + "description": "Expanded reason for the staff absence.", + "minLength": 1, + "maxLength": 40 + }, + "hoursAbsent": { + "type": "number", + "description": "The hours the staff was absent, if not the entire working day." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "eventDate", + "absenceEventCategoryDescriptor", + "staffReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffAbsenceEvent", + "description": "This event entity represents the recording of the dates of staff absence.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this leave event." + }, + "absenceEventCategoryDescriptor": { + "type": "string", + "description": "The code describing the type of absence." + }, + "absenceEventReason": { + "type": "string", + "description": "Expanded reason for the staff absence.", + "minLength": 1, + "maxLength": 40 + }, + "hoursAbsent": { + "type": "number", + "description": "The hours the staff was absent, if not the entire working day." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EventDate", + "AbsenceEventCategory", + "Staff" + ], + "documentPathsMapping": { + "EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "AbsenceEventCategory": { + "paths": { + "absenceEventCategoryDescriptor": "$.absenceEventCategoryDescriptor" + }, + "pathOrder": [ + "absenceEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AbsenceEventCategoryDescriptor" + }, + "AbsenceEventReason": { + "paths": { + "absenceEventReason": "$.absenceEventReason" + }, + "pathOrder": [ + "absenceEventReason" + ], + "isReference": false + }, + "HoursAbsent": { + "paths": { + "hoursAbsent": "$.hoursAbsent" + }, + "pathOrder": [ + "hoursAbsent" + ], + "isReference": false + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + } + }, + "identityPathOrder": [ + "absenceEventCategoryDescriptor", + "eventDate", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffLeaves": { + "resourceName": "StaffLeave", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffLeave", + "description": "This entity represents the recording of the dates of staff leave (e.g., sick leave, personal time, vacation).", + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The begin date of the staff leave." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date of the staff leave." + }, + "staffLeaveEventCategoryDescriptor": { + "type": "string", + "description": "The code describing the type of leave taken." + }, + "reason": { + "type": "string", + "description": "Expanded reason for the staff leave.", + "minLength": 1, + "maxLength": 40 + }, + "substituteAssigned": { + "type": "boolean", + "description": "Indicator of whether a substitute was assigned during the period of staff leave." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "beginDate", + "staffLeaveEventCategoryDescriptor", + "staffReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffLeave", + "description": "This entity represents the recording of the dates of staff leave (e.g., sick leave, personal time, vacation).", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The begin date of the staff leave." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date of the staff leave." + }, + "staffLeaveEventCategoryDescriptor": { + "type": "string", + "description": "The code describing the type of leave taken." + }, + "reason": { + "type": "string", + "description": "Expanded reason for the staff leave.", + "minLength": 1, + "maxLength": 40 + }, + "substituteAssigned": { + "type": "boolean", + "description": "Indicator of whether a substitute was assigned during the period of staff leave." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "beginDate", + "staffLeaveEventCategoryDescriptor", + "staffReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffLeave", + "description": "This entity represents the recording of the dates of staff leave (e.g., sick leave, personal time, vacation).", + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The begin date of the staff leave." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date of the staff leave." + }, + "staffLeaveEventCategoryDescriptor": { + "type": "string", + "description": "The code describing the type of leave taken." + }, + "reason": { + "type": "string", + "description": "Expanded reason for the staff leave.", + "minLength": 1, + "maxLength": 40 + }, + "substituteAssigned": { + "type": "boolean", + "description": "Indicator of whether a substitute was assigned during the period of staff leave." + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "StaffLeaveEventCategory", + "Staff" + ], + "documentPathsMapping": { + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "StaffLeaveEventCategory": { + "paths": { + "staffLeaveEventCategoryDescriptor": "$.staffLeaveEventCategoryDescriptor" + }, + "pathOrder": [ + "staffLeaveEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StaffLeaveEventCategoryDescriptor" + }, + "Reason": { + "paths": { + "reason": "$.reason" + }, + "pathOrder": [ + "reason" + ], + "isReference": false + }, + "SubstituteAssigned": { + "paths": { + "substituteAssigned": "$.substituteAssigned" + }, + "pathOrder": [ + "substituteAssigned" + ], + "isReference": false + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + } + }, + "identityPathOrder": [ + "beginDate", + "staffLeaveEventCategoryDescriptor", + "staffUniqueId" + ], + "isSubclass": false + }, + "students": { + "resourceName": "Student", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Student", + "description": "This entity represents an individual for whom instruction, services, and/or care are provided in an early childhood, elementary, or secondary educational program under the jurisdiction of a school, education agency or other institution or program. A student is a person who has been enrolled in a school or other educational institution.", + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was born." + }, + "birthCity": { + "type": "string", + "description": "The city the student was born in.", + "minLength": 2, + "maxLength": 30 + }, + "birthStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born." + }, + "birthInternationalProvince": { + "type": "string", + "description": "For students born outside of the U.S., the Province or jurisdiction in which an individual is born.", + "minLength": 1, + "maxLength": 150 + }, + "birthCountryDescriptor": { + "type": "string", + "description": "The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "dateEnteredUS": { + "type": "string", + "format": "date", + "description": "For students born outside of the U.S., the date the student entered the U.S." + }, + "multipleBirthStatus": { + "type": "boolean", + "description": "Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)" + }, + "birthSexDescriptor": { + "type": "string", + "description": "A person's gender at birth." + }, + "citizenshipStatusDescriptor": { + "type": "string", + "description": "An indicator of whether or not the person is a U.S. citizen." + }, + "visas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "visaDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "visaDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId", + "firstName", + "lastSurname", + "birthDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Student", + "description": "This entity represents an individual for whom instruction, services, and/or care are provided in an early childhood, elementary, or secondary educational program under the jurisdiction of a school, education agency or other institution or program. A student is a person who has been enrolled in a school or other educational institution.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was born." + }, + "birthCity": { + "type": "string", + "description": "The city the student was born in.", + "minLength": 2, + "maxLength": 30 + }, + "birthStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born." + }, + "birthInternationalProvince": { + "type": "string", + "description": "For students born outside of the U.S., the Province or jurisdiction in which an individual is born.", + "minLength": 1, + "maxLength": 150 + }, + "birthCountryDescriptor": { + "type": "string", + "description": "The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "dateEnteredUS": { + "type": "string", + "format": "date", + "description": "For students born outside of the U.S., the date the student entered the U.S." + }, + "multipleBirthStatus": { + "type": "boolean", + "description": "Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)" + }, + "birthSexDescriptor": { + "type": "string", + "description": "A person's gender at birth." + }, + "citizenshipStatusDescriptor": { + "type": "string", + "description": "An indicator of whether or not the person is a U.S. citizen." + }, + "visas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "visaDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "visaDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentUniqueId", + "firstName", + "lastSurname", + "birthDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Student", + "description": "This entity represents an individual for whom instruction, services, and/or care are provided in an early childhood, elementary, or secondary educational program under the jurisdiction of a school, education agency or other institution or program. A student is a person who has been enrolled in a school or other educational institution.", + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "maidenName": { + "type": "string", + "description": "The individual's maiden name.", + "minLength": 1, + "maxLength": 75 + }, + "preferredFirstName": { + "type": "string", + "description": "The first name the individual prefers, if different from their legal first name", + "minLength": 1, + "maxLength": 75 + }, + "preferredLastSurname": { + "type": "string", + "description": "The last name the individual prefers, if different from their legal last name", + "minLength": 1, + "maxLength": 75 + }, + "personalIdentificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false, + "required": [ + "personalInformationVerificationDescriptor", + "identificationDocumentUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "otherNames": { + "type": "array", + "items": { + "type": "object", + "properties": { + "personalTitlePrefix": { + "type": "string", + "description": "A prefix used to denote the title, degree, position, or seniority of the individual.", + "minLength": 1, + "maxLength": 30 + }, + "firstName": { + "type": "string", + "description": "A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.", + "minLength": 1, + "maxLength": 75 + }, + "middleName": { + "type": "string", + "description": "A secondary name given to an individual at birth, baptism, or during another naming ceremony.", + "minLength": 1, + "maxLength": 75 + }, + "lastSurname": { + "type": "string", + "description": "The name borne in common by members of a family.", + "minLength": 1, + "maxLength": 75 + }, + "generationCodeSuffix": { + "type": "string", + "description": "An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).", + "minLength": 1, + "maxLength": 10 + }, + "otherNameTypeDescriptor": { + "type": "string", + "description": "The types of alternate names for an individual." + } + }, + "additionalProperties": false, + "required": [ + "firstName", + "lastSurname", + "otherNameTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was born." + }, + "birthCity": { + "type": "string", + "description": "The city the student was born in.", + "minLength": 2, + "maxLength": 30 + }, + "birthStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born." + }, + "birthInternationalProvince": { + "type": "string", + "description": "For students born outside of the U.S., the Province or jurisdiction in which an individual is born.", + "minLength": 1, + "maxLength": 150 + }, + "birthCountryDescriptor": { + "type": "string", + "description": "The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "dateEnteredUS": { + "type": "string", + "format": "date", + "description": "For students born outside of the U.S., the date the student entered the U.S." + }, + "multipleBirthStatus": { + "type": "boolean", + "description": "Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)" + }, + "birthSexDescriptor": { + "type": "string", + "description": "A person's gender at birth." + }, + "citizenshipStatusDescriptor": { + "type": "string", + "description": "An indicator of whether or not the person is a U.S. citizen." + }, + "visas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "visaDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "visaDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationDocuments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "documentTitle": { + "type": "string", + "description": "The title of the document given by the issuer.", + "minLength": 1, + "maxLength": 60 + }, + "personalInformationVerificationDescriptor": { + "type": "string", + "description": "The category of the document relative to its purpose." + }, + "documentExpirationDate": { + "type": "string", + "format": "date", + "description": "The day when the document expires, if null then never expires." + }, + "issuerDocumentIdentificationCode": { + "type": "string", + "description": "The unique identifier on the issuer's identification system.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "Name of the entity or institution that issued the document.", + "minLength": 1, + "maxLength": 150 + }, + "issuerCountryDescriptor": { + "type": "string", + "description": "Country of origin of the document. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "identificationDocumentUseDescriptor": { + "type": "string", + "description": "The primary function of the document used for establishing identity." + } + }, + "additionalProperties": false + }, + "minItems": 0, + "uniqueItems": false + }, + "personReference": { + "type": "object", + "properties": { + "personId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a person.", + "minLength": 1, + "maxLength": 32 + }, + "sourceSystemDescriptor": { + "type": "string", + "description": "This descriptor defines the originating record source system for the person." + } + }, + "additionalProperties": false, + "required": [ + "personId", + "sourceSystemDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "StudentUniqueId" + ], + "documentPathsMapping": { + "StudentUniqueId": { + "paths": { + "studentUniqueId": "$.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": false + }, + "Name.PersonalTitlePrefix": { + "paths": { + "personalTitlePrefix": "$.personalTitlePrefix" + }, + "pathOrder": [ + "personalTitlePrefix" + ], + "isReference": false + }, + "Name.FirstName": { + "paths": { + "firstName": "$.firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "Name.MiddleName": { + "paths": { + "middleName": "$.middleName" + }, + "pathOrder": [ + "middleName" + ], + "isReference": false + }, + "Name.LastSurname": { + "paths": { + "lastSurname": "$.lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "Name.GenerationCodeSuffix": { + "paths": { + "generationCodeSuffix": "$.generationCodeSuffix" + }, + "pathOrder": [ + "generationCodeSuffix" + ], + "isReference": false + }, + "Name.MaidenName": { + "paths": { + "maidenName": "$.maidenName" + }, + "pathOrder": [ + "maidenName" + ], + "isReference": false + }, + "Name.PreferredFirstName": { + "paths": { + "preferredFirstName": "$.preferredFirstName" + }, + "pathOrder": [ + "preferredFirstName" + ], + "isReference": false + }, + "Name.PreferredLastSurname": { + "paths": { + "preferredLastSurname": "$.preferredLastSurname" + }, + "pathOrder": [ + "preferredLastSurname" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.DocumentTitle": { + "paths": { + "documentTitle": "$.personalIdentificationDocuments[*].documentTitle" + }, + "pathOrder": [ + "documentTitle" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.PersonalInformationVerification": { + "paths": { + "personalInformationVerificationDescriptor": "$.personalIdentificationDocuments[*].personalInformationVerificationDescriptor" + }, + "pathOrder": [ + "personalInformationVerificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PersonalInformationVerificationDescriptor" + }, + "Name.PersonalIdentificationDocument.DocumentExpirationDate": { + "paths": { + "documentExpirationDate": "$.personalIdentificationDocuments[*].documentExpirationDate" + }, + "pathOrder": [ + "documentExpirationDate" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerDocumentIdentificationCode": { + "paths": { + "issuerDocumentIdentificationCode": "$.personalIdentificationDocuments[*].issuerDocumentIdentificationCode" + }, + "pathOrder": [ + "issuerDocumentIdentificationCode" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerName": { + "paths": { + "issuerName": "$.personalIdentificationDocuments[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Name.PersonalIdentificationDocument.IssuerCountry": { + "paths": { + "issuerCountryDescriptor": "$.personalIdentificationDocuments[*].issuerCountryDescriptor" + }, + "pathOrder": [ + "issuerCountryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "Name.PersonalIdentificationDocument.IdentificationDocumentUse": { + "paths": { + "identificationDocumentUseDescriptor": "$.personalIdentificationDocuments[*].identificationDocumentUseDescriptor" + }, + "pathOrder": [ + "identificationDocumentUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IdentificationDocumentUseDescriptor" + }, + "OtherName.PersonalTitlePrefix": { + "paths": { + "personalTitlePrefix": "$.otherNames[*].personalTitlePrefix" + }, + "pathOrder": [ + "personalTitlePrefix" + ], + "isReference": false + }, + "OtherName.FirstName": { + "paths": { + "firstName": "$.otherNames[*].firstName" + }, + "pathOrder": [ + "firstName" + ], + "isReference": false + }, + "OtherName.MiddleName": { + "paths": { + "middleName": "$.otherNames[*].middleName" + }, + "pathOrder": [ + "middleName" + ], + "isReference": false + }, + "OtherName.LastSurname": { + "paths": { + "lastSurname": "$.otherNames[*].lastSurname" + }, + "pathOrder": [ + "lastSurname" + ], + "isReference": false + }, + "OtherName.GenerationCodeSuffix": { + "paths": { + "generationCodeSuffix": "$.otherNames[*].generationCodeSuffix" + }, + "pathOrder": [ + "generationCodeSuffix" + ], + "isReference": false + }, + "OtherName.OtherNameType": { + "paths": { + "otherNameTypeDescriptor": "$.otherNames[*].otherNameTypeDescriptor" + }, + "pathOrder": [ + "otherNameTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OtherNameTypeDescriptor" + }, + "BirthData.BirthDate": { + "paths": { + "birthDate": "$.birthDate" + }, + "pathOrder": [ + "birthDate" + ], + "isReference": false + }, + "BirthData.BirthCity": { + "paths": { + "birthCity": "$.birthCity" + }, + "pathOrder": [ + "birthCity" + ], + "isReference": false + }, + "BirthData.BirthStateAbbreviation": { + "paths": { + "birthStateAbbreviationDescriptor": "$.birthStateAbbreviationDescriptor" + }, + "pathOrder": [ + "birthStateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "BirthData.BirthInternationalProvince": { + "paths": { + "birthInternationalProvince": "$.birthInternationalProvince" + }, + "pathOrder": [ + "birthInternationalProvince" + ], + "isReference": false + }, + "BirthData.BirthCountry": { + "paths": { + "birthCountryDescriptor": "$.birthCountryDescriptor" + }, + "pathOrder": [ + "birthCountryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "BirthData.DateEnteredUS": { + "paths": { + "dateEnteredUS": "$.dateEnteredUS" + }, + "pathOrder": [ + "dateEnteredUS" + ], + "isReference": false + }, + "BirthData.MultipleBirthStatus": { + "paths": { + "multipleBirthStatus": "$.multipleBirthStatus" + }, + "pathOrder": [ + "multipleBirthStatus" + ], + "isReference": false + }, + "BirthData.BirthSex": { + "paths": { + "birthSexDescriptor": "$.birthSexDescriptor" + }, + "pathOrder": [ + "birthSexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "Citizenship.CitizenshipStatus": { + "paths": { + "citizenshipStatusDescriptor": "$.citizenshipStatusDescriptor" + }, + "pathOrder": [ + "citizenshipStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CitizenshipStatusDescriptor" + }, + "Citizenship.Visa": { + "paths": { + "visaDescriptor": "$.visas[*].visaDescriptor" + }, + "pathOrder": [ + "visaDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "VisaDescriptor" + }, + "Citizenship.IdentificationDocument.DocumentTitle": { + "paths": { + "documentTitle": "$.identificationDocuments[*].documentTitle" + }, + "pathOrder": [ + "documentTitle" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.PersonalInformationVerification": { + "paths": { + "personalInformationVerificationDescriptor": "$.identificationDocuments[*].personalInformationVerificationDescriptor" + }, + "pathOrder": [ + "personalInformationVerificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PersonalInformationVerificationDescriptor" + }, + "Citizenship.IdentificationDocument.DocumentExpirationDate": { + "paths": { + "documentExpirationDate": "$.identificationDocuments[*].documentExpirationDate" + }, + "pathOrder": [ + "documentExpirationDate" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.IssuerDocumentIdentificationCode": { + "paths": { + "issuerDocumentIdentificationCode": "$.identificationDocuments[*].issuerDocumentIdentificationCode" + }, + "pathOrder": [ + "issuerDocumentIdentificationCode" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.IssuerName": { + "paths": { + "issuerName": "$.identificationDocuments[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Citizenship.IdentificationDocument.IssuerCountry": { + "paths": { + "issuerCountryDescriptor": "$.identificationDocuments[*].issuerCountryDescriptor" + }, + "pathOrder": [ + "issuerCountryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "Citizenship.IdentificationDocument.IdentificationDocumentUse": { + "paths": { + "identificationDocumentUseDescriptor": "$.identificationDocuments[*].identificationDocumentUseDescriptor" + }, + "pathOrder": [ + "identificationDocumentUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IdentificationDocumentUseDescriptor" + }, + "Person": { + "paths": { + "personId": "$.personReference.personId", + "sourceSystemDescriptor": "$.personReference.sourceSystemDescriptor" + }, + "pathOrder": [ + "personId", + "sourceSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Person" + } + }, + "identityPathOrder": [ + "studentUniqueId" + ], + "isSubclass": false + }, + "studentAcademicRecords": { + "resourceName": "StudentAcademicRecord", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAcademicRecord", + "description": "This educational entity represents the cumulative record of academic achievement for a student.", + "type": "object", + "properties": { + "cumulativeEarnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "cumulativeEarnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "cumulativeEarnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "cumulativeAttemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "cumulativeAttemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "cumulativeAttemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "classRanking": { + "type": "object", + "properties": { + "classRank": { + "type": "integer", + "description": "The academic rank of a student in relation to his or her graduating class (e.g., 1st, 2nd, 3rd)." + }, + "totalNumberInClass": { + "type": "integer", + "description": "The total number of students in the student's graduating class." + }, + "percentageRanking": { + "type": "integer", + "description": "The academic percentage rank of a student in relation to his or her graduating class (e.g., 95%, 80%, 50%)." + }, + "classRankingDate": { + "type": "string", + "format": "date", + "description": "Date class ranking was determined." + } + }, + "additionalProperties": false, + "required": [ + "classRank", + "totalNumberInClass" + ] + }, + "academicHonors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "academicHonorCategoryDescriptor": { + "type": "string", + "description": "A designation of the type of academic distinctions earned by or awarded to the individual." + }, + "honorDescription": { + "type": "string", + "description": "A description of the type of academic distinctions earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "honorAwardDate": { + "type": "string", + "format": "date", + "description": "The date the honor was awarded." + }, + "honorAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the honor expires." + } + }, + "additionalProperties": false, + "required": [ + "academicHonorCategoryDescriptor", + "honorDescription" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "recognitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "recognitionTypeDescriptor": { + "type": "string", + "description": "The nature of recognition given to the individual for accomplishments in a co-curricular, or extra-curricular activity." + }, + "recognitionDescription": { + "type": "string", + "description": "A description of the type of recognition earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "recognitionAwardDate": { + "type": "string", + "format": "date", + "description": "The date the recognition was awarded or earned." + }, + "recognitionAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the recognition expires." + } + }, + "additionalProperties": false, + "required": [ + "recognitionTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "projectedGraduationDate": { + "type": "string", + "format": "date", + "description": "The month and year the student is projected to graduate." + }, + "sessionEarnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "sessionEarnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "sessionEarnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "sessionAttemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "sessionAttemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "sessionAttemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "gradePointAverages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradePointAverageTypeDescriptor": { + "type": "string", + "description": "The system used for calculating the grade point average for an individual." + }, + "isCumulative": { + "type": "boolean", + "description": "Indicator of whether or not the Grade Point Average value is cumulative." + }, + "gradePointAverageValue": { + "type": "number", + "description": "The value of the grade points earned divided by the number of credits attempted." + }, + "maxGradePointAverageValue": { + "type": "number", + "description": "The maximum value for the grade point average." + } + }, + "additionalProperties": false, + "required": [ + "gradePointAverageTypeDescriptor", + "gradePointAverageValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "diplomas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "diplomaAwardDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student met graduation requirements and was awarded a diploma." + }, + "diplomaLevelDescriptor": { + "type": "string", + "description": "The level of diploma/credential that is awarded to a student in recognition of completion of the curricular requirements." + }, + "diplomaTypeDescriptor": { + "type": "string", + "description": "The type of diploma/credential that is awarded to a student in recognition of his/her completion of the curricular requirements." + }, + "cteCompleter": { + "type": "boolean", + "description": "Indicated a student who reached a state-defined threshold of vocational education and who attained a high school diploma or its recognized state equivalent or GED." + }, + "diplomaDescription": { + "type": "string", + "description": "The description of the diploma given to the student for accomplishments.", + "minLength": 1, + "maxLength": 80 + }, + "diplomaAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the diploma expires." + } + }, + "additionalProperties": false, + "required": [ + "diplomaAwardDate", + "diplomaTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "termDescriptor": { + "type": "string", + "description": "The term for the session during the school year." + }, + "reportCards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportCardReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "reportCardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "educationOrganizationReference", + "schoolYearTypeReference", + "termDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAcademicRecord", + "description": "This educational entity represents the cumulative record of academic achievement for a student.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "cumulativeEarnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "cumulativeEarnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "cumulativeEarnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "cumulativeAttemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "cumulativeAttemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "cumulativeAttemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "classRanking": { + "type": "object", + "properties": { + "classRank": { + "type": "integer", + "description": "The academic rank of a student in relation to his or her graduating class (e.g., 1st, 2nd, 3rd)." + }, + "totalNumberInClass": { + "type": "integer", + "description": "The total number of students in the student's graduating class." + }, + "percentageRanking": { + "type": "integer", + "description": "The academic percentage rank of a student in relation to his or her graduating class (e.g., 95%, 80%, 50%)." + }, + "classRankingDate": { + "type": "string", + "format": "date", + "description": "Date class ranking was determined." + } + }, + "additionalProperties": false, + "required": [ + "classRank", + "totalNumberInClass" + ] + }, + "academicHonors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "academicHonorCategoryDescriptor": { + "type": "string", + "description": "A designation of the type of academic distinctions earned by or awarded to the individual." + }, + "honorDescription": { + "type": "string", + "description": "A description of the type of academic distinctions earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "honorAwardDate": { + "type": "string", + "format": "date", + "description": "The date the honor was awarded." + }, + "honorAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the honor expires." + } + }, + "additionalProperties": false, + "required": [ + "academicHonorCategoryDescriptor", + "honorDescription" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "recognitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "recognitionTypeDescriptor": { + "type": "string", + "description": "The nature of recognition given to the individual for accomplishments in a co-curricular, or extra-curricular activity." + }, + "recognitionDescription": { + "type": "string", + "description": "A description of the type of recognition earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "recognitionAwardDate": { + "type": "string", + "format": "date", + "description": "The date the recognition was awarded or earned." + }, + "recognitionAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the recognition expires." + } + }, + "additionalProperties": false, + "required": [ + "recognitionTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "projectedGraduationDate": { + "type": "string", + "format": "date", + "description": "The month and year the student is projected to graduate." + }, + "sessionEarnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "sessionEarnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "sessionEarnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "sessionAttemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "sessionAttemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "sessionAttemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "gradePointAverages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradePointAverageTypeDescriptor": { + "type": "string", + "description": "The system used for calculating the grade point average for an individual." + }, + "isCumulative": { + "type": "boolean", + "description": "Indicator of whether or not the Grade Point Average value is cumulative." + }, + "gradePointAverageValue": { + "type": "number", + "description": "The value of the grade points earned divided by the number of credits attempted." + }, + "maxGradePointAverageValue": { + "type": "number", + "description": "The maximum value for the grade point average." + } + }, + "additionalProperties": false, + "required": [ + "gradePointAverageTypeDescriptor", + "gradePointAverageValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "diplomas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "diplomaAwardDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student met graduation requirements and was awarded a diploma." + }, + "diplomaLevelDescriptor": { + "type": "string", + "description": "The level of diploma/credential that is awarded to a student in recognition of completion of the curricular requirements." + }, + "diplomaTypeDescriptor": { + "type": "string", + "description": "The type of diploma/credential that is awarded to a student in recognition of his/her completion of the curricular requirements." + }, + "cteCompleter": { + "type": "boolean", + "description": "Indicated a student who reached a state-defined threshold of vocational education and who attained a high school diploma or its recognized state equivalent or GED." + }, + "diplomaDescription": { + "type": "string", + "description": "The description of the diploma given to the student for accomplishments.", + "minLength": 1, + "maxLength": 80 + }, + "diplomaAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the diploma expires." + } + }, + "additionalProperties": false, + "required": [ + "diplomaAwardDate", + "diplomaTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "termDescriptor": { + "type": "string", + "description": "The term for the session during the school year." + }, + "reportCards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportCardReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "reportCardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "educationOrganizationReference", + "schoolYearTypeReference", + "termDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAcademicRecord", + "description": "This educational entity represents the cumulative record of academic achievement for a student.", + "type": "object", + "properties": { + "cumulativeEarnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "cumulativeEarnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "cumulativeEarnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "cumulativeAttemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "cumulativeAttemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "cumulativeAttemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "classRanking": { + "type": "object", + "properties": { + "classRank": { + "type": "integer", + "description": "The academic rank of a student in relation to his or her graduating class (e.g., 1st, 2nd, 3rd)." + }, + "totalNumberInClass": { + "type": "integer", + "description": "The total number of students in the student's graduating class." + }, + "percentageRanking": { + "type": "integer", + "description": "The academic percentage rank of a student in relation to his or her graduating class (e.g., 95%, 80%, 50%)." + }, + "classRankingDate": { + "type": "string", + "format": "date", + "description": "Date class ranking was determined." + } + }, + "additionalProperties": false, + "required": [ + "classRank", + "totalNumberInClass" + ] + }, + "academicHonors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "academicHonorCategoryDescriptor": { + "type": "string", + "description": "A designation of the type of academic distinctions earned by or awarded to the individual." + }, + "honorDescription": { + "type": "string", + "description": "A description of the type of academic distinctions earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "honorAwardDate": { + "type": "string", + "format": "date", + "description": "The date the honor was awarded." + }, + "honorAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the honor expires." + } + }, + "additionalProperties": false, + "required": [ + "academicHonorCategoryDescriptor", + "honorDescription" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "recognitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "recognitionTypeDescriptor": { + "type": "string", + "description": "The nature of recognition given to the individual for accomplishments in a co-curricular, or extra-curricular activity." + }, + "recognitionDescription": { + "type": "string", + "description": "A description of the type of recognition earned by or awarded to the individual.", + "minLength": 1, + "maxLength": 80 + }, + "recognitionAwardDate": { + "type": "string", + "format": "date", + "description": "The date the recognition was awarded or earned." + }, + "recognitionAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the recognition expires." + } + }, + "additionalProperties": false, + "required": [ + "recognitionTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "projectedGraduationDate": { + "type": "string", + "format": "date", + "description": "The month and year the student is projected to graduate." + }, + "sessionEarnedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "sessionEarnedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "sessionEarnedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "sessionAttemptedCredits": { + "type": "number", + "description": "The value of credits or units of value awarded for the completion of a course." + }, + "sessionAttemptedCreditTypeDescriptor": { + "type": "string", + "description": "The type of credits or units of value awarded for the completion of a course." + }, + "sessionAttemptedCreditConversions": { + "type": "number", + "description": "Conversion factor that when multiplied by the number of credits is equivalent to Carnegie units." + }, + "gradePointAverages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradePointAverageTypeDescriptor": { + "type": "string", + "description": "The system used for calculating the grade point average for an individual." + }, + "isCumulative": { + "type": "boolean", + "description": "Indicator of whether or not the Grade Point Average value is cumulative." + }, + "gradePointAverageValue": { + "type": "number", + "description": "The value of the grade points earned divided by the number of credits attempted." + }, + "maxGradePointAverageValue": { + "type": "number", + "description": "The maximum value for the grade point average." + } + }, + "additionalProperties": false, + "required": [ + "gradePointAverageTypeDescriptor", + "gradePointAverageValue" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "diplomas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "achievementTitle": { + "type": "string", + "description": "The title assigned to the achievement.", + "minLength": 1, + "maxLength": 60 + }, + "achievementCategoryDescriptor": { + "type": "string", + "description": "The category of achievement attributed to the individual." + }, + "achievementCategorySystem": { + "type": "string", + "description": "The system that defines the categories by which an achievement is attributed to the individual.", + "minLength": 1, + "maxLength": 60 + }, + "issuerName": { + "type": "string", + "description": "The name of the agent, entity, or institution issuing the element.", + "minLength": 1, + "maxLength": 150 + }, + "issuerOriginURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) from which the award was issued.", + "minLength": 5, + "maxLength": 255 + }, + "criteria": { + "type": "string", + "description": "The criteria for competency-based completion of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "criteriaURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of a web page describing the competency-based completion criteria for the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "evidenceStatement": { + "type": "string", + "description": "A statement or reference describing the evidence that the individual met the criteria for attainment of the achievement/award.", + "minLength": 1, + "maxLength": 150 + }, + "imageURL": { + "type": "string", + "description": "The Uniform Resource Locator (URL) for the unique address of an image representing an award or badge associated with the achievement/award.", + "minLength": 5, + "maxLength": 255 + }, + "diplomaAwardDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student met graduation requirements and was awarded a diploma." + }, + "diplomaLevelDescriptor": { + "type": "string", + "description": "The level of diploma/credential that is awarded to a student in recognition of completion of the curricular requirements." + }, + "diplomaTypeDescriptor": { + "type": "string", + "description": "The type of diploma/credential that is awarded to a student in recognition of his/her completion of the curricular requirements." + }, + "cteCompleter": { + "type": "boolean", + "description": "Indicated a student who reached a state-defined threshold of vocational education and who attained a high school diploma or its recognized state equivalent or GED." + }, + "diplomaDescription": { + "type": "string", + "description": "The description of the diploma given to the student for accomplishments.", + "minLength": 1, + "maxLength": 80 + }, + "diplomaAwardExpiresDate": { + "type": "string", + "format": "date", + "description": "Date on which the diploma expires." + } + }, + "additionalProperties": false, + "required": [ + "diplomaAwardDate", + "diplomaTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "termDescriptor": { + "type": "string", + "description": "The term for the session during the school year." + }, + "reportCards": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reportCardReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ] + } + }, + "additionalProperties": false, + "required": [ + "reportCardReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.reportCards[*].reportCardReference.educationOrganizationId", + "targetJsonPath": "$.educationOrganizationReference.educationOrganizationId" + }, + { + "sourceJsonPath": "$.reportCards[*].reportCardReference.studentUniqueId", + "targetJsonPath": "$.studentReference.studentUniqueId" + } + ], + "identityFullnames": [ + "Student", + "EducationOrganization", + "SchoolYear", + "Term" + ], + "documentPathsMapping": { + "CumulativeEarnedCredits.Credits": { + "paths": { + "cumulativeEarnedCredits": "$.cumulativeEarnedCredits" + }, + "pathOrder": [ + "cumulativeEarnedCredits" + ], + "isReference": false + }, + "CumulativeEarnedCredits.CreditType": { + "paths": { + "cumulativeEarnedCreditTypeDescriptor": "$.cumulativeEarnedCreditTypeDescriptor" + }, + "pathOrder": [ + "cumulativeEarnedCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "CumulativeEarnedCredits.CreditConversion": { + "paths": { + "cumulativeEarnedCreditConversions": "$.cumulativeEarnedCreditConversions" + }, + "pathOrder": [ + "cumulativeEarnedCreditConversions" + ], + "isReference": false + }, + "CumulativeAttemptedCredits.Credits": { + "paths": { + "cumulativeAttemptedCredits": "$.cumulativeAttemptedCredits" + }, + "pathOrder": [ + "cumulativeAttemptedCredits" + ], + "isReference": false + }, + "CumulativeAttemptedCredits.CreditType": { + "paths": { + "cumulativeAttemptedCreditTypeDescriptor": "$.cumulativeAttemptedCreditTypeDescriptor" + }, + "pathOrder": [ + "cumulativeAttemptedCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "CumulativeAttemptedCredits.CreditConversion": { + "paths": { + "cumulativeAttemptedCreditConversions": "$.cumulativeAttemptedCreditConversions" + }, + "pathOrder": [ + "cumulativeAttemptedCreditConversions" + ], + "isReference": false + }, + "ClassRanking.ClassRank": { + "paths": { + "classRank": "$.classRanking.classRank" + }, + "pathOrder": [ + "classRank" + ], + "isReference": false + }, + "ClassRanking.TotalNumberInClass": { + "paths": { + "totalNumberInClass": "$.classRanking.totalNumberInClass" + }, + "pathOrder": [ + "totalNumberInClass" + ], + "isReference": false + }, + "ClassRanking.PercentageRanking": { + "paths": { + "percentageRanking": "$.classRanking.percentageRanking" + }, + "pathOrder": [ + "percentageRanking" + ], + "isReference": false + }, + "ClassRanking.ClassRankingDate": { + "paths": { + "classRankingDate": "$.classRanking.classRankingDate" + }, + "pathOrder": [ + "classRankingDate" + ], + "isReference": false + }, + "AcademicHonor.Achievement.AchievementTitle": { + "paths": { + "achievementTitle": "$.academicHonors[*].achievementTitle" + }, + "pathOrder": [ + "achievementTitle" + ], + "isReference": false + }, + "AcademicHonor.Achievement.AchievementCategory": { + "paths": { + "achievementCategoryDescriptor": "$.academicHonors[*].achievementCategoryDescriptor" + }, + "pathOrder": [ + "achievementCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AchievementCategoryDescriptor" + }, + "AcademicHonor.Achievement.AchievementCategorySystem": { + "paths": { + "achievementCategorySystem": "$.academicHonors[*].achievementCategorySystem" + }, + "pathOrder": [ + "achievementCategorySystem" + ], + "isReference": false + }, + "AcademicHonor.Achievement.IssuerName": { + "paths": { + "issuerName": "$.academicHonors[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "AcademicHonor.Achievement.IssuerOriginURL": { + "paths": { + "issuerOriginURL": "$.academicHonors[*].issuerOriginURL" + }, + "pathOrder": [ + "issuerOriginURL" + ], + "isReference": false + }, + "AcademicHonor.Achievement.Criteria": { + "paths": { + "criteria": "$.academicHonors[*].criteria" + }, + "pathOrder": [ + "criteria" + ], + "isReference": false + }, + "AcademicHonor.Achievement.CriteriaURL": { + "paths": { + "criteriaURL": "$.academicHonors[*].criteriaURL" + }, + "pathOrder": [ + "criteriaURL" + ], + "isReference": false + }, + "AcademicHonor.Achievement.EvidenceStatement": { + "paths": { + "evidenceStatement": "$.academicHonors[*].evidenceStatement" + }, + "pathOrder": [ + "evidenceStatement" + ], + "isReference": false + }, + "AcademicHonor.Achievement.ImageURL": { + "paths": { + "imageURL": "$.academicHonors[*].imageURL" + }, + "pathOrder": [ + "imageURL" + ], + "isReference": false + }, + "AcademicHonor.AcademicHonorCategory": { + "paths": { + "academicHonorCategoryDescriptor": "$.academicHonors[*].academicHonorCategoryDescriptor" + }, + "pathOrder": [ + "academicHonorCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicHonorCategoryDescriptor" + }, + "AcademicHonor.HonorDescription": { + "paths": { + "honorDescription": "$.academicHonors[*].honorDescription" + }, + "pathOrder": [ + "honorDescription" + ], + "isReference": false + }, + "AcademicHonor.HonorAwardDate": { + "paths": { + "honorAwardDate": "$.academicHonors[*].honorAwardDate" + }, + "pathOrder": [ + "honorAwardDate" + ], + "isReference": false + }, + "AcademicHonor.HonorAwardExpiresDate": { + "paths": { + "honorAwardExpiresDate": "$.academicHonors[*].honorAwardExpiresDate" + }, + "pathOrder": [ + "honorAwardExpiresDate" + ], + "isReference": false + }, + "Recognition.Achievement.AchievementTitle": { + "paths": { + "achievementTitle": "$.recognitions[*].achievementTitle" + }, + "pathOrder": [ + "achievementTitle" + ], + "isReference": false + }, + "Recognition.Achievement.AchievementCategory": { + "paths": { + "achievementCategoryDescriptor": "$.recognitions[*].achievementCategoryDescriptor" + }, + "pathOrder": [ + "achievementCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AchievementCategoryDescriptor" + }, + "Recognition.Achievement.AchievementCategorySystem": { + "paths": { + "achievementCategorySystem": "$.recognitions[*].achievementCategorySystem" + }, + "pathOrder": [ + "achievementCategorySystem" + ], + "isReference": false + }, + "Recognition.Achievement.IssuerName": { + "paths": { + "issuerName": "$.recognitions[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Recognition.Achievement.IssuerOriginURL": { + "paths": { + "issuerOriginURL": "$.recognitions[*].issuerOriginURL" + }, + "pathOrder": [ + "issuerOriginURL" + ], + "isReference": false + }, + "Recognition.Achievement.Criteria": { + "paths": { + "criteria": "$.recognitions[*].criteria" + }, + "pathOrder": [ + "criteria" + ], + "isReference": false + }, + "Recognition.Achievement.CriteriaURL": { + "paths": { + "criteriaURL": "$.recognitions[*].criteriaURL" + }, + "pathOrder": [ + "criteriaURL" + ], + "isReference": false + }, + "Recognition.Achievement.EvidenceStatement": { + "paths": { + "evidenceStatement": "$.recognitions[*].evidenceStatement" + }, + "pathOrder": [ + "evidenceStatement" + ], + "isReference": false + }, + "Recognition.Achievement.ImageURL": { + "paths": { + "imageURL": "$.recognitions[*].imageURL" + }, + "pathOrder": [ + "imageURL" + ], + "isReference": false + }, + "Recognition.RecognitionType": { + "paths": { + "recognitionTypeDescriptor": "$.recognitions[*].recognitionTypeDescriptor" + }, + "pathOrder": [ + "recognitionTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RecognitionTypeDescriptor" + }, + "Recognition.RecognitionDescription": { + "paths": { + "recognitionDescription": "$.recognitions[*].recognitionDescription" + }, + "pathOrder": [ + "recognitionDescription" + ], + "isReference": false + }, + "Recognition.RecognitionAwardDate": { + "paths": { + "recognitionAwardDate": "$.recognitions[*].recognitionAwardDate" + }, + "pathOrder": [ + "recognitionAwardDate" + ], + "isReference": false + }, + "Recognition.RecognitionAwardExpiresDate": { + "paths": { + "recognitionAwardExpiresDate": "$.recognitions[*].recognitionAwardExpiresDate" + }, + "pathOrder": [ + "recognitionAwardExpiresDate" + ], + "isReference": false + }, + "ProjectedGraduationDate": { + "paths": { + "projectedGraduationDate": "$.projectedGraduationDate" + }, + "pathOrder": [ + "projectedGraduationDate" + ], + "isReference": false + }, + "SessionEarnedCredits.Credits": { + "paths": { + "sessionEarnedCredits": "$.sessionEarnedCredits" + }, + "pathOrder": [ + "sessionEarnedCredits" + ], + "isReference": false + }, + "SessionEarnedCredits.CreditType": { + "paths": { + "sessionEarnedCreditTypeDescriptor": "$.sessionEarnedCreditTypeDescriptor" + }, + "pathOrder": [ + "sessionEarnedCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "SessionEarnedCredits.CreditConversion": { + "paths": { + "sessionEarnedCreditConversions": "$.sessionEarnedCreditConversions" + }, + "pathOrder": [ + "sessionEarnedCreditConversions" + ], + "isReference": false + }, + "SessionAttemptedCredits.Credits": { + "paths": { + "sessionAttemptedCredits": "$.sessionAttemptedCredits" + }, + "pathOrder": [ + "sessionAttemptedCredits" + ], + "isReference": false + }, + "SessionAttemptedCredits.CreditType": { + "paths": { + "sessionAttemptedCreditTypeDescriptor": "$.sessionAttemptedCreditTypeDescriptor" + }, + "pathOrder": [ + "sessionAttemptedCreditTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CreditTypeDescriptor" + }, + "SessionAttemptedCredits.CreditConversion": { + "paths": { + "sessionAttemptedCreditConversions": "$.sessionAttemptedCreditConversions" + }, + "pathOrder": [ + "sessionAttemptedCreditConversions" + ], + "isReference": false + }, + "GradePointAverage.GradePointAverageType": { + "paths": { + "gradePointAverageTypeDescriptor": "$.gradePointAverages[*].gradePointAverageTypeDescriptor" + }, + "pathOrder": [ + "gradePointAverageTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradePointAverageTypeDescriptor" + }, + "GradePointAverage.IsCumulative": { + "paths": { + "isCumulative": "$.gradePointAverages[*].isCumulative" + }, + "pathOrder": [ + "isCumulative" + ], + "isReference": false + }, + "GradePointAverage.GradePointAverageValue": { + "paths": { + "gradePointAverageValue": "$.gradePointAverages[*].gradePointAverageValue" + }, + "pathOrder": [ + "gradePointAverageValue" + ], + "isReference": false + }, + "GradePointAverage.MaxGradePointAverageValue": { + "paths": { + "maxGradePointAverageValue": "$.gradePointAverages[*].maxGradePointAverageValue" + }, + "pathOrder": [ + "maxGradePointAverageValue" + ], + "isReference": false + }, + "Diploma.Achievement.AchievementTitle": { + "paths": { + "achievementTitle": "$.diplomas[*].achievementTitle" + }, + "pathOrder": [ + "achievementTitle" + ], + "isReference": false + }, + "Diploma.Achievement.AchievementCategory": { + "paths": { + "achievementCategoryDescriptor": "$.diplomas[*].achievementCategoryDescriptor" + }, + "pathOrder": [ + "achievementCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AchievementCategoryDescriptor" + }, + "Diploma.Achievement.AchievementCategorySystem": { + "paths": { + "achievementCategorySystem": "$.diplomas[*].achievementCategorySystem" + }, + "pathOrder": [ + "achievementCategorySystem" + ], + "isReference": false + }, + "Diploma.Achievement.IssuerName": { + "paths": { + "issuerName": "$.diplomas[*].issuerName" + }, + "pathOrder": [ + "issuerName" + ], + "isReference": false + }, + "Diploma.Achievement.IssuerOriginURL": { + "paths": { + "issuerOriginURL": "$.diplomas[*].issuerOriginURL" + }, + "pathOrder": [ + "issuerOriginURL" + ], + "isReference": false + }, + "Diploma.Achievement.Criteria": { + "paths": { + "criteria": "$.diplomas[*].criteria" + }, + "pathOrder": [ + "criteria" + ], + "isReference": false + }, + "Diploma.Achievement.CriteriaURL": { + "paths": { + "criteriaURL": "$.diplomas[*].criteriaURL" + }, + "pathOrder": [ + "criteriaURL" + ], + "isReference": false + }, + "Diploma.Achievement.EvidenceStatement": { + "paths": { + "evidenceStatement": "$.diplomas[*].evidenceStatement" + }, + "pathOrder": [ + "evidenceStatement" + ], + "isReference": false + }, + "Diploma.Achievement.ImageURL": { + "paths": { + "imageURL": "$.diplomas[*].imageURL" + }, + "pathOrder": [ + "imageURL" + ], + "isReference": false + }, + "Diploma.DiplomaAwardDate": { + "paths": { + "diplomaAwardDate": "$.diplomas[*].diplomaAwardDate" + }, + "pathOrder": [ + "diplomaAwardDate" + ], + "isReference": false + }, + "Diploma.DiplomaLevel": { + "paths": { + "diplomaLevelDescriptor": "$.diplomas[*].diplomaLevelDescriptor" + }, + "pathOrder": [ + "diplomaLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DiplomaLevelDescriptor" + }, + "Diploma.DiplomaType": { + "paths": { + "diplomaTypeDescriptor": "$.diplomas[*].diplomaTypeDescriptor" + }, + "pathOrder": [ + "diplomaTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DiplomaTypeDescriptor" + }, + "Diploma.CTECompleter": { + "paths": { + "cteCompleter": "$.diplomas[*].cteCompleter" + }, + "pathOrder": [ + "cteCompleter" + ], + "isReference": false + }, + "Diploma.DiplomaDescription": { + "paths": { + "diplomaDescription": "$.diplomas[*].diplomaDescription" + }, + "pathOrder": [ + "diplomaDescription" + ], + "isReference": false + }, + "Diploma.DiplomaAwardExpiresDate": { + "paths": { + "diplomaAwardExpiresDate": "$.diplomas[*].diplomaAwardExpiresDate" + }, + "pathOrder": [ + "diplomaAwardExpiresDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "Term": { + "paths": { + "termDescriptor": "$.termDescriptor" + }, + "pathOrder": [ + "termDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TermDescriptor" + }, + "ReportCard": { + "paths": { + "educationOrganizationId": "$.reportCards[*].reportCardReference.educationOrganizationId", + "gradingPeriodDescriptor": "$.reportCards[*].reportCardReference.gradingPeriodDescriptor", + "periodSequence": "$.reportCards[*].reportCardReference.periodSequence", + "schoolId": "$.reportCards[*].reportCardReference.schoolId", + "schoolYear": "$.reportCards[*].reportCardReference.schoolYear", + "studentUniqueId": "$.reportCards[*].reportCardReference.studentUniqueId" + }, + "pathOrder": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ReportCard" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "schoolYear", + "studentUniqueId", + "termDescriptor" + ], + "isSubclass": false + }, + "studentAssessments": { + "resourceName": "StudentAssessment", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAssessment", + "description": "This entity represents the analysis or scoring of a student's response on an assessment. The analysis results in a value that represents a student's performance on a set of items on a test.", + "type": "object", + "properties": { + "studentAssessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment administered to a student.", + "minLength": 1, + "maxLength": 60 + }, + "administrationDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones." + }, + "administrationEndDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment administration ended." + }, + "serialNumber": { + "type": "string", + "description": "The unique number for the assessment form or answer document.", + "minLength": 1, + "maxLength": 60 + }, + "administrationLanguageDescriptor": { + "type": "string", + "description": "The language in which an assessment is written and/or administered." + }, + "administrationEnvironmentDescriptor": { + "type": "string", + "description": "The environment in which the test was administered." + }, + "accommodations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "accommodationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "accommodationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "retestIndicatorDescriptor": { + "type": "string", + "description": "Indicator if the test was a retake." + }, + "reasonNotTestedDescriptor": { + "type": "string", + "description": "The primary reason student is not tested." + }, + "scoreResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + } + }, + "additionalProperties": false, + "required": [ + "result", + "resultDatatypeTypeDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "whenAssessedGradeLevelDescriptor": { + "type": "string", + "description": "The grade level of a student when assessed." + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "A specification of which performance level value describes the student proficiency." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "eventCircumstanceDescriptor": { + "type": "string", + "description": "An unusual event occurred during the administration of the assessment. This could include fire alarm, student became ill, etc." + }, + "eventDescription": { + "type": "string", + "description": "Describes special events that occur before during or after the assessment session that may impact use of results.", + "minLength": 1, + "maxLength": 1024 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentResponse": { + "type": "string", + "description": "A student's response to a stimulus on a test.", + "minLength": 1, + "maxLength": 255 + }, + "descriptiveFeedback": { + "type": "string", + "description": "The formative descriptive feedback that was given to a student in response to the results from a scored/evaluated assessment item.", + "minLength": 1, + "maxLength": 1024 + }, + "responseIndicatorDescriptor": { + "type": "string", + "description": "Indicator of the response." + }, + "assessmentItemResultDescriptor": { + "type": "string", + "description": "The analyzed result of a student's response to an assessment item." + }, + "rawScoreResult": { + "type": "number", + "description": "A meaningful raw score of the performance of a student on an assessment item." + }, + "timeAssessed": { + "type": "number", + "description": "The overall time a student actually spent during the assessment item." + }, + "assessmentItemReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "itemNumber": { + "type": "integer", + "description": "The test question number for this student's test item." + } + }, + "additionalProperties": false, + "required": [ + "assessmentItemResultDescriptor", + "assessmentItemReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentObjectiveAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "scoreResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + } + }, + "additionalProperties": false, + "required": [ + "result", + "resultDatatypeTypeDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "A specification of which performance level value describes the student proficiency." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "objectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "assessedMinutes": { + "type": "integer", + "description": "Reported time student was assessed in minutes." + }, + "administrationDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones." + }, + "administrationEndDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment administration ended." + } + }, + "additionalProperties": false, + "required": [ + "objectiveAssessmentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "platformTypeDescriptor": { + "type": "string", + "description": "The platform with which the assessment was delivered to the student during the assessment session." + }, + "period": { + "type": "object", + "properties": { + "assessmentPeriodDescriptor": { + "type": "string", + "description": "The period of time in which an assessment is supposed to be administered (e.g., Beginning of Year, Middle of Year, End of Year)." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the assessment is to be administered." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the assessment is to be administered." + } + }, + "additionalProperties": false, + "required": [ + "assessmentPeriodDescriptor" + ] + }, + "assessedMinutes": { + "type": "integer", + "description": "Reported time student was assessed in minutes." + }, + "reportedSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "reportedSchoolIdentifier": { + "type": "string", + "description": "A reported school identifier for the school the enrollment at the time of the assessment used when the assigned SchoolId is not known by the assessment vendor.", + "minLength": 1, + "maxLength": 60 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentAssessmentIdentifier", + "studentReference", + "assessmentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAssessment", + "description": "This entity represents the analysis or scoring of a student's response on an assessment. The analysis results in a value that represents a student's performance on a set of items on a test.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentAssessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment administered to a student.", + "minLength": 1, + "maxLength": 60 + }, + "administrationDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones." + }, + "administrationEndDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment administration ended." + }, + "serialNumber": { + "type": "string", + "description": "The unique number for the assessment form or answer document.", + "minLength": 1, + "maxLength": 60 + }, + "administrationLanguageDescriptor": { + "type": "string", + "description": "The language in which an assessment is written and/or administered." + }, + "administrationEnvironmentDescriptor": { + "type": "string", + "description": "The environment in which the test was administered." + }, + "accommodations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "accommodationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "accommodationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "retestIndicatorDescriptor": { + "type": "string", + "description": "Indicator if the test was a retake." + }, + "reasonNotTestedDescriptor": { + "type": "string", + "description": "The primary reason student is not tested." + }, + "scoreResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + } + }, + "additionalProperties": false, + "required": [ + "result", + "resultDatatypeTypeDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "whenAssessedGradeLevelDescriptor": { + "type": "string", + "description": "The grade level of a student when assessed." + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "A specification of which performance level value describes the student proficiency." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "eventCircumstanceDescriptor": { + "type": "string", + "description": "An unusual event occurred during the administration of the assessment. This could include fire alarm, student became ill, etc." + }, + "eventDescription": { + "type": "string", + "description": "Describes special events that occur before during or after the assessment session that may impact use of results.", + "minLength": 1, + "maxLength": 1024 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentResponse": { + "type": "string", + "description": "A student's response to a stimulus on a test.", + "minLength": 1, + "maxLength": 255 + }, + "descriptiveFeedback": { + "type": "string", + "description": "The formative descriptive feedback that was given to a student in response to the results from a scored/evaluated assessment item.", + "minLength": 1, + "maxLength": 1024 + }, + "responseIndicatorDescriptor": { + "type": "string", + "description": "Indicator of the response." + }, + "assessmentItemResultDescriptor": { + "type": "string", + "description": "The analyzed result of a student's response to an assessment item." + }, + "rawScoreResult": { + "type": "number", + "description": "A meaningful raw score of the performance of a student on an assessment item." + }, + "timeAssessed": { + "type": "number", + "description": "The overall time a student actually spent during the assessment item." + }, + "assessmentItemReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "itemNumber": { + "type": "integer", + "description": "The test question number for this student's test item." + } + }, + "additionalProperties": false, + "required": [ + "assessmentItemResultDescriptor", + "assessmentItemReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentObjectiveAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "scoreResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + } + }, + "additionalProperties": false, + "required": [ + "result", + "resultDatatypeTypeDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "A specification of which performance level value describes the student proficiency." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "objectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "assessedMinutes": { + "type": "integer", + "description": "Reported time student was assessed in minutes." + }, + "administrationDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones." + }, + "administrationEndDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment administration ended." + } + }, + "additionalProperties": false, + "required": [ + "objectiveAssessmentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "platformTypeDescriptor": { + "type": "string", + "description": "The platform with which the assessment was delivered to the student during the assessment session." + }, + "period": { + "type": "object", + "properties": { + "assessmentPeriodDescriptor": { + "type": "string", + "description": "The period of time in which an assessment is supposed to be administered (e.g., Beginning of Year, Middle of Year, End of Year)." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the assessment is to be administered." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the assessment is to be administered." + } + }, + "additionalProperties": false, + "required": [ + "assessmentPeriodDescriptor" + ] + }, + "assessedMinutes": { + "type": "integer", + "description": "Reported time student was assessed in minutes." + }, + "reportedSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "reportedSchoolIdentifier": { + "type": "string", + "description": "A reported school identifier for the school the enrollment at the time of the assessment used when the assigned SchoolId is not known by the assessment vendor.", + "minLength": 1, + "maxLength": 60 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentAssessmentIdentifier", + "studentReference", + "assessmentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAssessment", + "description": "This entity represents the analysis or scoring of a student's response on an assessment. The analysis results in a value that represents a student's performance on a set of items on a test.", + "type": "object", + "properties": { + "studentAssessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment administered to a student.", + "minLength": 1, + "maxLength": 60 + }, + "administrationDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones." + }, + "administrationEndDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment administration ended." + }, + "serialNumber": { + "type": "string", + "description": "The unique number for the assessment form or answer document.", + "minLength": 1, + "maxLength": 60 + }, + "administrationLanguageDescriptor": { + "type": "string", + "description": "The language in which an assessment is written and/or administered." + }, + "administrationEnvironmentDescriptor": { + "type": "string", + "description": "The environment in which the test was administered." + }, + "accommodations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "accommodationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "accommodationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "retestIndicatorDescriptor": { + "type": "string", + "description": "Indicator if the test was a retake." + }, + "reasonNotTestedDescriptor": { + "type": "string", + "description": "The primary reason student is not tested." + }, + "scoreResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + } + }, + "additionalProperties": false, + "required": [ + "result", + "resultDatatypeTypeDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "whenAssessedGradeLevelDescriptor": { + "type": "string", + "description": "The grade level of a student when assessed." + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "A specification of which performance level value describes the student proficiency." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "eventCircumstanceDescriptor": { + "type": "string", + "description": "An unusual event occurred during the administration of the assessment. This could include fire alarm, student became ill, etc." + }, + "eventDescription": { + "type": "string", + "description": "Describes special events that occur before during or after the assessment session that may impact use of results.", + "minLength": 1, + "maxLength": 1024 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "assessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace" + ] + }, + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "assessmentResponse": { + "type": "string", + "description": "A student's response to a stimulus on a test.", + "minLength": 1, + "maxLength": 255 + }, + "descriptiveFeedback": { + "type": "string", + "description": "The formative descriptive feedback that was given to a student in response to the results from a scored/evaluated assessment item.", + "minLength": 1, + "maxLength": 1024 + }, + "responseIndicatorDescriptor": { + "type": "string", + "description": "Indicator of the response." + }, + "assessmentItemResultDescriptor": { + "type": "string", + "description": "The analyzed result of a student's response to an assessment item." + }, + "rawScoreResult": { + "type": "number", + "description": "A meaningful raw score of the performance of a student on an assessment item." + }, + "timeAssessed": { + "type": "number", + "description": "The overall time a student actually spent during the assessment item." + }, + "assessmentItemReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a space, room, site, building, individual, organization, program, or institution by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "itemNumber": { + "type": "integer", + "description": "The test question number for this student's test item." + } + }, + "additionalProperties": false, + "required": [ + "assessmentItemResultDescriptor", + "assessmentItemReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentObjectiveAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "scoreResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "result": { + "type": "string", + "description": "The value of a meaningful raw score or statistical expression of the performance of an individual. The results can be expressed as a number, percentile, range, level, etc.", + "minLength": 1, + "maxLength": 35 + }, + "resultDatatypeTypeDescriptor": { + "type": "string", + "description": "The datatype of the result. The results can be expressed as a number, percentile, range, level, etc." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the administrator of the assessment uses to report the performance and achievement of all students. It may be a qualitative method such as performance level descriptors or a quantitative method such as a numerical grade or cut score. More than one type of reporting method may be used." + } + }, + "additionalProperties": false, + "required": [ + "result", + "resultDatatypeTypeDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "performanceLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "performanceLevelDescriptor": { + "type": "string", + "description": "A specification of which performance level value describes the student proficiency." + }, + "assessmentReportingMethodDescriptor": { + "type": "string", + "description": "The method that the instructor of the class uses to report the performance and achievement. It may be a qualitative method such as individualized teacher comments or a quantitative method such as a letter or numerical grade. In some cases, more than one type of reporting method may be used." + }, + "performanceLevelIndicatorName": { + "type": "string", + "description": "The name of the indicator being measured for a collection of performance level values.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "performanceLevelDescriptor", + "assessmentReportingMethodDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "objectiveAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an objective assessment by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "identificationCode" + ] + }, + "assessedMinutes": { + "type": "integer", + "description": "Reported time student was assessed in minutes." + }, + "administrationDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment was completed by the student. The use of ISO-8601 formats with a timezone designator (UTC or time offset) is recommended in order to prevent ambiguity due to time zones." + }, + "administrationEndDate": { + "type": "string", + "format": "date-time", + "description": "The date and time an assessment administration ended." + } + }, + "additionalProperties": false, + "required": [ + "objectiveAssessmentReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "platformTypeDescriptor": { + "type": "string", + "description": "The platform with which the assessment was delivered to the student during the assessment session." + }, + "period": { + "type": "object", + "properties": { + "assessmentPeriodDescriptor": { + "type": "string", + "description": "The period of time in which an assessment is supposed to be administered (e.g., Beginning of Year, Middle of Year, End of Year)." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the assessment is to be administered." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the assessment is to be administered." + } + }, + "additionalProperties": false, + "required": [ + "assessmentPeriodDescriptor" + ] + }, + "assessedMinutes": { + "type": "integer", + "description": "Reported time student was assessed in minutes." + }, + "reportedSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "reportedSchoolIdentifier": { + "type": "string", + "description": "A reported school identifier for the school the enrollment at the time of the assessment used when the assigned SchoolId is not known by the assessment vendor.", + "minLength": 1, + "maxLength": 60 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.items[*].assessmentItemReference.assessmentIdentifier", + "targetJsonPath": "$.assessmentReference.assessmentIdentifier" + }, + { + "sourceJsonPath": "$.items[*].assessmentItemReference.namespace", + "targetJsonPath": "$.assessmentReference.namespace" + }, + { + "sourceJsonPath": "$.studentObjectiveAssessments[*].objectiveAssessmentReference.assessmentIdentifier", + "targetJsonPath": "$.assessmentReference.assessmentIdentifier" + }, + { + "sourceJsonPath": "$.studentObjectiveAssessments[*].objectiveAssessmentReference.namespace", + "targetJsonPath": "$.assessmentReference.namespace" + } + ], + "identityFullnames": [ + "StudentAssessmentIdentifier", + "Student", + "Assessment" + ], + "documentPathsMapping": { + "StudentAssessmentIdentifier": { + "paths": { + "studentAssessmentIdentifier": "$.studentAssessmentIdentifier" + }, + "pathOrder": [ + "studentAssessmentIdentifier" + ], + "isReference": false + }, + "AdministrationDate": { + "paths": { + "administrationDate": "$.administrationDate" + }, + "pathOrder": [ + "administrationDate" + ], + "isReference": false + }, + "AdministrationEndDate": { + "paths": { + "administrationEndDate": "$.administrationEndDate" + }, + "pathOrder": [ + "administrationEndDate" + ], + "isReference": false + }, + "SerialNumber": { + "paths": { + "serialNumber": "$.serialNumber" + }, + "pathOrder": [ + "serialNumber" + ], + "isReference": false + }, + "AdministrationLanguage": { + "paths": { + "administrationLanguageDescriptor": "$.administrationLanguageDescriptor" + }, + "pathOrder": [ + "administrationLanguageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "AdministrationEnvironment": { + "paths": { + "administrationEnvironmentDescriptor": "$.administrationEnvironmentDescriptor" + }, + "pathOrder": [ + "administrationEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AdministrationEnvironmentDescriptor" + }, + "Accommodation": { + "paths": { + "accommodationDescriptor": "$.accommodations[*].accommodationDescriptor" + }, + "pathOrder": [ + "accommodationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AccommodationDescriptor" + }, + "RetestIndicator": { + "paths": { + "retestIndicatorDescriptor": "$.retestIndicatorDescriptor" + }, + "pathOrder": [ + "retestIndicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RetestIndicatorDescriptor" + }, + "ReasonNotTested": { + "paths": { + "reasonNotTestedDescriptor": "$.reasonNotTestedDescriptor" + }, + "pathOrder": [ + "reasonNotTestedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonNotTestedDescriptor" + }, + "ScoreResult.Result": { + "paths": { + "result": "$.scoreResults[*].result" + }, + "pathOrder": [ + "result" + ], + "isReference": false + }, + "ScoreResult.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.scoreResults[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "ScoreResult.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.scoreResults[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "WhenAssessedGradeLevel": { + "paths": { + "whenAssessedGradeLevelDescriptor": "$.whenAssessedGradeLevelDescriptor" + }, + "pathOrder": [ + "whenAssessedGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "PerformanceLevel.PerformanceLevel": { + "paths": { + "performanceLevelDescriptor": "$.performanceLevels[*].performanceLevelDescriptor" + }, + "pathOrder": [ + "performanceLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceLevelDescriptor" + }, + "PerformanceLevel.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.performanceLevels[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "PerformanceLevel.PerformanceLevelIndicatorName": { + "paths": { + "performanceLevelIndicatorName": "$.performanceLevels[*].performanceLevelIndicatorName" + }, + "pathOrder": [ + "performanceLevelIndicatorName" + ], + "isReference": false + }, + "EventCircumstance": { + "paths": { + "eventCircumstanceDescriptor": "$.eventCircumstanceDescriptor" + }, + "pathOrder": [ + "eventCircumstanceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EventCircumstanceDescriptor" + }, + "EventDescription": { + "paths": { + "eventDescription": "$.eventDescription" + }, + "pathOrder": [ + "eventDescription" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Assessment": { + "paths": { + "assessmentIdentifier": "$.assessmentReference.assessmentIdentifier", + "namespace": "$.assessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Assessment" + }, + "StudentAssessmentItem.AssessmentResponse": { + "paths": { + "assessmentResponse": "$.items[*].assessmentResponse" + }, + "pathOrder": [ + "assessmentResponse" + ], + "isReference": false + }, + "StudentAssessmentItem.DescriptiveFeedback": { + "paths": { + "descriptiveFeedback": "$.items[*].descriptiveFeedback" + }, + "pathOrder": [ + "descriptiveFeedback" + ], + "isReference": false + }, + "StudentAssessmentItem.ResponseIndicator": { + "paths": { + "responseIndicatorDescriptor": "$.items[*].responseIndicatorDescriptor" + }, + "pathOrder": [ + "responseIndicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResponseIndicatorDescriptor" + }, + "StudentAssessmentItem.AssessmentItemResult": { + "paths": { + "assessmentItemResultDescriptor": "$.items[*].assessmentItemResultDescriptor" + }, + "pathOrder": [ + "assessmentItemResultDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentItemResultDescriptor" + }, + "StudentAssessmentItem.RawScoreResult": { + "paths": { + "rawScoreResult": "$.items[*].rawScoreResult" + }, + "pathOrder": [ + "rawScoreResult" + ], + "isReference": false + }, + "StudentAssessmentItem.TimeAssessed": { + "paths": { + "timeAssessed": "$.items[*].timeAssessed" + }, + "pathOrder": [ + "timeAssessed" + ], + "isReference": false + }, + "StudentAssessmentItem.AssessmentItem": { + "paths": { + "assessmentIdentifier": "$.items[*].assessmentItemReference.assessmentIdentifier", + "identificationCode": "$.items[*].assessmentItemReference.identificationCode", + "namespace": "$.items[*].assessmentItemReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "AssessmentItem" + }, + "StudentAssessmentItem.ItemNumber": { + "paths": { + "itemNumber": "$.items[*].itemNumber" + }, + "pathOrder": [ + "itemNumber" + ], + "isReference": false + }, + "StudentObjectiveAssessment.ScoreResult.Result": { + "paths": { + "result": "$.studentObjectiveAssessments[*].scoreResults[*].result" + }, + "pathOrder": [ + "result" + ], + "isReference": false + }, + "StudentObjectiveAssessment.ScoreResult.ResultDatatypeType": { + "paths": { + "resultDatatypeTypeDescriptor": "$.studentObjectiveAssessments[*].scoreResults[*].resultDatatypeTypeDescriptor" + }, + "pathOrder": [ + "resultDatatypeTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResultDatatypeTypeDescriptor" + }, + "StudentObjectiveAssessment.ScoreResult.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.studentObjectiveAssessments[*].scoreResults[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "StudentObjectiveAssessment.PerformanceLevel.PerformanceLevel": { + "paths": { + "performanceLevelDescriptor": "$.studentObjectiveAssessments[*].performanceLevels[*].performanceLevelDescriptor" + }, + "pathOrder": [ + "performanceLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PerformanceLevelDescriptor" + }, + "StudentObjectiveAssessment.PerformanceLevel.AssessmentReportingMethod": { + "paths": { + "assessmentReportingMethodDescriptor": "$.studentObjectiveAssessments[*].performanceLevels[*].assessmentReportingMethodDescriptor" + }, + "pathOrder": [ + "assessmentReportingMethodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentReportingMethodDescriptor" + }, + "StudentObjectiveAssessment.PerformanceLevel.PerformanceLevelIndicatorName": { + "paths": { + "performanceLevelIndicatorName": "$.studentObjectiveAssessments[*].performanceLevels[*].performanceLevelIndicatorName" + }, + "pathOrder": [ + "performanceLevelIndicatorName" + ], + "isReference": false + }, + "StudentObjectiveAssessment.ObjectiveAssessment": { + "paths": { + "assessmentIdentifier": "$.studentObjectiveAssessments[*].objectiveAssessmentReference.assessmentIdentifier", + "identificationCode": "$.studentObjectiveAssessments[*].objectiveAssessmentReference.identificationCode", + "namespace": "$.studentObjectiveAssessments[*].objectiveAssessmentReference.namespace" + }, + "pathOrder": [ + "assessmentIdentifier", + "identificationCode", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ObjectiveAssessment" + }, + "StudentObjectiveAssessment.AssessedMinutes": { + "paths": { + "assessedMinutes": "$.studentObjectiveAssessments[*].assessedMinutes" + }, + "pathOrder": [ + "assessedMinutes" + ], + "isReference": false + }, + "StudentObjectiveAssessment.AdministrationDate": { + "paths": { + "administrationDate": "$.studentObjectiveAssessments[*].administrationDate" + }, + "pathOrder": [ + "administrationDate" + ], + "isReference": false + }, + "StudentObjectiveAssessment.AdministrationEndDate": { + "paths": { + "administrationEndDate": "$.studentObjectiveAssessments[*].administrationEndDate" + }, + "pathOrder": [ + "administrationEndDate" + ], + "isReference": false + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "PlatformType": { + "paths": { + "platformTypeDescriptor": "$.platformTypeDescriptor" + }, + "pathOrder": [ + "platformTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PlatformTypeDescriptor" + }, + "AssessmentPeriod.AssessmentPeriod": { + "paths": { + "assessmentPeriodDescriptor": "$.period.assessmentPeriodDescriptor" + }, + "pathOrder": [ + "assessmentPeriodDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssessmentPeriodDescriptor" + }, + "AssessmentPeriod.BeginDate": { + "paths": { + "beginDate": "$.period.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "AssessmentPeriod.EndDate": { + "paths": { + "endDate": "$.period.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "AssessedMinutes": { + "paths": { + "assessedMinutes": "$.assessedMinutes" + }, + "pathOrder": [ + "assessedMinutes" + ], + "isReference": false + }, + "ReportedSchool": { + "paths": { + "schoolId": "$.reportedSchoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "ReportedSchoolIdentifier": { + "paths": { + "reportedSchoolIdentifier": "$.reportedSchoolIdentifier" + }, + "pathOrder": [ + "reportedSchoolIdentifier" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "assessmentIdentifier", + "namespace", + "studentAssessmentIdentifier", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentCompetencyObjectives": { + "resourceName": "StudentCompetencyObjective", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCompetencyObjective", + "description": "This entity represents the competency assessed or evaluated for the student against a specific competency objective.", + "type": "object", + "properties": { + "competencyObjectiveReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor" + ] + }, + "competencyLevelDescriptor": { + "type": "string", + "description": "The competency level assessed for the student for the referenced competency objective." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "studentSectionAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentSectionAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "studentSectionAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "generalStudentProgramAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "generalStudentProgramAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "generalStudentProgramAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "competencyObjectiveReference", + "competencyLevelDescriptor", + "gradingPeriodReference", + "studentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCompetencyObjective", + "description": "This entity represents the competency assessed or evaluated for the student against a specific competency objective.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "competencyObjectiveReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor" + ] + }, + "competencyLevelDescriptor": { + "type": "string", + "description": "The competency level assessed for the student for the referenced competency objective." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "studentSectionAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentSectionAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "studentSectionAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "generalStudentProgramAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "generalStudentProgramAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "generalStudentProgramAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "competencyObjectiveReference", + "competencyLevelDescriptor", + "gradingPeriodReference", + "studentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCompetencyObjective", + "description": "This entity represents the competency assessed or evaluated for the student against a specific competency objective.", + "type": "object", + "properties": { + "competencyObjectiveReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "objective": { + "type": "string", + "description": "The designated title of the competency objective.", + "minLength": 1, + "maxLength": 60 + }, + "objectiveGradeLevelDescriptor": { + "type": "string", + "description": "The grade level for which the competency objective is targeted." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor" + ] + }, + "competencyLevelDescriptor": { + "type": "string", + "description": "The competency level assessed for the student for the referenced competency objective." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "gradingPeriodReference": { + "type": "object", + "properties": { + "gradingPeriodDescriptor": { + "type": "string", + "description": "The name of the period for which grades are reported." + }, + "periodSequence": { + "type": "integer", + "description": "The sequential order of this period relative to other periods." + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "studentSectionAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentSectionAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "studentSectionAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "generalStudentProgramAssociations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "generalStudentProgramAssociationReference": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "required": [ + "generalStudentProgramAssociationReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.studentSectionAssociations[*].studentSectionAssociationReference.studentUniqueId", + "targetJsonPath": "$.studentReference.studentUniqueId" + }, + { + "sourceJsonPath": "$.generalStudentProgramAssociations[*].generalStudentProgramAssociationReference.studentUniqueId", + "targetJsonPath": "$.studentReference.studentUniqueId" + } + ], + "identityFullnames": [ + "CompetencyObjective", + "GradingPeriod", + "Student" + ], + "documentPathsMapping": { + "CompetencyObjective": { + "paths": { + "educationOrganizationId": "$.competencyObjectiveReference.educationOrganizationId", + "objective": "$.competencyObjectiveReference.objective", + "objectiveGradeLevelDescriptor": "$.competencyObjectiveReference.objectiveGradeLevelDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "objective", + "objectiveGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "CompetencyObjective" + }, + "CompetencyLevel": { + "paths": { + "competencyLevelDescriptor": "$.competencyLevelDescriptor" + }, + "pathOrder": [ + "competencyLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CompetencyLevelDescriptor" + }, + "DiagnosticStatement": { + "paths": { + "diagnosticStatement": "$.diagnosticStatement" + }, + "pathOrder": [ + "diagnosticStatement" + ], + "isReference": false + }, + "GradingPeriod": { + "paths": { + "gradingPeriodDescriptor": "$.gradingPeriodReference.gradingPeriodDescriptor", + "periodSequence": "$.gradingPeriodReference.periodSequence", + "schoolId": "$.gradingPeriodReference.schoolId", + "schoolYear": "$.gradingPeriodReference.schoolYear" + }, + "pathOrder": [ + "gradingPeriodDescriptor", + "periodSequence", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GradingPeriod" + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "StudentCompetencyObjectiveSectionOrProgramChoice.StudentSectionAssociation": { + "paths": { + "beginDate": "$.studentSectionAssociations[*].studentSectionAssociationReference.beginDate", + "localCourseCode": "$.studentSectionAssociations[*].studentSectionAssociationReference.localCourseCode", + "schoolId": "$.studentSectionAssociations[*].studentSectionAssociationReference.schoolId", + "schoolYear": "$.studentSectionAssociations[*].studentSectionAssociationReference.schoolYear", + "sectionIdentifier": "$.studentSectionAssociations[*].studentSectionAssociationReference.sectionIdentifier", + "sessionName": "$.studentSectionAssociations[*].studentSectionAssociationReference.sessionName", + "studentUniqueId": "$.studentSectionAssociations[*].studentSectionAssociationReference.studentUniqueId" + }, + "pathOrder": [ + "beginDate", + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StudentSectionAssociation" + }, + "StudentCompetencyObjectiveSectionOrProgramChoice.GeneralStudentProgramAssociation": { + "paths": { + "beginDate": "$.generalStudentProgramAssociations[*].generalStudentProgramAssociationReference.beginDate", + "educationOrganizationId": "$.generalStudentProgramAssociations[*].generalStudentProgramAssociationReference.educationOrganizationId", + "programName": "$.generalStudentProgramAssociations[*].generalStudentProgramAssociationReference.programName", + "programTypeDescriptor": "$.generalStudentProgramAssociations[*].generalStudentProgramAssociationReference.programTypeDescriptor", + "studentUniqueId": "$.generalStudentProgramAssociations[*].generalStudentProgramAssociationReference.studentUniqueId" + }, + "pathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GeneralStudentProgramAssociation" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "gradingPeriodDescriptor", + "objective", + "objectiveGradeLevelDescriptor", + "periodSequence", + "schoolId", + "schoolYear", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentGradebookEntries": { + "resourceName": "StudentGradebookEntry", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentGradebookEntry", + "description": "This entity holds a student's grade or competency level for a gradebook entry.", + "type": "object", + "properties": { + "gradebookEntryReference": { + "type": "object", + "properties": { + "gradebookEntryIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a gradebook entry by the source system.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace URI for the source of the gradebook entry.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "gradebookEntryIdentifier", + "namespace" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "competencyLevelDescriptor": { + "type": "string", + "description": "The competency level assessed for the student for the referenced learning objective." + }, + "dateFulfilled": { + "type": "string", + "format": "date", + "description": "The date an assignment was turned in or the date of an assessment." + }, + "timeFulfilled": { + "type": "string", + "format": "time", + "description": "The time an assignment was turned in on the date fulfilled." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "pointsEarned": { + "type": "number", + "description": "The points earned for the submission. With extra credit, the points earned may exceed the max points." + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor." + }, + "submissionStatusDescriptor": { + "type": "string", + "description": "The status of the student's submission." + }, + "assignmentLateStatusDescriptor": { + "type": "string", + "description": "Status of whether the assignment was submitted after the due date and/or marked as." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "gradebookEntryReference", + "studentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentGradebookEntry", + "description": "This entity holds a student's grade or competency level for a gradebook entry.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "gradebookEntryReference": { + "type": "object", + "properties": { + "gradebookEntryIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a gradebook entry by the source system.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace URI for the source of the gradebook entry.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "gradebookEntryIdentifier", + "namespace" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "competencyLevelDescriptor": { + "type": "string", + "description": "The competency level assessed for the student for the referenced learning objective." + }, + "dateFulfilled": { + "type": "string", + "format": "date", + "description": "The date an assignment was turned in or the date of an assessment." + }, + "timeFulfilled": { + "type": "string", + "format": "time", + "description": "The time an assignment was turned in on the date fulfilled." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "pointsEarned": { + "type": "number", + "description": "The points earned for the submission. With extra credit, the points earned may exceed the max points." + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor." + }, + "submissionStatusDescriptor": { + "type": "string", + "description": "The status of the student's submission." + }, + "assignmentLateStatusDescriptor": { + "type": "string", + "description": "Status of whether the assignment was submitted after the due date and/or marked as." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "gradebookEntryReference", + "studentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentGradebookEntry", + "description": "This entity holds a student's grade or competency level for a gradebook entry.", + "type": "object", + "properties": { + "gradebookEntryReference": { + "type": "object", + "properties": { + "gradebookEntryIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a gradebook entry by the source system.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace URI for the source of the gradebook entry.", + "minLength": 5, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "gradebookEntryIdentifier", + "namespace" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "competencyLevelDescriptor": { + "type": "string", + "description": "The competency level assessed for the student for the referenced learning objective." + }, + "dateFulfilled": { + "type": "string", + "format": "date", + "description": "The date an assignment was turned in or the date of an assessment." + }, + "timeFulfilled": { + "type": "string", + "format": "time", + "description": "The time an assignment was turned in on the date fulfilled." + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the teacher that provides information in addition to the grade or assessment score.", + "minLength": 1, + "maxLength": 1024 + }, + "pointsEarned": { + "type": "number", + "description": "The points earned for the submission. With extra credit, the points earned may exceed the max points." + }, + "letterGradeEarned": { + "type": "string", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor.", + "minLength": 1, + "maxLength": 20 + }, + "numericGradeEarned": { + "type": "number", + "description": "A final or interim (grading period) indicator of student performance in a class as submitted by the instructor." + }, + "submissionStatusDescriptor": { + "type": "string", + "description": "The status of the student's submission." + }, + "assignmentLateStatusDescriptor": { + "type": "string", + "description": "Status of whether the assignment was submitted after the due date and/or marked as." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "GradebookEntry", + "Student" + ], + "documentPathsMapping": { + "GradebookEntry": { + "paths": { + "gradebookEntryIdentifier": "$.gradebookEntryReference.gradebookEntryIdentifier", + "namespace": "$.gradebookEntryReference.namespace" + }, + "pathOrder": [ + "gradebookEntryIdentifier", + "namespace" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GradebookEntry" + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "CompetencyLevel": { + "paths": { + "competencyLevelDescriptor": "$.competencyLevelDescriptor" + }, + "pathOrder": [ + "competencyLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CompetencyLevelDescriptor" + }, + "DateFulfilled": { + "paths": { + "dateFulfilled": "$.dateFulfilled" + }, + "pathOrder": [ + "dateFulfilled" + ], + "isReference": false + }, + "TimeFulfilled": { + "paths": { + "timeFulfilled": "$.timeFulfilled" + }, + "pathOrder": [ + "timeFulfilled" + ], + "isReference": false + }, + "DiagnosticStatement": { + "paths": { + "diagnosticStatement": "$.diagnosticStatement" + }, + "pathOrder": [ + "diagnosticStatement" + ], + "isReference": false + }, + "PointsEarned": { + "paths": { + "pointsEarned": "$.pointsEarned" + }, + "pathOrder": [ + "pointsEarned" + ], + "isReference": false + }, + "LetterGradeEarned": { + "paths": { + "letterGradeEarned": "$.letterGradeEarned" + }, + "pathOrder": [ + "letterGradeEarned" + ], + "isReference": false + }, + "NumericGradeEarned": { + "paths": { + "numericGradeEarned": "$.numericGradeEarned" + }, + "pathOrder": [ + "numericGradeEarned" + ], + "isReference": false + }, + "SubmissionStatus": { + "paths": { + "submissionStatusDescriptor": "$.submissionStatusDescriptor" + }, + "pathOrder": [ + "submissionStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SubmissionStatusDescriptor" + }, + "AssignmentLateStatus": { + "paths": { + "assignmentLateStatusDescriptor": "$.assignmentLateStatusDescriptor" + }, + "pathOrder": [ + "assignmentLateStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AssignmentLateStatusDescriptor" + } + }, + "identityPathOrder": [ + "gradebookEntryIdentifier", + "namespace", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentInterventionAttendanceEvents": { + "resourceName": "StudentInterventionAttendanceEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentInterventionAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for an intervention service.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "interventionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionIdentificationCode" + ] + }, + "interventionDuration": { + "type": "integer", + "description": "The duration in minutes in which the student participated in the intervention during this instance.", + "minimum": 0, + "maximum": 1440 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "interventionReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentInterventionAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for an intervention service.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "interventionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionIdentificationCode" + ] + }, + "interventionDuration": { + "type": "integer", + "description": "The duration in minutes in which the student participated in the intervention during this instance.", + "minimum": 0, + "maximum": 1440 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "interventionReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentInterventionAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for an intervention service.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "interventionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionIdentificationCode" + ] + }, + "interventionDuration": { + "type": "integer", + "description": "The duration in minutes in which the student participated in the intervention during this instance.", + "minimum": 0, + "maximum": 1440 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "Intervention" + ], + "documentPathsMapping": { + "AttendanceEvent.EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "AttendanceEvent.AttendanceEventCategory": { + "paths": { + "attendanceEventCategoryDescriptor": "$.attendanceEventCategoryDescriptor" + }, + "pathOrder": [ + "attendanceEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AttendanceEventCategoryDescriptor" + }, + "AttendanceEvent.AttendanceEventReason": { + "paths": { + "attendanceEventReason": "$.attendanceEventReason" + }, + "pathOrder": [ + "attendanceEventReason" + ], + "isReference": false + }, + "AttendanceEvent.EducationalEnvironment": { + "paths": { + "educationalEnvironmentDescriptor": "$.educationalEnvironmentDescriptor" + }, + "pathOrder": [ + "educationalEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationalEnvironmentDescriptor" + }, + "AttendanceEvent.EventDuration": { + "paths": { + "eventDuration": "$.eventDuration" + }, + "pathOrder": [ + "eventDuration" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Intervention": { + "paths": { + "educationOrganizationId": "$.interventionReference.educationOrganizationId", + "interventionIdentificationCode": "$.interventionReference.interventionIdentificationCode" + }, + "pathOrder": [ + "educationOrganizationId", + "interventionIdentificationCode" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Intervention" + }, + "InterventionDuration": { + "paths": { + "interventionDuration": "$.interventionDuration" + }, + "pathOrder": [ + "interventionDuration" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "interventionIdentificationCode", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentProgramAttendanceEvents": { + "resourceName": "StudentProgramAttendanceEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentProgramAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance to receive or participate in program services.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "programAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the program attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "educationOrganizationReference", + "programReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentProgramAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance to receive or participate in program services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "programAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the program attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "educationOrganizationReference", + "programReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentProgramAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance to receive or participate in program services.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "programAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the program attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "EducationOrganization", + "Program" + ], + "documentPathsMapping": { + "AttendanceEvent.EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "AttendanceEvent.AttendanceEventCategory": { + "paths": { + "attendanceEventCategoryDescriptor": "$.attendanceEventCategoryDescriptor" + }, + "pathOrder": [ + "attendanceEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AttendanceEventCategoryDescriptor" + }, + "AttendanceEvent.AttendanceEventReason": { + "paths": { + "attendanceEventReason": "$.attendanceEventReason" + }, + "pathOrder": [ + "attendanceEventReason" + ], + "isReference": false + }, + "AttendanceEvent.EducationalEnvironment": { + "paths": { + "educationalEnvironmentDescriptor": "$.educationalEnvironmentDescriptor" + }, + "pathOrder": [ + "educationalEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationalEnvironmentDescriptor" + }, + "AttendanceEvent.EventDuration": { + "paths": { + "eventDuration": "$.eventDuration" + }, + "pathOrder": [ + "eventDuration" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "ProgramAttendanceDuration": { + "paths": { + "programAttendanceDuration": "$.programAttendanceDuration" + }, + "pathOrder": [ + "programAttendanceDuration" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentSchoolAttendanceEvents": { + "resourceName": "StudentSchoolAttendanceEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for a school day.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "schoolAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the school attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "arrivalTime": { + "type": "string", + "format": "time", + "description": "The time of day the student arrived for the attendance event in ISO 8601 format." + }, + "departureTime": { + "type": "string", + "format": "time", + "description": "The time of day the student departed for the attendance event in ISO 8601 format." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "schoolReference", + "sessionReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for a school day.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "schoolAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the school attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "arrivalTime": { + "type": "string", + "format": "time", + "description": "The time of day the student arrived for the attendance event in ISO 8601 format." + }, + "departureTime": { + "type": "string", + "format": "time", + "description": "The time of day the student departed for the attendance event in ISO 8601 format." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "schoolReference", + "sessionReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for a school day.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "schoolAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the school attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "arrivalTime": { + "type": "string", + "format": "time", + "description": "The time of day the student arrived for the attendance event in ISO 8601 format." + }, + "departureTime": { + "type": "string", + "format": "time", + "description": "The time of day the student departed for the attendance event in ISO 8601 format." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.sessionReference.schoolId", + "targetJsonPath": "$.schoolReference.schoolId" + } + ], + "identityFullnames": [ + "Student", + "School", + "Session" + ], + "documentPathsMapping": { + "AttendanceEvent.EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "AttendanceEvent.AttendanceEventCategory": { + "paths": { + "attendanceEventCategoryDescriptor": "$.attendanceEventCategoryDescriptor" + }, + "pathOrder": [ + "attendanceEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AttendanceEventCategoryDescriptor" + }, + "AttendanceEvent.AttendanceEventReason": { + "paths": { + "attendanceEventReason": "$.attendanceEventReason" + }, + "pathOrder": [ + "attendanceEventReason" + ], + "isReference": false + }, + "AttendanceEvent.EducationalEnvironment": { + "paths": { + "educationalEnvironmentDescriptor": "$.educationalEnvironmentDescriptor" + }, + "pathOrder": [ + "educationalEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationalEnvironmentDescriptor" + }, + "AttendanceEvent.EventDuration": { + "paths": { + "eventDuration": "$.eventDuration" + }, + "pathOrder": [ + "eventDuration" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "Session": { + "paths": { + "schoolId": "$.sessionReference.schoolId", + "schoolYear": "$.sessionReference.schoolYear", + "sessionName": "$.sessionReference.sessionName" + }, + "pathOrder": [ + "schoolId", + "schoolYear", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Session" + }, + "SchoolAttendanceDuration": { + "paths": { + "schoolAttendanceDuration": "$.schoolAttendanceDuration" + }, + "pathOrder": [ + "schoolAttendanceDuration" + ], + "isReference": false + }, + "ArrivalTime": { + "paths": { + "arrivalTime": "$.arrivalTime" + }, + "pathOrder": [ + "arrivalTime" + ], + "isReference": false + }, + "DepartureTime": { + "paths": { + "departureTime": "$.departureTime" + }, + "pathOrder": [ + "departureTime" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "schoolId", + "schoolYear", + "sessionName", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentSectionAttendanceEvents": { + "resourceName": "StudentSectionAttendanceEvent", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSectionAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for a section.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "sectionAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the section attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "arrivalTime": { + "type": "string", + "format": "time", + "description": "The time of day the student arrived for the attendance event in ISO 8601 format." + }, + "departureTime": { + "type": "string", + "format": "time", + "description": "The time of day the student departed for the attendance event in ISO 8601 format." + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "sectionReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSectionAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for a section.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "sectionAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the section attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "arrivalTime": { + "type": "string", + "format": "time", + "description": "The time of day the student arrived for the attendance event in ISO 8601 format." + }, + "departureTime": { + "type": "string", + "format": "time", + "description": "The time of day the student departed for the attendance event in ISO 8601 format." + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "eventDate", + "attendanceEventCategoryDescriptor", + "studentReference", + "sectionReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSectionAttendanceEvent", + "description": "This event entity represents the recording of whether a student is in attendance for a section.", + "type": "object", + "properties": { + "eventDate": { + "type": "string", + "format": "date", + "description": "Date for this attendance event." + }, + "attendanceEventCategoryDescriptor": { + "type": "string", + "description": "A code describing the attendance event, for example: Present Unexcused absence Excused absence Tardy." + }, + "attendanceEventReason": { + "type": "string", + "description": "The reported reason for a student's absence.", + "minLength": 1, + "maxLength": 255 + }, + "educationalEnvironmentDescriptor": { + "type": "string", + "description": "The setting in which a child receives education and related services. This attribute is only used if it differs from the EducationalEnvironment of the Section. This is only used in the AttendanceEvent if different from the associated Section." + }, + "eventDuration": { + "type": "number", + "description": "The amount of time for the event as recognized by the school: 1 day = 1, 1/2 day = 0.5, 1/3 day = 0.33." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "sectionAttendanceDuration": { + "type": "integer", + "description": "The duration in minutes of the section attendance event.", + "minimum": 0, + "maximum": 1440 + }, + "arrivalTime": { + "type": "string", + "format": "time", + "description": "The time of day the student arrived for the attendance event in ISO 8601 format." + }, + "departureTime": { + "type": "string", + "format": "time", + "description": "The time of day the student departed for the attendance event in ISO 8601 format." + }, + "classPeriods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "classPeriodReference": { + "type": "object", + "properties": { + "classPeriodName": { + "type": "string", + "description": "An indication of the portion of a typical daily session in which students receive instruction in a specified subject (e.g., morning, sixth period, block period, or AB schedules).", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "classPeriodName", + "schoolId" + ] + } + }, + "additionalProperties": false, + "required": [ + "classPeriodReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.classPeriods[*].classPeriodReference.schoolId", + "targetJsonPath": "$.sectionReference.schoolId" + } + ], + "identityFullnames": [ + "Student", + "Section" + ], + "documentPathsMapping": { + "AttendanceEvent.EventDate": { + "paths": { + "eventDate": "$.eventDate" + }, + "pathOrder": [ + "eventDate" + ], + "isReference": false + }, + "AttendanceEvent.AttendanceEventCategory": { + "paths": { + "attendanceEventCategoryDescriptor": "$.attendanceEventCategoryDescriptor" + }, + "pathOrder": [ + "attendanceEventCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AttendanceEventCategoryDescriptor" + }, + "AttendanceEvent.AttendanceEventReason": { + "paths": { + "attendanceEventReason": "$.attendanceEventReason" + }, + "pathOrder": [ + "attendanceEventReason" + ], + "isReference": false + }, + "AttendanceEvent.EducationalEnvironment": { + "paths": { + "educationalEnvironmentDescriptor": "$.educationalEnvironmentDescriptor" + }, + "pathOrder": [ + "educationalEnvironmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationalEnvironmentDescriptor" + }, + "AttendanceEvent.EventDuration": { + "paths": { + "eventDuration": "$.eventDuration" + }, + "pathOrder": [ + "eventDuration" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Section": { + "paths": { + "localCourseCode": "$.sectionReference.localCourseCode", + "schoolId": "$.sectionReference.schoolId", + "schoolYear": "$.sectionReference.schoolYear", + "sectionIdentifier": "$.sectionReference.sectionIdentifier", + "sessionName": "$.sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + }, + "SectionAttendanceDuration": { + "paths": { + "sectionAttendanceDuration": "$.sectionAttendanceDuration" + }, + "pathOrder": [ + "sectionAttendanceDuration" + ], + "isReference": false + }, + "ArrivalTime": { + "paths": { + "arrivalTime": "$.arrivalTime" + }, + "pathOrder": [ + "arrivalTime" + ], + "isReference": false + }, + "DepartureTime": { + "paths": { + "departureTime": "$.departureTime" + }, + "pathOrder": [ + "departureTime" + ], + "isReference": false + }, + "ClassPeriod": { + "paths": { + "classPeriodName": "$.classPeriods[*].classPeriodReference.classPeriodName", + "schoolId": "$.classPeriods[*].classPeriodReference.schoolId" + }, + "pathOrder": [ + "classPeriodName", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "ClassPeriod" + } + }, + "identityPathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "studentUniqueId" + ], + "isSubclass": false + }, + "surveys": { + "resourceName": "Survey", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Survey", + "description": "A survey to identified or anonymous respondents.", + "type": "object", + "properties": { + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "surveyTitle": { + "type": "string", + "description": "The title of the survey.", + "minLength": 1, + "maxLength": 255 + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "surveyCategoryDescriptor": { + "type": "string", + "description": "The category or type of survey." + }, + "numberAdministered": { + "type": "integer", + "description": "Number of persons to whom this survey was administered." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyIdentifier", + "namespace", + "surveyTitle", + "schoolYearTypeReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Survey", + "description": "A survey to identified or anonymous respondents.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "surveyTitle": { + "type": "string", + "description": "The title of the survey.", + "minLength": 1, + "maxLength": 255 + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "surveyCategoryDescriptor": { + "type": "string", + "description": "The category or type of survey." + }, + "numberAdministered": { + "type": "integer", + "description": "Number of persons to whom this survey was administered." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyIdentifier", + "namespace", + "surveyTitle", + "schoolYearTypeReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.Survey", + "description": "A survey to identified or anonymous respondents.", + "type": "object", + "properties": { + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "surveyTitle": { + "type": "string", + "description": "The title of the survey.", + "minLength": 1, + "maxLength": 255 + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "sessionReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "schoolYear", + "sessionName" + ] + }, + "surveyCategoryDescriptor": { + "type": "string", + "description": "The category or type of survey." + }, + "numberAdministered": { + "type": "integer", + "description": "Number of persons to whom this survey was administered." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SurveyIdentifier", + "Namespace" + ], + "documentPathsMapping": { + "SurveyIdentifier": { + "paths": { + "surveyIdentifier": "$.surveyIdentifier" + }, + "pathOrder": [ + "surveyIdentifier" + ], + "isReference": false + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "SurveyTitle": { + "paths": { + "surveyTitle": "$.surveyTitle" + }, + "pathOrder": [ + "surveyTitle" + ], + "isReference": false + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "Session": { + "paths": { + "schoolId": "$.sessionReference.schoolId", + "schoolYear": "$.sessionReference.schoolYear", + "sessionName": "$.sessionReference.sessionName" + }, + "pathOrder": [ + "schoolId", + "schoolYear", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Session" + }, + "SurveyCategory": { + "paths": { + "surveyCategoryDescriptor": "$.surveyCategoryDescriptor" + }, + "pathOrder": [ + "surveyCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SurveyCategoryDescriptor" + }, + "NumberAdministered": { + "paths": { + "numberAdministered": "$.numberAdministered" + }, + "pathOrder": [ + "numberAdministered" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isSubclass": false + }, + "surveyQuestions": { + "resourceName": "SurveyQuestion", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyQuestion", + "description": "The questions for the survey.", + "type": "object", + "properties": { + "questionCode": { + "type": "string", + "description": "The identifying code for the question, unique for the survey.", + "minLength": 1, + "maxLength": 60 + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "questionFormDescriptor": { + "type": "string", + "description": "The form or type of question." + }, + "questionText": { + "type": "string", + "description": "The text of the question.", + "minLength": 1, + "maxLength": 1024 + }, + "responseChoices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sortOrder": { + "type": "integer", + "description": "Sort order of this ResponseChoice within the complete list of choices attached to a SurveyQuestion. If sort order doesn't apply, the value of NumericValue or a unique, possibly sequential numeric value." + }, + "numericValue": { + "type": "integer", + "description": "A valid numeric response. If paired with a TextValue, the numeric equivalent of the TextValue.", + "minimum": 0, + "maximum": 100 + }, + "textValue": { + "type": "string", + "description": "A valid text response. If paired with a NumericValue, the text equivalent of the NumericValue.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "sortOrder" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "surveySectionReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ] + }, + "matrices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "matrixElement": { + "type": "string", + "description": "For matrix questions, the text identifying each row of the matrix.", + "minLength": 1, + "maxLength": 255 + }, + "minRawScore": { + "type": "integer", + "description": "The minimum score possible on a survey." + }, + "maxRawScore": { + "type": "integer", + "description": "The maximum score possible on a survey." + } + }, + "additionalProperties": false, + "required": [ + "matrixElement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "questionCode", + "surveyReference", + "questionFormDescriptor", + "questionText" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyQuestion", + "description": "The questions for the survey.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "questionCode": { + "type": "string", + "description": "The identifying code for the question, unique for the survey.", + "minLength": 1, + "maxLength": 60 + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "questionFormDescriptor": { + "type": "string", + "description": "The form or type of question." + }, + "questionText": { + "type": "string", + "description": "The text of the question.", + "minLength": 1, + "maxLength": 1024 + }, + "responseChoices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sortOrder": { + "type": "integer", + "description": "Sort order of this ResponseChoice within the complete list of choices attached to a SurveyQuestion. If sort order doesn't apply, the value of NumericValue or a unique, possibly sequential numeric value." + }, + "numericValue": { + "type": "integer", + "description": "A valid numeric response. If paired with a TextValue, the numeric equivalent of the TextValue.", + "minimum": 0, + "maximum": 100 + }, + "textValue": { + "type": "string", + "description": "A valid text response. If paired with a NumericValue, the text equivalent of the NumericValue.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "sortOrder" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "surveySectionReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ] + }, + "matrices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "matrixElement": { + "type": "string", + "description": "For matrix questions, the text identifying each row of the matrix.", + "minLength": 1, + "maxLength": 255 + }, + "minRawScore": { + "type": "integer", + "description": "The minimum score possible on a survey." + }, + "maxRawScore": { + "type": "integer", + "description": "The maximum score possible on a survey." + } + }, + "additionalProperties": false, + "required": [ + "matrixElement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "questionCode", + "surveyReference", + "questionFormDescriptor", + "questionText" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyQuestion", + "description": "The questions for the survey.", + "type": "object", + "properties": { + "questionCode": { + "type": "string", + "description": "The identifying code for the question, unique for the survey.", + "minLength": 1, + "maxLength": 60 + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "questionFormDescriptor": { + "type": "string", + "description": "The form or type of question." + }, + "questionText": { + "type": "string", + "description": "The text of the question.", + "minLength": 1, + "maxLength": 1024 + }, + "responseChoices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sortOrder": { + "type": "integer", + "description": "Sort order of this ResponseChoice within the complete list of choices attached to a SurveyQuestion. If sort order doesn't apply, the value of NumericValue or a unique, possibly sequential numeric value." + }, + "numericValue": { + "type": "integer", + "description": "A valid numeric response. If paired with a TextValue, the numeric equivalent of the TextValue.", + "minimum": 0, + "maximum": 100 + }, + "textValue": { + "type": "string", + "description": "A valid text response. If paired with a NumericValue, the text equivalent of the NumericValue.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "sortOrder" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "surveySectionReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ] + }, + "matrices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "matrixElement": { + "type": "string", + "description": "For matrix questions, the text identifying each row of the matrix.", + "minLength": 1, + "maxLength": 255 + }, + "minRawScore": { + "type": "integer", + "description": "The minimum score possible on a survey." + }, + "maxRawScore": { + "type": "integer", + "description": "The maximum score possible on a survey." + } + }, + "additionalProperties": false, + "required": [ + "matrixElement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.surveySectionReference.namespace", + "targetJsonPath": "$.surveyReference.namespace" + }, + { + "sourceJsonPath": "$.surveySectionReference.surveyIdentifier", + "targetJsonPath": "$.surveyReference.surveyIdentifier" + } + ], + "identityFullnames": [ + "QuestionCode", + "Survey" + ], + "documentPathsMapping": { + "QuestionCode": { + "paths": { + "questionCode": "$.questionCode" + }, + "pathOrder": [ + "questionCode" + ], + "isReference": false + }, + "Survey": { + "paths": { + "namespace": "$.surveyReference.namespace", + "surveyIdentifier": "$.surveyReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Survey" + }, + "QuestionForm": { + "paths": { + "questionFormDescriptor": "$.questionFormDescriptor" + }, + "pathOrder": [ + "questionFormDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "QuestionFormDescriptor" + }, + "QuestionText": { + "paths": { + "questionText": "$.questionText" + }, + "pathOrder": [ + "questionText" + ], + "isReference": false + }, + "ResponseChoice.SortOrder": { + "paths": { + "sortOrder": "$.responseChoices[*].sortOrder" + }, + "pathOrder": [ + "sortOrder" + ], + "isReference": false + }, + "ResponseChoice.NumericValue": { + "paths": { + "numericValue": "$.responseChoices[*].numericValue" + }, + "pathOrder": [ + "numericValue" + ], + "isReference": false + }, + "ResponseChoice.TextValue": { + "paths": { + "textValue": "$.responseChoices[*].textValue" + }, + "pathOrder": [ + "textValue" + ], + "isReference": false + }, + "SurveySection": { + "paths": { + "namespace": "$.surveySectionReference.namespace", + "surveyIdentifier": "$.surveySectionReference.surveyIdentifier", + "surveySectionTitle": "$.surveySectionReference.surveySectionTitle" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveySection" + }, + "Matrix.MatrixElement": { + "paths": { + "matrixElement": "$.matrices[*].matrixElement" + }, + "pathOrder": [ + "matrixElement" + ], + "isReference": false + }, + "Matrix.MinRawScore": { + "paths": { + "minRawScore": "$.matrices[*].minRawScore" + }, + "pathOrder": [ + "minRawScore" + ], + "isReference": false + }, + "Matrix.MaxRawScore": { + "paths": { + "maxRawScore": "$.matrices[*].maxRawScore" + }, + "pathOrder": [ + "maxRawScore" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "namespace", + "questionCode", + "surveyIdentifier" + ], + "isSubclass": false + }, + "surveyQuestionResponses": { + "resourceName": "SurveyQuestionResponse", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyQuestionResponse", + "description": "The response to a survey question.", + "type": "object", + "properties": { + "surveyQuestionReference": { + "type": "object", + "properties": { + "questionCode": { + "type": "string", + "description": "The identifying code for the question, unique for the survey.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "questionCode", + "namespace", + "surveyIdentifier" + ] + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "noResponse": { + "type": "boolean", + "description": "Indicates there was no response to the question." + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "surveyQuestionResponseValueIdentifier": { + "type": "integer", + "description": "Primary key for the response value; a unique, usually sequential numeric value for a collection of responses, or potentially the value of NumericResponse for a single response." + }, + "numericResponse": { + "type": "integer", + "description": "A numeric response to the question.", + "minimum": 0, + "maximum": 100 + }, + "textResponse": { + "type": "string", + "description": "A text response to the question.", + "minLength": 1, + "maxLength": 2048 + } + }, + "additionalProperties": false, + "required": [ + "surveyQuestionResponseValueIdentifier" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "surveyQuestionMatrixElementResponses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "matrixElement": { + "type": "string", + "description": "For matrix questions, the text identifying each row of the matrix.", + "minLength": 1, + "maxLength": 255 + }, + "numericResponse": { + "type": "integer", + "description": "The numeric response to the question.", + "minimum": 0, + "maximum": 100 + }, + "textResponse": { + "type": "string", + "description": "The text response(s) for the question.", + "minLength": 1, + "maxLength": 2048 + }, + "noResponse": { + "type": "boolean", + "description": "Indicates there was no response to the question." + }, + "minNumericResponse": { + "type": "integer", + "description": "The minimum score response to the question." + }, + "maxNumericResponse": { + "type": "integer", + "description": "The maximum score response to the question." + } + }, + "additionalProperties": false, + "required": [ + "matrixElement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "comment": { + "type": "string", + "description": "Additional information provided by the responder about the question in the survey.", + "minLength": 1, + "maxLength": 1024 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyQuestionReference", + "surveyResponseReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyQuestionResponse", + "description": "The response to a survey question.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyQuestionReference": { + "type": "object", + "properties": { + "questionCode": { + "type": "string", + "description": "The identifying code for the question, unique for the survey.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "questionCode", + "namespace", + "surveyIdentifier" + ] + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "noResponse": { + "type": "boolean", + "description": "Indicates there was no response to the question." + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "surveyQuestionResponseValueIdentifier": { + "type": "integer", + "description": "Primary key for the response value; a unique, usually sequential numeric value for a collection of responses, or potentially the value of NumericResponse for a single response." + }, + "numericResponse": { + "type": "integer", + "description": "A numeric response to the question.", + "minimum": 0, + "maximum": 100 + }, + "textResponse": { + "type": "string", + "description": "A text response to the question.", + "minLength": 1, + "maxLength": 2048 + } + }, + "additionalProperties": false, + "required": [ + "surveyQuestionResponseValueIdentifier" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "surveyQuestionMatrixElementResponses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "matrixElement": { + "type": "string", + "description": "For matrix questions, the text identifying each row of the matrix.", + "minLength": 1, + "maxLength": 255 + }, + "numericResponse": { + "type": "integer", + "description": "The numeric response to the question.", + "minimum": 0, + "maximum": 100 + }, + "textResponse": { + "type": "string", + "description": "The text response(s) for the question.", + "minLength": 1, + "maxLength": 2048 + }, + "noResponse": { + "type": "boolean", + "description": "Indicates there was no response to the question." + }, + "minNumericResponse": { + "type": "integer", + "description": "The minimum score response to the question." + }, + "maxNumericResponse": { + "type": "integer", + "description": "The maximum score response to the question." + } + }, + "additionalProperties": false, + "required": [ + "matrixElement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "comment": { + "type": "string", + "description": "Additional information provided by the responder about the question in the survey.", + "minLength": 1, + "maxLength": 1024 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyQuestionReference", + "surveyResponseReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyQuestionResponse", + "description": "The response to a survey question.", + "type": "object", + "properties": { + "surveyQuestionReference": { + "type": "object", + "properties": { + "questionCode": { + "type": "string", + "description": "The identifying code for the question, unique for the survey.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "questionCode", + "namespace", + "surveyIdentifier" + ] + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "noResponse": { + "type": "boolean", + "description": "Indicates there was no response to the question." + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "surveyQuestionResponseValueIdentifier": { + "type": "integer", + "description": "Primary key for the response value; a unique, usually sequential numeric value for a collection of responses, or potentially the value of NumericResponse for a single response." + }, + "numericResponse": { + "type": "integer", + "description": "A numeric response to the question.", + "minimum": 0, + "maximum": 100 + }, + "textResponse": { + "type": "string", + "description": "A text response to the question.", + "minLength": 1, + "maxLength": 2048 + } + }, + "additionalProperties": false, + "required": [ + "surveyQuestionResponseValueIdentifier" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "surveyQuestionMatrixElementResponses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "matrixElement": { + "type": "string", + "description": "For matrix questions, the text identifying each row of the matrix.", + "minLength": 1, + "maxLength": 255 + }, + "numericResponse": { + "type": "integer", + "description": "The numeric response to the question.", + "minimum": 0, + "maximum": 100 + }, + "textResponse": { + "type": "string", + "description": "The text response(s) for the question.", + "minLength": 1, + "maxLength": 2048 + }, + "noResponse": { + "type": "boolean", + "description": "Indicates there was no response to the question." + }, + "minNumericResponse": { + "type": "integer", + "description": "The minimum score response to the question." + }, + "maxNumericResponse": { + "type": "integer", + "description": "The maximum score response to the question." + } + }, + "additionalProperties": false, + "required": [ + "matrixElement" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "comment": { + "type": "string", + "description": "Additional information provided by the responder about the question in the survey.", + "minLength": 1, + "maxLength": 1024 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.surveyResponseReference.namespace", + "targetJsonPath": "$.surveyQuestionReference.namespace" + }, + { + "sourceJsonPath": "$.surveyResponseReference.surveyIdentifier", + "targetJsonPath": "$.surveyQuestionReference.surveyIdentifier" + } + ], + "identityFullnames": [ + "SurveyQuestion", + "SurveyResponse" + ], + "documentPathsMapping": { + "SurveyQuestion": { + "paths": { + "namespace": "$.surveyQuestionReference.namespace", + "questionCode": "$.surveyQuestionReference.questionCode", + "surveyIdentifier": "$.surveyQuestionReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "questionCode", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveyQuestion" + }, + "SurveyResponse": { + "paths": { + "namespace": "$.surveyResponseReference.namespace", + "surveyIdentifier": "$.surveyResponseReference.surveyIdentifier", + "surveyResponseIdentifier": "$.surveyResponseReference.surveyResponseIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveyResponse" + }, + "NoResponse": { + "paths": { + "noResponse": "$.noResponse" + }, + "pathOrder": [ + "noResponse" + ], + "isReference": false + }, + "SurveyQuestionResponseValue.SurveyQuestionResponseValueIdentifier": { + "paths": { + "surveyQuestionResponseValueIdentifier": "$.values[*].surveyQuestionResponseValueIdentifier" + }, + "pathOrder": [ + "surveyQuestionResponseValueIdentifier" + ], + "isReference": false + }, + "SurveyQuestionResponseValue.NumericResponse": { + "paths": { + "numericResponse": "$.values[*].numericResponse" + }, + "pathOrder": [ + "numericResponse" + ], + "isReference": false + }, + "SurveyQuestionResponseValue.TextResponse": { + "paths": { + "textResponse": "$.values[*].textResponse" + }, + "pathOrder": [ + "textResponse" + ], + "isReference": false + }, + "SurveyQuestionMatrixElementResponse.MatrixElement": { + "paths": { + "matrixElement": "$.surveyQuestionMatrixElementResponses[*].matrixElement" + }, + "pathOrder": [ + "matrixElement" + ], + "isReference": false + }, + "SurveyQuestionMatrixElementResponse.NumericResponse": { + "paths": { + "numericResponse": "$.surveyQuestionMatrixElementResponses[*].numericResponse" + }, + "pathOrder": [ + "numericResponse" + ], + "isReference": false + }, + "SurveyQuestionMatrixElementResponse.TextResponse": { + "paths": { + "textResponse": "$.surveyQuestionMatrixElementResponses[*].textResponse" + }, + "pathOrder": [ + "textResponse" + ], + "isReference": false + }, + "SurveyQuestionMatrixElementResponse.NoResponse": { + "paths": { + "noResponse": "$.surveyQuestionMatrixElementResponses[*].noResponse" + }, + "pathOrder": [ + "noResponse" + ], + "isReference": false + }, + "SurveyQuestionMatrixElementResponse.MinNumericResponse": { + "paths": { + "minNumericResponse": "$.surveyQuestionMatrixElementResponses[*].minNumericResponse" + }, + "pathOrder": [ + "minNumericResponse" + ], + "isReference": false + }, + "SurveyQuestionMatrixElementResponse.MaxNumericResponse": { + "paths": { + "maxNumericResponse": "$.surveyQuestionMatrixElementResponses[*].maxNumericResponse" + }, + "pathOrder": [ + "maxNumericResponse" + ], + "isReference": false + }, + "Comment": { + "paths": { + "comment": "$.comment" + }, + "pathOrder": [ + "comment" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "namespace", + "questionCode", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isSubclass": false + }, + "surveyResponses": { + "resourceName": "SurveyResponse", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponse", + "description": "Responses to a Survey for named or anonymous persons.", + "type": "object", + "properties": { + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "responseDate": { + "type": "string", + "format": "date", + "description": "Date of the survey response." + }, + "responseTime": { + "type": "integer", + "description": "The amount of time (in seconds) it took for the respondent to complete the survey." + }, + "surveyLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "surveyLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "surveyLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMailAddress": { + "type": "string", + "description": "Email address of the respondent.", + "minLength": 7, + "maxLength": 128 + }, + "fullName": { + "type": "string", + "description": "Full name of the respondent.", + "maxLength": 80 + }, + "location": { + "type": "string", + "description": "Location of the respondent, often a city, district, or school.", + "minLength": 1, + "maxLength": 75 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "contactReference": { + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyResponseIdentifier", + "surveyReference", + "responseDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponse", + "description": "Responses to a Survey for named or anonymous persons.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "responseDate": { + "type": "string", + "format": "date", + "description": "Date of the survey response." + }, + "responseTime": { + "type": "integer", + "description": "The amount of time (in seconds) it took for the respondent to complete the survey." + }, + "surveyLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "surveyLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "surveyLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMailAddress": { + "type": "string", + "description": "Email address of the respondent.", + "minLength": 7, + "maxLength": 128 + }, + "fullName": { + "type": "string", + "description": "Full name of the respondent.", + "maxLength": 80 + }, + "location": { + "type": "string", + "description": "Location of the respondent, often a city, district, or school.", + "minLength": 1, + "maxLength": 75 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "contactReference": { + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyResponseIdentifier", + "surveyReference", + "responseDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponse", + "description": "Responses to a Survey for named or anonymous persons.", + "type": "object", + "properties": { + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "responseDate": { + "type": "string", + "format": "date", + "description": "Date of the survey response." + }, + "responseTime": { + "type": "integer", + "description": "The amount of time (in seconds) it took for the respondent to complete the survey." + }, + "surveyLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "surveyLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "surveyLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMailAddress": { + "type": "string", + "description": "Email address of the respondent.", + "minLength": 7, + "maxLength": 128 + }, + "fullName": { + "type": "string", + "description": "Full name of the respondent.", + "maxLength": 80 + }, + "location": { + "type": "string", + "description": "Location of the respondent, often a city, district, or school.", + "minLength": 1, + "maxLength": 75 + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "contactReference": { + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SurveyResponseIdentifier", + "Survey" + ], + "documentPathsMapping": { + "SurveyResponseIdentifier": { + "paths": { + "surveyResponseIdentifier": "$.surveyResponseIdentifier" + }, + "pathOrder": [ + "surveyResponseIdentifier" + ], + "isReference": false + }, + "Survey": { + "paths": { + "namespace": "$.surveyReference.namespace", + "surveyIdentifier": "$.surveyReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Survey" + }, + "ResponseDate": { + "paths": { + "responseDate": "$.responseDate" + }, + "pathOrder": [ + "responseDate" + ], + "isReference": false + }, + "ResponseTime": { + "paths": { + "responseTime": "$.responseTime" + }, + "pathOrder": [ + "responseTime" + ], + "isReference": false + }, + "SurveyLevel": { + "paths": { + "surveyLevelDescriptor": "$.surveyLevels[*].surveyLevelDescriptor" + }, + "pathOrder": [ + "surveyLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SurveyLevelDescriptor" + }, + "ElectronicMailAddress": { + "paths": { + "electronicMailAddress": "$.electronicMailAddress" + }, + "pathOrder": [ + "electronicMailAddress" + ], + "isReference": false + }, + "FullName": { + "paths": { + "fullName": "$.fullName" + }, + "pathOrder": [ + "fullName" + ], + "isReference": false + }, + "Location": { + "paths": { + "location": "$.location" + }, + "pathOrder": [ + "location" + ], + "isReference": false + }, + "SurveyResponderChoice.Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "SurveyResponderChoice.Contact": { + "paths": { + "contactUniqueId": "$.contactReference.contactUniqueId" + }, + "pathOrder": [ + "contactUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Contact" + }, + "SurveyResponderChoice.Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + } + }, + "identityPathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isSubclass": false + }, + "surveySections": { + "resourceName": "SurveySection", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySection", + "description": "The section of questions for the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyReference", + "surveySectionTitle" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySection", + "description": "The section of questions for the survey.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyReference", + "surveySectionTitle" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySection", + "description": "The section of questions for the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Survey", + "SurveySectionTitle" + ], + "documentPathsMapping": { + "Survey": { + "paths": { + "namespace": "$.surveyReference.namespace", + "surveyIdentifier": "$.surveyReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Survey" + }, + "SurveySectionTitle": { + "paths": { + "surveySectionTitle": "$.surveySectionTitle" + }, + "pathOrder": [ + "surveySectionTitle" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ], + "isSubclass": false + }, + "surveySectionResponses": { + "resourceName": "SurveySectionResponse", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponse", + "description": "Optional information about the responses provided for a section of a survey.", + "type": "object", + "properties": { + "surveySectionReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ] + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "sectionRating": { + "type": "number", + "description": "Numeric rating computed from the survey responses for the section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveySectionReference", + "surveyResponseReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponse", + "description": "Optional information about the responses provided for a section of a survey.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveySectionReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ] + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "sectionRating": { + "type": "number", + "description": "Numeric rating computed from the survey responses for the section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveySectionReference", + "surveyResponseReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponse", + "description": "Optional information about the responses provided for a section of a survey.", + "type": "object", + "properties": { + "surveySectionReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ] + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "sectionRating": { + "type": "number", + "description": "Numeric rating computed from the survey responses for the section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.surveyResponseReference.namespace", + "targetJsonPath": "$.surveySectionReference.namespace" + }, + { + "sourceJsonPath": "$.surveyResponseReference.surveyIdentifier", + "targetJsonPath": "$.surveySectionReference.surveyIdentifier" + } + ], + "identityFullnames": [ + "SurveySection", + "SurveyResponse" + ], + "documentPathsMapping": { + "SurveySection": { + "paths": { + "namespace": "$.surveySectionReference.namespace", + "surveyIdentifier": "$.surveySectionReference.surveyIdentifier", + "surveySectionTitle": "$.surveySectionReference.surveySectionTitle" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveySectionTitle" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveySection" + }, + "SurveyResponse": { + "paths": { + "namespace": "$.surveyResponseReference.namespace", + "surveyIdentifier": "$.surveyResponseReference.surveyIdentifier", + "surveyResponseIdentifier": "$.surveyResponseReference.surveyResponseIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveyResponse" + }, + "SectionRating": { + "paths": { + "sectionRating": "$.sectionRating" + }, + "pathOrder": [ + "sectionRating" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ], + "isSubclass": false + }, + "educationOrganizationInterventionPrescriptionAssociations": { + "resourceName": "EducationOrganizationInterventionPrescriptionAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationInterventionPrescriptionAssociation", + "description": "This association indicates interventions made available by an education organization. Often, a district-level education organization purchases a set of intervention prescriptions and makes them available to its schools for use on demand.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The begin date of the period during which the intervention prescription is available." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date of the period during which the intervention prescription is available." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationReference", + "interventionPrescriptionReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationInterventionPrescriptionAssociation", + "description": "This association indicates interventions made available by an education organization. Often, a district-level education organization purchases a set of intervention prescriptions and makes them available to its schools for use on demand.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The begin date of the period during which the intervention prescription is available." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date of the period during which the intervention prescription is available." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationReference", + "interventionPrescriptionReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationInterventionPrescriptionAssociation", + "description": "This association indicates interventions made available by an education organization. Often, a district-level education organization purchases a set of intervention prescriptions and makes them available to its schools for use on demand.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "interventionPrescriptionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionPrescriptionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention prescription.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The begin date of the period during which the intervention prescription is available." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The end date of the period during which the intervention prescription is available." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "InterventionPrescription" + ], + "documentPathsMapping": { + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "InterventionPrescription": { + "paths": { + "educationOrganizationId": "$.interventionPrescriptionReference.educationOrganizationId", + "interventionPrescriptionIdentificationCode": "$.interventionPrescriptionReference.interventionPrescriptionIdentificationCode" + }, + "pathOrder": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "InterventionPrescription" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "interventionPrescriptionIdentificationCode" + ], + "isSubclass": false + }, + "educationOrganizationNetworkAssociations": { + "resourceName": "EducationOrganizationNetworkAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationNetworkAssociation", + "description": "Properties of the association between the education organization and its network(s).", + "type": "object", + "properties": { + "educationOrganizationNetworkReference": { + "type": "object", + "properties": { + "educationOrganizationNetworkId": { + "type": "integer", + "description": "The identifier assigned to a network of education organizations." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationNetworkId" + ] + }, + "memberEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The date on which the education organization joined this network." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The date on which the education organization left this network." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationNetworkReference", + "memberEducationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationNetworkAssociation", + "description": "Properties of the association between the education organization and its network(s).", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationNetworkReference": { + "type": "object", + "properties": { + "educationOrganizationNetworkId": { + "type": "integer", + "description": "The identifier assigned to a network of education organizations." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationNetworkId" + ] + }, + "memberEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The date on which the education organization joined this network." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The date on which the education organization left this network." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationNetworkReference", + "memberEducationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationNetworkAssociation", + "description": "Properties of the association between the education organization and its network(s).", + "type": "object", + "properties": { + "educationOrganizationNetworkReference": { + "type": "object", + "properties": { + "educationOrganizationNetworkId": { + "type": "integer", + "description": "The identifier assigned to a network of education organizations." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationNetworkId" + ] + }, + "memberEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The date on which the education organization joined this network." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The date on which the education organization left this network." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganizationNetwork", + "MemberEducationOrganization" + ], + "documentPathsMapping": { + "EducationOrganizationNetwork": { + "paths": { + "educationOrganizationNetworkId": "$.educationOrganizationNetworkReference.educationOrganizationNetworkId" + }, + "pathOrder": [ + "educationOrganizationNetworkId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganizationNetwork" + }, + "MemberEducationOrganization": { + "paths": { + "educationOrganizationId": "$.memberEducationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "educationOrganizationNetworkId" + ], + "isSubclass": false + }, + "educationOrganizationPeerAssociations": { + "resourceName": "EducationOrganizationPeerAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationPeerAssociation", + "description": "The association from an education organization to its peers.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "peerEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationReference", + "peerEducationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationPeerAssociation", + "description": "The association from an education organization to its peers.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "peerEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationReference", + "peerEducationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationPeerAssociation", + "description": "The association from an education organization to its peers.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "peerEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "PeerEducationOrganization" + ], + "documentPathsMapping": { + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "PeerEducationOrganization": { + "paths": { + "educationOrganizationId": "$.peerEducationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + } + }, + "identityPathOrder": [ + "educationOrganizationId" + ], + "isSubclass": false + }, + "feederSchoolAssociations": { + "resourceName": "FeederSchoolAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FeederSchoolAssociation", + "description": "The association from feeder school to the receiving school.", + "type": "object", + "properties": { + "feederSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the first day of the feeder school association." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the last day of the feeder school association." + }, + "feederRelationshipDescription": { + "type": "string", + "description": "Describes the relationship from the feeder school to the receiving school, for example by program emphasis, such as special education, language immersion, science, or performing art.", + "minLength": 1, + "maxLength": 1024 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "feederSchoolReference", + "schoolReference", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FeederSchoolAssociation", + "description": "The association from feeder school to the receiving school.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "feederSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the first day of the feeder school association." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the last day of the feeder school association." + }, + "feederRelationshipDescription": { + "type": "string", + "description": "Describes the relationship from the feeder school to the receiving school, for example by program emphasis, such as special education, language immersion, science, or performing art.", + "minLength": 1, + "maxLength": 1024 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "feederSchoolReference", + "schoolReference", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.FeederSchoolAssociation", + "description": "The association from feeder school to the receiving school.", + "type": "object", + "properties": { + "feederSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the first day of the feeder school association." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the last day of the feeder school association." + }, + "feederRelationshipDescription": { + "type": "string", + "description": "Describes the relationship from the feeder school to the receiving school, for example by program emphasis, such as special education, language immersion, science, or performing art.", + "minLength": 1, + "maxLength": 1024 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "FeederSchool", + "School", + "BeginDate" + ], + "documentPathsMapping": { + "FeederSchool": { + "paths": { + "schoolId": "$.feederSchoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "FeederRelationshipDescription": { + "paths": { + "feederRelationshipDescription": "$.feederRelationshipDescription" + }, + "pathOrder": [ + "feederRelationshipDescription" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "schoolId" + ], + "isSubclass": false + }, + "learningStandardEquivalenceAssociations": { + "resourceName": "LearningStandardEquivalenceAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LearningStandardEquivalenceAssociation", + "description": "Indicates a directional association of equivalence from a source to a target learning standard.", + "type": "object", + "properties": { + "sourceLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "targetLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "namespace": { + "type": "string", + "description": "The namespace of the organization that has created and owns the association.", + "minLength": 5, + "maxLength": 255 + }, + "effectiveDate": { + "type": "string", + "format": "date", + "description": "The date that the association is considered to be applicable or effective." + }, + "learningStandardEquivalenceStrengthDescriptor": { + "type": "string", + "description": "A measure that indicates the strength or quality of the equivalence relationship." + }, + "learningStandardEquivalenceStrengthDescription": { + "type": "string", + "description": "Captures supplemental information on the relationship. Recommended for use only when the match is partial.", + "minLength": 1, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "sourceLearningStandardReference", + "targetLearningStandardReference", + "namespace" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LearningStandardEquivalenceAssociation", + "description": "Indicates a directional association of equivalence from a source to a target learning standard.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "sourceLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "targetLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "namespace": { + "type": "string", + "description": "The namespace of the organization that has created and owns the association.", + "minLength": 5, + "maxLength": 255 + }, + "effectiveDate": { + "type": "string", + "format": "date", + "description": "The date that the association is considered to be applicable or effective." + }, + "learningStandardEquivalenceStrengthDescriptor": { + "type": "string", + "description": "A measure that indicates the strength or quality of the equivalence relationship." + }, + "learningStandardEquivalenceStrengthDescription": { + "type": "string", + "description": "Captures supplemental information on the relationship. Recommended for use only when the match is partial.", + "minLength": 1, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "sourceLearningStandardReference", + "targetLearningStandardReference", + "namespace" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LearningStandardEquivalenceAssociation", + "description": "Indicates a directional association of equivalence from a source to a target learning standard.", + "type": "object", + "properties": { + "sourceLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "targetLearningStandardReference": { + "type": "object", + "properties": { + "learningStandardId": { + "type": "string", + "description": "The identifier for the specific learning standard (e.g., 111.15.3.1.A).", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "learningStandardId" + ] + }, + "namespace": { + "type": "string", + "description": "The namespace of the organization that has created and owns the association.", + "minLength": 5, + "maxLength": 255 + }, + "effectiveDate": { + "type": "string", + "format": "date", + "description": "The date that the association is considered to be applicable or effective." + }, + "learningStandardEquivalenceStrengthDescriptor": { + "type": "string", + "description": "A measure that indicates the strength or quality of the equivalence relationship." + }, + "learningStandardEquivalenceStrengthDescription": { + "type": "string", + "description": "Captures supplemental information on the relationship. Recommended for use only when the match is partial.", + "minLength": 1, + "maxLength": 255 + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SourceLearningStandard", + "TargetLearningStandard", + "Namespace" + ], + "documentPathsMapping": { + "SourceLearningStandard": { + "paths": { + "learningStandardId": "$.sourceLearningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "TargetLearningStandard": { + "paths": { + "learningStandardId": "$.targetLearningStandardReference.learningStandardId" + }, + "pathOrder": [ + "learningStandardId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LearningStandard" + }, + "Namespace": { + "paths": { + "namespace": "$.namespace" + }, + "pathOrder": [ + "namespace" + ], + "isReference": false + }, + "EffectiveDate": { + "paths": { + "effectiveDate": "$.effectiveDate" + }, + "pathOrder": [ + "effectiveDate" + ], + "isReference": false + }, + "LearningStandardEquivalenceStrength": { + "paths": { + "learningStandardEquivalenceStrengthDescriptor": "$.learningStandardEquivalenceStrengthDescriptor" + }, + "pathOrder": [ + "learningStandardEquivalenceStrengthDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LearningStandardEquivalenceStrengthDescriptor" + }, + "LearningStandardEquivalenceStrengthDescription": { + "paths": { + "learningStandardEquivalenceStrengthDescription": "$.learningStandardEquivalenceStrengthDescription" + }, + "pathOrder": [ + "learningStandardEquivalenceStrengthDescription" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "learningStandardId", + "namespace" + ], + "isSubclass": false + }, + "staffCohortAssociations": { + "resourceName": "StaffCohortAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffCohortAssociation", + "description": "This association indicates the staff associated with a cohort of students.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Start date for the association of staff to this cohort." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "End date for the association of staff to this cohort." + }, + "studentRecordAccess": { + "type": "boolean", + "description": "Indicator of whether the staff has access to the student records of the cohort per district interpretation of FERPA and other privacy laws, regulations, and policies." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "cohortReference", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffCohortAssociation", + "description": "This association indicates the staff associated with a cohort of students.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Start date for the association of staff to this cohort." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "End date for the association of staff to this cohort." + }, + "studentRecordAccess": { + "type": "boolean", + "description": "Indicator of whether the staff has access to the student records of the cohort per district interpretation of FERPA and other privacy laws, regulations, and policies." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "cohortReference", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffCohortAssociation", + "description": "This association indicates the staff associated with a cohort of students.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Start date for the association of staff to this cohort." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "End date for the association of staff to this cohort." + }, + "studentRecordAccess": { + "type": "boolean", + "description": "Indicator of whether the staff has access to the student records of the cohort per district interpretation of FERPA and other privacy laws, regulations, and policies." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "Cohort", + "BeginDate" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "Cohort": { + "paths": { + "cohortIdentifier": "$.cohortReference.cohortIdentifier", + "educationOrganizationId": "$.cohortReference.educationOrganizationId" + }, + "pathOrder": [ + "cohortIdentifier", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Cohort" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "StudentRecordAccess": { + "paths": { + "studentRecordAccess": "$.studentRecordAccess" + }, + "pathOrder": [ + "studentRecordAccess" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "cohortIdentifier", + "educationOrganizationId", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffDisciplineIncidentAssociations": { + "resourceName": "StaffDisciplineIncidentAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffDisciplineIncidentAssociation", + "description": "This association indicates those staff who were victims, perpetrators, witnesses, and reporters for a discipline incident.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "disciplineIncidentReference", + "disciplineIncidentParticipationCodes" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffDisciplineIncidentAssociation", + "description": "This association indicates those staff who were victims, perpetrators, witnesses, and reporters for a discipline incident.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "disciplineIncidentReference", + "disciplineIncidentParticipationCodes" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffDisciplineIncidentAssociation", + "description": "This association indicates those staff who were victims, perpetrators, witnesses, and reporters for a discipline incident.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "DisciplineIncident" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "DisciplineIncident": { + "paths": { + "incidentIdentifier": "$.disciplineIncidentReference.incidentIdentifier", + "schoolId": "$.disciplineIncidentReference.schoolId" + }, + "pathOrder": [ + "incidentIdentifier", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "DisciplineIncident" + }, + "DisciplineIncidentParticipationCode": { + "paths": { + "disciplineIncidentParticipationCodeDescriptor": "$.disciplineIncidentParticipationCodes[*].disciplineIncidentParticipationCodeDescriptor" + }, + "pathOrder": [ + "disciplineIncidentParticipationCodeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisciplineIncidentParticipationCodeDescriptor" + } + }, + "identityPathOrder": [ + "incidentIdentifier", + "schoolId", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffEducationOrganizationAssignmentAssociations": { + "resourceName": "StaffEducationOrganizationAssignmentAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationAssignmentAssociation", + "description": "This association indicates the education organization to which a staff member provides services.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "staffClassificationDescriptor": { + "type": "string", + "description": "The titles of employment, official status, or rank of education staff." + }, + "positionTitle": { + "type": "string", + "description": "The descriptive name of an individual's position.", + "minLength": 1, + "maxLength": 100 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the start or effective date of a staff member's employment, contract, or relationship with the education organization." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the end or termination date of a staff member's employment, contract, or relationship with the education organization." + }, + "orderOfAssignment": { + "type": "integer", + "description": "Describes whether the assignment is this the staff member's primary assignment, secondary assignment, etc." + }, + "staffEducationOrganizationEmploymentAssociationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract." + }, + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "employmentStatusDescriptor", + "staffUniqueId" + ] + }, + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The ratio between the hours of work expected in a position and the hours of work normally expected in a full-time position in the same setting." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "educationOrganizationReference", + "staffClassificationDescriptor", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationAssignmentAssociation", + "description": "This association indicates the education organization to which a staff member provides services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "staffClassificationDescriptor": { + "type": "string", + "description": "The titles of employment, official status, or rank of education staff." + }, + "positionTitle": { + "type": "string", + "description": "The descriptive name of an individual's position.", + "minLength": 1, + "maxLength": 100 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the start or effective date of a staff member's employment, contract, or relationship with the education organization." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the end or termination date of a staff member's employment, contract, or relationship with the education organization." + }, + "orderOfAssignment": { + "type": "integer", + "description": "Describes whether the assignment is this the staff member's primary assignment, secondary assignment, etc." + }, + "staffEducationOrganizationEmploymentAssociationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract." + }, + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "employmentStatusDescriptor", + "staffUniqueId" + ] + }, + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The ratio between the hours of work expected in a position and the hours of work normally expected in a full-time position in the same setting." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "educationOrganizationReference", + "staffClassificationDescriptor", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationAssignmentAssociation", + "description": "This association indicates the education organization to which a staff member provides services.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "staffClassificationDescriptor": { + "type": "string", + "description": "The titles of employment, official status, or rank of education staff." + }, + "positionTitle": { + "type": "string", + "description": "The descriptive name of an individual's position.", + "minLength": 1, + "maxLength": 100 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the start or effective date of a staff member's employment, contract, or relationship with the education organization." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the end or termination date of a staff member's employment, contract, or relationship with the education organization." + }, + "orderOfAssignment": { + "type": "integer", + "description": "Describes whether the assignment is this the staff member's primary assignment, secondary assignment, etc." + }, + "staffEducationOrganizationEmploymentAssociationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract." + }, + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "employmentStatusDescriptor", + "staffUniqueId" + ] + }, + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The ratio between the hours of work expected in a position and the hours of work normally expected in a full-time position in the same setting." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.staffEducationOrganizationEmploymentAssociationReference.staffUniqueId", + "targetJsonPath": "$.staffReference.staffUniqueId" + } + ], + "identityFullnames": [ + "Staff", + "EducationOrganization", + "StaffClassification", + "BeginDate" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "StaffClassification": { + "paths": { + "staffClassificationDescriptor": "$.staffClassificationDescriptor" + }, + "pathOrder": [ + "staffClassificationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StaffClassificationDescriptor" + }, + "PositionTitle": { + "paths": { + "positionTitle": "$.positionTitle" + }, + "pathOrder": [ + "positionTitle" + ], + "isReference": false + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "OrderOfAssignment": { + "paths": { + "orderOfAssignment": "$.orderOfAssignment" + }, + "pathOrder": [ + "orderOfAssignment" + ], + "isReference": false + }, + "StaffEducationOrganizationEmploymentAssociation": { + "paths": { + "educationOrganizationId": "$.staffEducationOrganizationEmploymentAssociationReference.educationOrganizationId", + "employmentStatusDescriptor": "$.staffEducationOrganizationEmploymentAssociationReference.employmentStatusDescriptor", + "staffUniqueId": "$.staffEducationOrganizationEmploymentAssociationReference.staffUniqueId" + }, + "pathOrder": [ + "educationOrganizationId", + "employmentStatusDescriptor", + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StaffEducationOrganizationEmploymentAssociation" + }, + "Credential": { + "paths": { + "credentialIdentifier": "$.credentialReference.credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor": "$.credentialReference.stateOfIssueStateAbbreviationDescriptor" + }, + "pathOrder": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Credential" + }, + "FullTimeEquivalency": { + "paths": { + "fullTimeEquivalency": "$.fullTimeEquivalency" + }, + "pathOrder": [ + "fullTimeEquivalency" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "staffClassificationDescriptor", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffEducationOrganizationContactAssociations": { + "resourceName": "StaffEducationOrganizationContactAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationContactAssociation", + "description": "This association provides the contact information of the staff associated with the education organization.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "address": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "contactTitle": { + "type": "string", + "description": "The title of the contact in the context of the education organization.", + "minLength": 1, + "maxLength": 75 + }, + "contactTypeDescriptor": { + "type": "string", + "description": "Indicates the type for the contact information." + }, + "electronicMailAddress": { + "type": "string", + "description": "The email for the contact associated with the education organization.", + "minLength": 7, + "maxLength": 128 + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "educationOrganizationReference", + "contactTitle", + "electronicMailAddress" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationContactAssociation", + "description": "This association provides the contact information of the staff associated with the education organization.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "address": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "contactTitle": { + "type": "string", + "description": "The title of the contact in the context of the education organization.", + "minLength": 1, + "maxLength": 75 + }, + "contactTypeDescriptor": { + "type": "string", + "description": "Indicates the type for the contact information." + }, + "electronicMailAddress": { + "type": "string", + "description": "The email for the contact associated with the education organization.", + "minLength": 7, + "maxLength": 128 + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "educationOrganizationReference", + "contactTitle", + "electronicMailAddress" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationContactAssociation", + "description": "This association provides the contact information of the staff associated with the education organization.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "address": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "contactTitle": { + "type": "string", + "description": "The title of the contact in the context of the education organization.", + "minLength": 1, + "maxLength": 75 + }, + "contactTypeDescriptor": { + "type": "string", + "description": "Indicates the type for the contact information." + }, + "electronicMailAddress": { + "type": "string", + "description": "The email for the contact associated with the education organization.", + "minLength": 7, + "maxLength": 128 + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "EducationOrganization", + "ContactTitle" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.address.streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.address.apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.address.buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.address.city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.address.stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.address.postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.address.nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.address.countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.address.latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.address.longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.address.periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.address.periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.address.addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.address.doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.address.congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.address.localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "ContactTitle": { + "paths": { + "contactTitle": "$.contactTitle" + }, + "pathOrder": [ + "contactTitle" + ], + "isReference": false + }, + "ContactType": { + "paths": { + "contactTypeDescriptor": "$.contactTypeDescriptor" + }, + "pathOrder": [ + "contactTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ContactTypeDescriptor" + }, + "ElectronicMailAddress": { + "paths": { + "electronicMailAddress": "$.electronicMailAddress" + }, + "pathOrder": [ + "electronicMailAddress" + ], + "isReference": false + }, + "Telephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.telephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "Telephone.TelephoneNumberType": { + "paths": { + "telephoneNumberTypeDescriptor": "$.telephones[*].telephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "telephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TelephoneNumberTypeDescriptor" + }, + "Telephone.OrderOfPriority": { + "paths": { + "orderOfPriority": "$.telephones[*].orderOfPriority" + }, + "pathOrder": [ + "orderOfPriority" + ], + "isReference": false + }, + "Telephone.TextMessageCapabilityIndicator": { + "paths": { + "textMessageCapabilityIndicator": "$.telephones[*].textMessageCapabilityIndicator" + }, + "pathOrder": [ + "textMessageCapabilityIndicator" + ], + "isReference": false + }, + "Telephone.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.telephones[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "contactTitle", + "educationOrganizationId", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffEducationOrganizationEmploymentAssociations": { + "resourceName": "StaffEducationOrganizationEmploymentAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationEmploymentAssociation", + "description": "This association indicates the education organization an employee, contractor, volunteer, or other service provider is formally associated with typically indicated by which organization the staff member has a services contract with or receives compensation from.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract." + }, + "hireDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was hired for a position." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a contract between an individual and a governing authority ends or is terminated under the provisions of the contract (or the date on which the agreement is made invalid)." + }, + "separationDescriptor": { + "type": "string", + "description": "Type of employment separation." + }, + "separationReasonDescriptor": { + "type": "string", + "description": "Reason for terminating the employment." + }, + "department": { + "type": "string", + "description": "The department or suborganization the employee/contractor is associated with in the education organization.", + "minLength": 1, + "maxLength": 60 + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The ratio between the hours of work expected in a position and the hours of work normally expected in a full-time position in the same setting." + }, + "offerDate": { + "type": "string", + "format": "date", + "description": "Date at which the staff member was made an official offer for this employment." + }, + "hourlyWage": { + "type": "number", + "description": "Hourly wage associated with the employment position being reported." + }, + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "educationOrganizationReference", + "employmentStatusDescriptor", + "hireDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationEmploymentAssociation", + "description": "This association indicates the education organization an employee, contractor, volunteer, or other service provider is formally associated with typically indicated by which organization the staff member has a services contract with or receives compensation from.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract." + }, + "hireDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was hired for a position." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a contract between an individual and a governing authority ends or is terminated under the provisions of the contract (or the date on which the agreement is made invalid)." + }, + "separationDescriptor": { + "type": "string", + "description": "Type of employment separation." + }, + "separationReasonDescriptor": { + "type": "string", + "description": "Reason for terminating the employment." + }, + "department": { + "type": "string", + "description": "The department or suborganization the employee/contractor is associated with in the education organization.", + "minLength": 1, + "maxLength": 60 + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The ratio between the hours of work expected in a position and the hours of work normally expected in a full-time position in the same setting." + }, + "offerDate": { + "type": "string", + "format": "date", + "description": "Date at which the staff member was made an official offer for this employment." + }, + "hourlyWage": { + "type": "number", + "description": "Hourly wage associated with the employment position being reported." + }, + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "educationOrganizationReference", + "employmentStatusDescriptor", + "hireDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffEducationOrganizationEmploymentAssociation", + "description": "This association indicates the education organization an employee, contractor, volunteer, or other service provider is formally associated with typically indicated by which organization the staff member has a services contract with or receives compensation from.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "employmentStatusDescriptor": { + "type": "string", + "description": "Reflects the type of employment or contract." + }, + "hireDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual was hired for a position." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which a contract between an individual and a governing authority ends or is terminated under the provisions of the contract (or the date on which the agreement is made invalid)." + }, + "separationDescriptor": { + "type": "string", + "description": "Type of employment separation." + }, + "separationReasonDescriptor": { + "type": "string", + "description": "Reason for terminating the employment." + }, + "department": { + "type": "string", + "description": "The department or suborganization the employee/contractor is associated with in the education organization.", + "minLength": 1, + "maxLength": 60 + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The ratio between the hours of work expected in a position and the hours of work normally expected in a full-time position in the same setting." + }, + "offerDate": { + "type": "string", + "format": "date", + "description": "Date at which the staff member was made an official offer for this employment." + }, + "hourlyWage": { + "type": "number", + "description": "Hourly wage associated with the employment position being reported." + }, + "credentialReference": { + "type": "object", + "properties": { + "credentialIdentifier": { + "type": "string", + "description": "Identifier or serial number assigned to the credential.", + "minLength": 1, + "maxLength": 60 + }, + "stateOfIssueStateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which a license/credential was issued." + } + }, + "additionalProperties": false, + "required": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "EducationOrganization", + "EmploymentStatus" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "EmploymentStatus": { + "paths": { + "employmentStatusDescriptor": "$.employmentStatusDescriptor" + }, + "pathOrder": [ + "employmentStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EmploymentStatusDescriptor" + }, + "EmploymentPeriod.HireDate": { + "paths": { + "hireDate": "$.hireDate" + }, + "pathOrder": [ + "hireDate" + ], + "isReference": false + }, + "EmploymentPeriod.EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "EmploymentPeriod.Separation": { + "paths": { + "separationDescriptor": "$.separationDescriptor" + }, + "pathOrder": [ + "separationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SeparationDescriptor" + }, + "EmploymentPeriod.SeparationReason": { + "paths": { + "separationReasonDescriptor": "$.separationReasonDescriptor" + }, + "pathOrder": [ + "separationReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SeparationReasonDescriptor" + }, + "Department": { + "paths": { + "department": "$.department" + }, + "pathOrder": [ + "department" + ], + "isReference": false + }, + "FullTimeEquivalency": { + "paths": { + "fullTimeEquivalency": "$.fullTimeEquivalency" + }, + "pathOrder": [ + "fullTimeEquivalency" + ], + "isReference": false + }, + "OfferDate": { + "paths": { + "offerDate": "$.offerDate" + }, + "pathOrder": [ + "offerDate" + ], + "isReference": false + }, + "HourlyWage": { + "paths": { + "hourlyWage": "$.hourlyWage" + }, + "pathOrder": [ + "hourlyWage" + ], + "isReference": false + }, + "Credential": { + "paths": { + "credentialIdentifier": "$.credentialReference.credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor": "$.credentialReference.stateOfIssueStateAbbreviationDescriptor" + }, + "pathOrder": [ + "credentialIdentifier", + "stateOfIssueStateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Credential" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "employmentStatusDescriptor", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffProgramAssociations": { + "resourceName": "StaffProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffProgramAssociation", + "description": "This association indicates the staff associated with a program.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Start date for the association of staff to this program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "End date for the association of staff to this program." + }, + "studentRecordAccess": { + "type": "boolean", + "description": "Indicator of whether the staff has access to the student records of the program per district interpretation of FERPA and other privacy laws, regulations, and policies." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "programReference", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffProgramAssociation", + "description": "This association indicates the staff associated with a program.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Start date for the association of staff to this program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "End date for the association of staff to this program." + }, + "studentRecordAccess": { + "type": "boolean", + "description": "Indicator of whether the staff has access to the student records of the program per district interpretation of FERPA and other privacy laws, regulations, and policies." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "programReference", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffProgramAssociation", + "description": "This association indicates the staff associated with a program.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Start date for the association of staff to this program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "End date for the association of staff to this program." + }, + "studentRecordAccess": { + "type": "boolean", + "description": "Indicator of whether the staff has access to the student records of the program per district interpretation of FERPA and other privacy laws, regulations, and policies." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "Program", + "BeginDate" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "StudentRecordAccess": { + "paths": { + "studentRecordAccess": "$.studentRecordAccess" + }, + "pathOrder": [ + "studentRecordAccess" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffSchoolAssociations": { + "resourceName": "StaffSchoolAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffSchoolAssociation", + "description": "This association indicates the school(s) to which a staff member provides instructional services.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "programAssignmentDescriptor": { + "type": "string", + "description": "The name of the program for which the individual is assigned." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "schoolReference", + "programAssignmentDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffSchoolAssociation", + "description": "This association indicates the school(s) to which a staff member provides instructional services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "programAssignmentDescriptor": { + "type": "string", + "description": "The name of the program for which the individual is assigned." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "schoolReference", + "programAssignmentDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffSchoolAssociation", + "description": "This association indicates the school(s) to which a staff member provides instructional services.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "programAssignmentDescriptor": { + "type": "string", + "description": "The name of the program for which the individual is assigned." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "academicSubjects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "academicSubjectDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "academicSubjectDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.calendarReference.schoolYear", + "targetJsonPath": "$.schoolYearTypeReference.schoolYear" + }, + { + "sourceJsonPath": "$.calendarReference.schoolId", + "targetJsonPath": "$.schoolReference.schoolId" + } + ], + "identityFullnames": [ + "Staff", + "School", + "ProgramAssignment" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "ProgramAssignment": { + "paths": { + "programAssignmentDescriptor": "$.programAssignmentDescriptor" + }, + "pathOrder": [ + "programAssignmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgramAssignmentDescriptor" + }, + "GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.gradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjects[*].academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "Calendar": { + "paths": { + "calendarCode": "$.calendarReference.calendarCode", + "schoolId": "$.calendarReference.schoolId", + "schoolYear": "$.calendarReference.schoolYear" + }, + "pathOrder": [ + "calendarCode", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Calendar" + } + }, + "identityPathOrder": [ + "programAssignmentDescriptor", + "schoolId", + "staffUniqueId" + ], + "isSubclass": false + }, + "staffSectionAssociations": { + "resourceName": "StaffSectionAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffSectionAssociation", + "description": "This association indicates the class sections to which a staff member is assigned.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "classroomPositionDescriptor": { + "type": "string", + "description": "The type of position the staff member holds in the specific class/section." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of a teacher's assignment to the section. If blank, defaults to the first day of the first grading period for the section." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the last day of a staff member's assignment to the section." + }, + "highlyQualifiedTeacher": { + "type": "boolean", + "description": "An indication of whether a teacher is classified as highly qualified for his/her assignment according to state definition. This attribute indicates the teacher is highly qualified for this section being taught." + }, + "teacherStudentDataLinkExclusion": { + "type": "boolean", + "description": "Indicates that the entire section is excluded from calculation of value-added or growth attribution calculations used for a particular teacher evaluation." + }, + "percentageContribution": { + "type": "number", + "description": "Indicates the percentage of the total scheduled course time, academic standards, and/or learning activities delivered in this section by this staff member. A teacher of record designation may be based solely or partially on this contribution percentage." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "staffReference", + "sectionReference", + "classroomPositionDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffSectionAssociation", + "description": "This association indicates the class sections to which a staff member is assigned.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "classroomPositionDescriptor": { + "type": "string", + "description": "The type of position the staff member holds in the specific class/section." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of a teacher's assignment to the section. If blank, defaults to the first day of the first grading period for the section." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the last day of a staff member's assignment to the section." + }, + "highlyQualifiedTeacher": { + "type": "boolean", + "description": "An indication of whether a teacher is classified as highly qualified for his/her assignment according to state definition. This attribute indicates the teacher is highly qualified for this section being taught." + }, + "teacherStudentDataLinkExclusion": { + "type": "boolean", + "description": "Indicates that the entire section is excluded from calculation of value-added or growth attribution calculations used for a particular teacher evaluation." + }, + "percentageContribution": { + "type": "number", + "description": "Indicates the percentage of the total scheduled course time, academic standards, and/or learning activities delivered in this section by this staff member. A teacher of record designation may be based solely or partially on this contribution percentage." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "staffReference", + "sectionReference", + "classroomPositionDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StaffSectionAssociation", + "description": "This association indicates the class sections to which a staff member is assigned.", + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "classroomPositionDescriptor": { + "type": "string", + "description": "The type of position the staff member holds in the specific class/section." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of a teacher's assignment to the section. If blank, defaults to the first day of the first grading period for the section." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the last day of a staff member's assignment to the section." + }, + "highlyQualifiedTeacher": { + "type": "boolean", + "description": "An indication of whether a teacher is classified as highly qualified for his/her assignment according to state definition. This attribute indicates the teacher is highly qualified for this section being taught." + }, + "teacherStudentDataLinkExclusion": { + "type": "boolean", + "description": "Indicates that the entire section is excluded from calculation of value-added or growth attribution calculations used for a particular teacher evaluation." + }, + "percentageContribution": { + "type": "number", + "description": "Indicates the percentage of the total scheduled course time, academic standards, and/or learning activities delivered in this section by this staff member. A teacher of record designation may be based solely or partially on this contribution percentage." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Staff", + "Section" + ], + "documentPathsMapping": { + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "Section": { + "paths": { + "localCourseCode": "$.sectionReference.localCourseCode", + "schoolId": "$.sectionReference.schoolId", + "schoolYear": "$.sectionReference.schoolYear", + "sectionIdentifier": "$.sectionReference.sectionIdentifier", + "sessionName": "$.sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + }, + "ClassroomPosition": { + "paths": { + "classroomPositionDescriptor": "$.classroomPositionDescriptor" + }, + "pathOrder": [ + "classroomPositionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ClassroomPositionDescriptor" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "HighlyQualifiedTeacher": { + "paths": { + "highlyQualifiedTeacher": "$.highlyQualifiedTeacher" + }, + "pathOrder": [ + "highlyQualifiedTeacher" + ], + "isReference": false + }, + "TeacherStudentDataLinkExclusion": { + "paths": { + "teacherStudentDataLinkExclusion": "$.teacherStudentDataLinkExclusion" + }, + "pathOrder": [ + "teacherStudentDataLinkExclusion" + ], + "isReference": false + }, + "PercentageContribution": { + "paths": { + "percentageContribution": "$.percentageContribution" + }, + "pathOrder": [ + "percentageContribution" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "staffUniqueId" + ], + "isSubclass": false + }, + "studentAssessmentEducationOrganizationAssociations": { + "resourceName": "StudentAssessmentEducationOrganizationAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAssessmentEducationOrganizationAssociation", + "description": "The association of individual StudentAssessments with EducationOrganizations indicating administration, enrollment, or attribution.", + "type": "object", + "properties": { + "studentAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "studentAssessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment administered to a student.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "studentUniqueId", + "studentAssessmentIdentifier" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "educationOrganizationAssociationTypeDescriptor": { + "type": "string", + "description": "The type of association being represented." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentAssessmentReference", + "educationOrganizationReference", + "educationOrganizationAssociationTypeDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAssessmentEducationOrganizationAssociation", + "description": "The association of individual StudentAssessments with EducationOrganizations indicating administration, enrollment, or attribution.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "studentAssessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment administered to a student.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "studentUniqueId", + "studentAssessmentIdentifier" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "educationOrganizationAssociationTypeDescriptor": { + "type": "string", + "description": "The type of association being represented." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentAssessmentReference", + "educationOrganizationReference", + "educationOrganizationAssociationTypeDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentAssessmentEducationOrganizationAssociation", + "description": "The association of individual StudentAssessments with EducationOrganizations indicating administration, enrollment, or attribution.", + "type": "object", + "properties": { + "studentAssessmentReference": { + "type": "object", + "properties": { + "assessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment.", + "minLength": 1, + "maxLength": 60 + }, + "namespace": { + "type": "string", + "description": "Namespace for the assessment.", + "minLength": 5, + "maxLength": 255 + }, + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + }, + "studentAssessmentIdentifier": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an assessment administered to a student.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "assessmentIdentifier", + "namespace", + "studentUniqueId", + "studentAssessmentIdentifier" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "educationOrganizationAssociationTypeDescriptor": { + "type": "string", + "description": "The type of association being represented." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "StudentAssessment", + "EducationOrganization", + "EducationOrganizationAssociationType" + ], + "documentPathsMapping": { + "StudentAssessment": { + "paths": { + "assessmentIdentifier": "$.studentAssessmentReference.assessmentIdentifier", + "namespace": "$.studentAssessmentReference.namespace", + "studentAssessmentIdentifier": "$.studentAssessmentReference.studentAssessmentIdentifier", + "studentUniqueId": "$.studentAssessmentReference.studentUniqueId" + }, + "pathOrder": [ + "assessmentIdentifier", + "namespace", + "studentAssessmentIdentifier", + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StudentAssessment" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "EducationOrganizationAssociationType": { + "paths": { + "educationOrganizationAssociationTypeDescriptor": "$.educationOrganizationAssociationTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationAssociationTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationAssociationTypeDescriptor" + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "assessmentIdentifier", + "educationOrganizationAssociationTypeDescriptor", + "educationOrganizationId", + "namespace", + "studentAssessmentIdentifier", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentCohortAssociations": { + "resourceName": "StudentCohortAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCohortAssociation", + "description": "This association represents the cohort(s) for which a student is designated.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student was first identified as part of the cohort." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student was removed as part of the cohort." + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "sectionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "cohortReference", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCohortAssociation", + "description": "This association represents the cohort(s) for which a student is designated.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student was first identified as part of the cohort." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student was removed as part of the cohort." + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "sectionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "cohortReference", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCohortAssociation", + "description": "This association represents the cohort(s) for which a student is designated.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student was first identified as part of the cohort." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student was removed as part of the cohort." + }, + "sections": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + } + }, + "additionalProperties": false, + "required": [ + "sectionReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "Cohort", + "BeginDate" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Cohort": { + "paths": { + "cohortIdentifier": "$.cohortReference.cohortIdentifier", + "educationOrganizationId": "$.cohortReference.educationOrganizationId" + }, + "pathOrder": [ + "cohortIdentifier", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Cohort" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Section": { + "paths": { + "localCourseCode": "$.sections[*].sectionReference.localCourseCode", + "schoolId": "$.sections[*].sectionReference.schoolId", + "schoolYear": "$.sections[*].sectionReference.schoolYear", + "sectionIdentifier": "$.sections[*].sectionReference.sectionIdentifier", + "sessionName": "$.sections[*].sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + } + }, + "identityPathOrder": [ + "beginDate", + "cohortIdentifier", + "educationOrganizationId", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentContactAssociations": { + "resourceName": "StudentContactAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentContactAssociation", + "description": "This association relates students to their parents, guardians, or caretakers.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "contactReference": { + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "contactUniqueId" + ] + }, + "relationDescriptor": { + "type": "string", + "description": "The nature of an individual's relationship to a student, primarily used to capture family relationships." + }, + "primaryContactStatus": { + "type": "boolean", + "description": "Indicator of whether the person is a primary contact for the student." + }, + "livesWith": { + "type": "boolean", + "description": "Indicator of whether the student lives with the associated contact." + }, + "emergencyContactStatus": { + "type": "boolean", + "description": "Indicator of whether the person is a designated emergency contact for the student." + }, + "contactPriority": { + "type": "integer", + "description": "The numeric order of the preferred sequence or priority of contact." + }, + "contactRestrictions": { + "type": "string", + "description": "Restrictions for student and/or teacher contact with the individual (e.g., the student may not be picked up by the individual).", + "minLength": 1, + "maxLength": 250 + }, + "legalGuardian": { + "type": "boolean", + "description": "Indicator of whether the person is a legal guardian for the student." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "contactReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentContactAssociation", + "description": "This association relates students to their parents, guardians, or caretakers.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "contactReference": { + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "contactUniqueId" + ] + }, + "relationDescriptor": { + "type": "string", + "description": "The nature of an individual's relationship to a student, primarily used to capture family relationships." + }, + "primaryContactStatus": { + "type": "boolean", + "description": "Indicator of whether the person is a primary contact for the student." + }, + "livesWith": { + "type": "boolean", + "description": "Indicator of whether the student lives with the associated contact." + }, + "emergencyContactStatus": { + "type": "boolean", + "description": "Indicator of whether the person is a designated emergency contact for the student." + }, + "contactPriority": { + "type": "integer", + "description": "The numeric order of the preferred sequence or priority of contact." + }, + "contactRestrictions": { + "type": "string", + "description": "Restrictions for student and/or teacher contact with the individual (e.g., the student may not be picked up by the individual).", + "minLength": 1, + "maxLength": 250 + }, + "legalGuardian": { + "type": "boolean", + "description": "Indicator of whether the person is a legal guardian for the student." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "contactReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentContactAssociation", + "description": "This association relates students to their parents, guardians, or caretakers.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "contactReference": { + "type": "object", + "properties": { + "contactUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a contact.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "contactUniqueId" + ] + }, + "relationDescriptor": { + "type": "string", + "description": "The nature of an individual's relationship to a student, primarily used to capture family relationships." + }, + "primaryContactStatus": { + "type": "boolean", + "description": "Indicator of whether the person is a primary contact for the student." + }, + "livesWith": { + "type": "boolean", + "description": "Indicator of whether the student lives with the associated contact." + }, + "emergencyContactStatus": { + "type": "boolean", + "description": "Indicator of whether the person is a designated emergency contact for the student." + }, + "contactPriority": { + "type": "integer", + "description": "The numeric order of the preferred sequence or priority of contact." + }, + "contactRestrictions": { + "type": "string", + "description": "Restrictions for student and/or teacher contact with the individual (e.g., the student may not be picked up by the individual).", + "minLength": 1, + "maxLength": 250 + }, + "legalGuardian": { + "type": "boolean", + "description": "Indicator of whether the person is a legal guardian for the student." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "Contact" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Contact": { + "paths": { + "contactUniqueId": "$.contactReference.contactUniqueId" + }, + "pathOrder": [ + "contactUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Contact" + }, + "Relation": { + "paths": { + "relationDescriptor": "$.relationDescriptor" + }, + "pathOrder": [ + "relationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RelationDescriptor" + }, + "PrimaryContactStatus": { + "paths": { + "primaryContactStatus": "$.primaryContactStatus" + }, + "pathOrder": [ + "primaryContactStatus" + ], + "isReference": false + }, + "LivesWith": { + "paths": { + "livesWith": "$.livesWith" + }, + "pathOrder": [ + "livesWith" + ], + "isReference": false + }, + "EmergencyContactStatus": { + "paths": { + "emergencyContactStatus": "$.emergencyContactStatus" + }, + "pathOrder": [ + "emergencyContactStatus" + ], + "isReference": false + }, + "ContactPriority": { + "paths": { + "contactPriority": "$.contactPriority" + }, + "pathOrder": [ + "contactPriority" + ], + "isReference": false + }, + "ContactRestrictions": { + "paths": { + "contactRestrictions": "$.contactRestrictions" + }, + "pathOrder": [ + "contactRestrictions" + ], + "isReference": false + }, + "LegalGuardian": { + "paths": { + "legalGuardian": "$.legalGuardian" + }, + "pathOrder": [ + "legalGuardian" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "contactUniqueId", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentDisciplineIncidentBehaviorAssociations": { + "resourceName": "StudentDisciplineIncidentBehaviorAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentDisciplineIncidentBehaviorAssociation", + "description": "This association describes the behavior of students involved in a discipline incident.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category." + }, + "behaviorDetailedDescription": { + "type": "string", + "description": "Specifies a more granular level of detail of a behavior involved in the incident.", + "minLength": 1, + "maxLength": 1024 + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "disciplineIncidentReference", + "behaviorDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentDisciplineIncidentBehaviorAssociation", + "description": "This association describes the behavior of students involved in a discipline incident.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category." + }, + "behaviorDetailedDescription": { + "type": "string", + "description": "Specifies a more granular level of detail of a behavior involved in the incident.", + "minLength": 1, + "maxLength": 1024 + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "disciplineIncidentReference", + "behaviorDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentDisciplineIncidentBehaviorAssociation", + "description": "This association describes the behavior of students involved in a discipline incident.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "behaviorDescriptor": { + "type": "string", + "description": "Describes behavior by category." + }, + "behaviorDetailedDescription": { + "type": "string", + "description": "Specifies a more granular level of detail of a behavior involved in the incident.", + "minLength": 1, + "maxLength": 1024 + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "DisciplineIncident", + "Behavior" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "DisciplineIncident": { + "paths": { + "incidentIdentifier": "$.disciplineIncidentReference.incidentIdentifier", + "schoolId": "$.disciplineIncidentReference.schoolId" + }, + "pathOrder": [ + "incidentIdentifier", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "DisciplineIncident" + }, + "Behavior": { + "paths": { + "behaviorDescriptor": "$.behaviorDescriptor" + }, + "pathOrder": [ + "behaviorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "BehaviorDescriptor" + }, + "BehaviorDetailedDescription": { + "paths": { + "behaviorDetailedDescription": "$.behaviorDetailedDescription" + }, + "pathOrder": [ + "behaviorDetailedDescription" + ], + "isReference": false + }, + "DisciplineIncidentParticipationCode": { + "paths": { + "disciplineIncidentParticipationCodeDescriptor": "$.disciplineIncidentParticipationCodes[*].disciplineIncidentParticipationCodeDescriptor" + }, + "pathOrder": [ + "disciplineIncidentParticipationCodeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisciplineIncidentParticipationCodeDescriptor" + } + }, + "identityPathOrder": [ + "behaviorDescriptor", + "incidentIdentifier", + "schoolId", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentDisciplineIncidentNonOffenderAssociations": { + "resourceName": "StudentDisciplineIncidentNonOffenderAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentDisciplineIncidentNonOffenderAssociation", + "description": "This association indicates those students who were involved and not perpetrators for a discipline incident.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "disciplineIncidentReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentDisciplineIncidentNonOffenderAssociation", + "description": "This association indicates those students who were involved and not perpetrators for a discipline incident.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "disciplineIncidentReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentDisciplineIncidentNonOffenderAssociation", + "description": "This association indicates those students who were involved and not perpetrators for a discipline incident.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "disciplineIncidentReference": { + "type": "object", + "properties": { + "incidentIdentifier": { + "type": "string", + "description": "A locally assigned unique identifier (within the school or school district) to identify each specific DisciplineIncident or occurrence. The same identifier should be used to document the entire discipline incident even if it included multiple offenses and multiple offenders.", + "minLength": 1, + "maxLength": 36 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "incidentIdentifier", + "schoolId" + ] + }, + "disciplineIncidentParticipationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disciplineIncidentParticipationCodeDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disciplineIncidentParticipationCodeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "DisciplineIncident" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "DisciplineIncident": { + "paths": { + "incidentIdentifier": "$.disciplineIncidentReference.incidentIdentifier", + "schoolId": "$.disciplineIncidentReference.schoolId" + }, + "pathOrder": [ + "incidentIdentifier", + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "DisciplineIncident" + }, + "DisciplineIncidentParticipationCode": { + "paths": { + "disciplineIncidentParticipationCodeDescriptor": "$.disciplineIncidentParticipationCodes[*].disciplineIncidentParticipationCodeDescriptor" + }, + "pathOrder": [ + "disciplineIncidentParticipationCodeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisciplineIncidentParticipationCodeDescriptor" + } + }, + "identityPathOrder": [ + "incidentIdentifier", + "schoolId", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentEducationOrganizationAssociations": { + "resourceName": "StudentEducationOrganizationAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentEducationOrganizationAssociation", + "description": "This association represents student information as reported in the context of the student's relationship to the education organization. Enrollment relationship semantics are covered by StudentSchoolAssociation.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "studentIdentificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a student by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "studentIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a student." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the StudentIdentificationCode.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "studentIdentificationSystemDescriptor", + "assigningOrganizationIdentificationCode" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "The student's gender as last reported to the education organization." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "profileThumbnail": { + "type": "string", + "description": "Locator reference for the student photo. The specification for that reference is left to local definition.", + "minLength": 1, + "maxLength": 255 + }, + "hispanicLatinoEthnicity": { + "type": "boolean", + "description": "An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race, as last reported to the education organization. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"" + }, + "races": { + "type": "array", + "items": { + "type": "object", + "properties": { + "raceDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "raceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "tribalAffiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tribalAffiliationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "tribalAffiliationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentCharacteristicDescriptor": { + "type": "string", + "description": "The characteristic designated for the student." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the characteristic.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "studentCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "limitedEnglishProficiencyDescriptor": { + "type": "string", + "description": "An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient." + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "disabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDescriptor": { + "type": "string", + "description": "A disability category that describes a individual's impairment." + }, + "disabilityDiagnosis": { + "type": "string", + "description": "A description of the disability diagnosis.", + "minLength": 1, + "maxLength": 80 + }, + "orderOfDisability": { + "type": "integer", + "description": "The order by severity of individual's disabilities: 1- Primary, 2 - Secondary, 3 - Tertiary, etc." + }, + "disabilityDeterminationSourceTypeDescriptor": { + "type": "string", + "description": "The source that provided the disability determination." + }, + "designations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDesignationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disabilityDesignationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "disabilityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "cohortYears": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "cohortYearTypeDescriptor": { + "type": "string", + "description": "The type of cohort year (9th grade, graduation)." + }, + "termDescriptor": { + "type": "string", + "description": "The term associated with the cohort year; for example, the intended term of graduation." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference", + "cohortYearTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentIndicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorGroup": { + "type": "string", + "description": "The name for a group of indicators.", + "minLength": 1, + "maxLength": 200 + }, + "indicatorName": { + "type": "string", + "description": "The name of the indicator or metric.", + "minLength": 1, + "maxLength": 200 + }, + "indicator": { + "type": "string", + "description": "The value of the indicator or metric.", + "minLength": 1, + "maxLength": 60 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the program association.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "indicatorName", + "indicator" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "ancestryEthnicOrigins": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ancestryEthnicOriginDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "ancestryEthnicOriginDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "primaryLearningDeviceAwayFromSchoolDescriptor": { + "type": "string", + "description": "The type of device the student uses most often to complete learning activities away from school." + }, + "primaryLearningDeviceAccessDescriptor": { + "type": "string", + "description": "An indication of whether the primary learning device is shared or not shared with another individual." + }, + "primaryLearningDeviceProviderDescriptor": { + "type": "string", + "description": "The provider of the primary learning device." + }, + "internetAccessInResidence": { + "type": "boolean", + "description": "An indication of whether the student is able to access the internet in their primary place of residence." + }, + "barrierToInternetAccessInResidenceDescriptor": { + "type": "string", + "description": "An indication of the barrier to having internet access in the student’s primary place of residence." + }, + "internetAccessTypeInResidenceDescriptor": { + "type": "string", + "description": "The primary type of internet service used in the student’s primary place of residence." + }, + "internetPerformanceInResidenceDescriptor": { + "type": "string", + "description": "An indication of whether the student can complete the full range of learning activities, including video streaming and assignment upload, without interruptions caused by poor internet performance in their primary place of residence." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "educationOrganizationReference", + "sexDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentEducationOrganizationAssociation", + "description": "This association represents student information as reported in the context of the student's relationship to the education organization. Enrollment relationship semantics are covered by StudentSchoolAssociation.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "studentIdentificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a student by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "studentIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a student." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the StudentIdentificationCode.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "studentIdentificationSystemDescriptor", + "assigningOrganizationIdentificationCode" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "The student's gender as last reported to the education organization." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "profileThumbnail": { + "type": "string", + "description": "Locator reference for the student photo. The specification for that reference is left to local definition.", + "minLength": 1, + "maxLength": 255 + }, + "hispanicLatinoEthnicity": { + "type": "boolean", + "description": "An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race, as last reported to the education organization. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"" + }, + "races": { + "type": "array", + "items": { + "type": "object", + "properties": { + "raceDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "raceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "tribalAffiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tribalAffiliationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "tribalAffiliationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentCharacteristicDescriptor": { + "type": "string", + "description": "The characteristic designated for the student." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the characteristic.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "studentCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "limitedEnglishProficiencyDescriptor": { + "type": "string", + "description": "An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient." + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "disabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDescriptor": { + "type": "string", + "description": "A disability category that describes a individual's impairment." + }, + "disabilityDiagnosis": { + "type": "string", + "description": "A description of the disability diagnosis.", + "minLength": 1, + "maxLength": 80 + }, + "orderOfDisability": { + "type": "integer", + "description": "The order by severity of individual's disabilities: 1- Primary, 2 - Secondary, 3 - Tertiary, etc." + }, + "disabilityDeterminationSourceTypeDescriptor": { + "type": "string", + "description": "The source that provided the disability determination." + }, + "designations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDesignationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disabilityDesignationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "disabilityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "cohortYears": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "cohortYearTypeDescriptor": { + "type": "string", + "description": "The type of cohort year (9th grade, graduation)." + }, + "termDescriptor": { + "type": "string", + "description": "The term associated with the cohort year; for example, the intended term of graduation." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference", + "cohortYearTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentIndicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorGroup": { + "type": "string", + "description": "The name for a group of indicators.", + "minLength": 1, + "maxLength": 200 + }, + "indicatorName": { + "type": "string", + "description": "The name of the indicator or metric.", + "minLength": 1, + "maxLength": 200 + }, + "indicator": { + "type": "string", + "description": "The value of the indicator or metric.", + "minLength": 1, + "maxLength": 60 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the program association.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "indicatorName", + "indicator" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "ancestryEthnicOrigins": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ancestryEthnicOriginDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "ancestryEthnicOriginDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "primaryLearningDeviceAwayFromSchoolDescriptor": { + "type": "string", + "description": "The type of device the student uses most often to complete learning activities away from school." + }, + "primaryLearningDeviceAccessDescriptor": { + "type": "string", + "description": "An indication of whether the primary learning device is shared or not shared with another individual." + }, + "primaryLearningDeviceProviderDescriptor": { + "type": "string", + "description": "The provider of the primary learning device." + }, + "internetAccessInResidence": { + "type": "boolean", + "description": "An indication of whether the student is able to access the internet in their primary place of residence." + }, + "barrierToInternetAccessInResidenceDescriptor": { + "type": "string", + "description": "An indication of the barrier to having internet access in the student’s primary place of residence." + }, + "internetAccessTypeInResidenceDescriptor": { + "type": "string", + "description": "The primary type of internet service used in the student’s primary place of residence." + }, + "internetPerformanceInResidenceDescriptor": { + "type": "string", + "description": "An indication of whether the student can complete the full range of learning activities, including video streaming and assignment upload, without interruptions caused by poor internet performance in their primary place of residence." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "educationOrganizationReference", + "sexDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentEducationOrganizationAssociation", + "description": "This association represents student information as reported in the context of the student's relationship to the education organization. Enrollment relationship semantics are covered by StudentSchoolAssociation.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "studentIdentificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to a student by a school, school system, a state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "studentIdentificationSystemDescriptor": { + "type": "string", + "description": "A coding scheme that is used for identification and record-keeping purposes by schools, social services, or other agencies to refer to a student." + }, + "assigningOrganizationIdentificationCode": { + "type": "string", + "description": "The organization code or name assigning the StudentIdentificationCode.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "studentIdentificationSystemDescriptor", + "assigningOrganizationIdentificationCode" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "sexDescriptor": { + "type": "string", + "description": "The student's gender as last reported to the education organization." + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "telephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "telephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + }, + "orderOfPriority": { + "type": "integer", + "description": "The order of priority assigned to telephone numbers to define which number to attempt first, second, etc.", + "minimum": 1 + }, + "textMessageCapabilityIndicator": { + "type": "boolean", + "description": "An indication that the telephone number is technically capable of sending and receiving Short Message Service (SMS) text messages." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the telephone number should not be published." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "telephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "electronicMails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "electronicMailAddress": { + "type": "string", + "description": "The electronic mail (e-mail) address listed for an individual or organization.", + "minLength": 7, + "maxLength": 128 + }, + "electronicMailTypeDescriptor": { + "type": "string", + "description": "The type of email listed for an individual or organization. For example: Home/Personal, Work, etc.)" + }, + "primaryEmailAddressIndicator": { + "type": "boolean", + "description": "An indication that the electronic mail address should be used as the principal electronic mail address for an individual or organization." + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the electronic email address should not be published." + } + }, + "additionalProperties": false, + "required": [ + "electronicMailAddress", + "electronicMailTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "profileThumbnail": { + "type": "string", + "description": "Locator reference for the student photo. The specification for that reference is left to local definition.", + "minLength": 1, + "maxLength": 255 + }, + "hispanicLatinoEthnicity": { + "type": "boolean", + "description": "An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race, as last reported to the education organization. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"" + }, + "races": { + "type": "array", + "items": { + "type": "object", + "properties": { + "raceDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "raceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "tribalAffiliations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tribalAffiliationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "tribalAffiliationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentCharacteristics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "studentCharacteristicDescriptor": { + "type": "string", + "description": "The characteristic designated for the student." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the characteristic.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "studentCharacteristicDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "limitedEnglishProficiencyDescriptor": { + "type": "string", + "description": "An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient." + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageDescriptor": { + "type": "string", + "description": "A specification of which written or spoken communication is being used." + }, + "uses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageUseDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "languageUseDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "languageDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "disabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDescriptor": { + "type": "string", + "description": "A disability category that describes a individual's impairment." + }, + "disabilityDiagnosis": { + "type": "string", + "description": "A description of the disability diagnosis.", + "minLength": 1, + "maxLength": 80 + }, + "orderOfDisability": { + "type": "integer", + "description": "The order by severity of individual's disabilities: 1- Primary, 2 - Secondary, 3 - Tertiary, etc." + }, + "disabilityDeterminationSourceTypeDescriptor": { + "type": "string", + "description": "The source that provided the disability determination." + }, + "designations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDesignationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disabilityDesignationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "disabilityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "cohortYears": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "cohortYearTypeDescriptor": { + "type": "string", + "description": "The type of cohort year (9th grade, graduation)." + }, + "termDescriptor": { + "type": "string", + "description": "The term associated with the cohort year; for example, the intended term of graduation." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference", + "cohortYearTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentIndicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorGroup": { + "type": "string", + "description": "The name for a group of indicators.", + "minLength": 1, + "maxLength": 200 + }, + "indicatorName": { + "type": "string", + "description": "The name of the indicator or metric.", + "minLength": 1, + "maxLength": 200 + }, + "indicator": { + "type": "string", + "description": "The value of the indicator or metric.", + "minLength": 1, + "maxLength": 60 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the program association.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "indicatorName", + "indicator" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "loginId": { + "type": "string", + "description": "The login ID for the user; used for security access control interface.", + "minLength": 1, + "maxLength": 60 + }, + "ancestryEthnicOrigins": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ancestryEthnicOriginDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "ancestryEthnicOriginDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "primaryLearningDeviceAwayFromSchoolDescriptor": { + "type": "string", + "description": "The type of device the student uses most often to complete learning activities away from school." + }, + "primaryLearningDeviceAccessDescriptor": { + "type": "string", + "description": "An indication of whether the primary learning device is shared or not shared with another individual." + }, + "primaryLearningDeviceProviderDescriptor": { + "type": "string", + "description": "The provider of the primary learning device." + }, + "internetAccessInResidence": { + "type": "boolean", + "description": "An indication of whether the student is able to access the internet in their primary place of residence." + }, + "barrierToInternetAccessInResidenceDescriptor": { + "type": "string", + "description": "An indication of the barrier to having internet access in the student’s primary place of residence." + }, + "internetAccessTypeInResidenceDescriptor": { + "type": "string", + "description": "The primary type of internet service used in the student’s primary place of residence." + }, + "internetPerformanceInResidenceDescriptor": { + "type": "string", + "description": "An indication of whether the student can complete the full range of learning activities, including video streaming and assignment upload, without interruptions caused by poor internet performance in their primary place of residence." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "EducationOrganization" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "StudentIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.studentIdentificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "StudentIdentificationCode.StudentIdentificationSystem": { + "paths": { + "studentIdentificationSystemDescriptor": "$.studentIdentificationCodes[*].studentIdentificationSystemDescriptor" + }, + "pathOrder": [ + "studentIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StudentIdentificationSystemDescriptor" + }, + "StudentIdentificationCode.AssigningOrganizationIdentificationCode": { + "paths": { + "assigningOrganizationIdentificationCode": "$.studentIdentificationCodes[*].assigningOrganizationIdentificationCode" + }, + "pathOrder": [ + "assigningOrganizationIdentificationCode" + ], + "isReference": false + }, + "Sex": { + "paths": { + "sexDescriptor": "$.sexDescriptor" + }, + "pathOrder": [ + "sexDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SexDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Telephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.telephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "Telephone.TelephoneNumberType": { + "paths": { + "telephoneNumberTypeDescriptor": "$.telephones[*].telephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "telephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TelephoneNumberTypeDescriptor" + }, + "Telephone.OrderOfPriority": { + "paths": { + "orderOfPriority": "$.telephones[*].orderOfPriority" + }, + "pathOrder": [ + "orderOfPriority" + ], + "isReference": false + }, + "Telephone.TextMessageCapabilityIndicator": { + "paths": { + "textMessageCapabilityIndicator": "$.telephones[*].textMessageCapabilityIndicator" + }, + "pathOrder": [ + "textMessageCapabilityIndicator" + ], + "isReference": false + }, + "Telephone.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.telephones[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "ElectronicMail.ElectronicMailAddress": { + "paths": { + "electronicMailAddress": "$.electronicMails[*].electronicMailAddress" + }, + "pathOrder": [ + "electronicMailAddress" + ], + "isReference": false + }, + "ElectronicMail.ElectronicMailType": { + "paths": { + "electronicMailTypeDescriptor": "$.electronicMails[*].electronicMailTypeDescriptor" + }, + "pathOrder": [ + "electronicMailTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ElectronicMailTypeDescriptor" + }, + "ElectronicMail.PrimaryEmailAddressIndicator": { + "paths": { + "primaryEmailAddressIndicator": "$.electronicMails[*].primaryEmailAddressIndicator" + }, + "pathOrder": [ + "primaryEmailAddressIndicator" + ], + "isReference": false + }, + "ElectronicMail.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.electronicMails[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "ProfileThumbnail": { + "paths": { + "profileThumbnail": "$.profileThumbnail" + }, + "pathOrder": [ + "profileThumbnail" + ], + "isReference": false + }, + "HispanicLatinoEthnicity": { + "paths": { + "hispanicLatinoEthnicity": "$.hispanicLatinoEthnicity" + }, + "pathOrder": [ + "hispanicLatinoEthnicity" + ], + "isReference": false + }, + "Race": { + "paths": { + "raceDescriptor": "$.races[*].raceDescriptor" + }, + "pathOrder": [ + "raceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RaceDescriptor" + }, + "TribalAffiliation": { + "paths": { + "tribalAffiliationDescriptor": "$.tribalAffiliations[*].tribalAffiliationDescriptor" + }, + "pathOrder": [ + "tribalAffiliationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TribalAffiliationDescriptor" + }, + "StudentCharacteristic.StudentCharacteristic": { + "paths": { + "studentCharacteristicDescriptor": "$.studentCharacteristics[*].studentCharacteristicDescriptor" + }, + "pathOrder": [ + "studentCharacteristicDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StudentCharacteristicDescriptor" + }, + "StudentCharacteristic.Period.BeginDate": { + "paths": { + "beginDate": "$.studentCharacteristics[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "StudentCharacteristic.Period.EndDate": { + "paths": { + "endDate": "$.studentCharacteristics[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "StudentCharacteristic.DesignatedBy": { + "paths": { + "designatedBy": "$.studentCharacteristics[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "LimitedEnglishProficiency": { + "paths": { + "limitedEnglishProficiencyDescriptor": "$.limitedEnglishProficiencyDescriptor" + }, + "pathOrder": [ + "limitedEnglishProficiencyDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LimitedEnglishProficiencyDescriptor" + }, + "Language.Language": { + "paths": { + "languageDescriptor": "$.languages[*].languageDescriptor" + }, + "pathOrder": [ + "languageDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageDescriptor" + }, + "Language.LanguageUse": { + "paths": { + "languageUseDescriptor": "$.languages[*].uses[*].languageUseDescriptor" + }, + "pathOrder": [ + "languageUseDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageUseDescriptor" + }, + "Disability.Disability": { + "paths": { + "disabilityDescriptor": "$.disabilities[*].disabilityDescriptor" + }, + "pathOrder": [ + "disabilityDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisabilityDescriptor" + }, + "Disability.DisabilityDiagnosis": { + "paths": { + "disabilityDiagnosis": "$.disabilities[*].disabilityDiagnosis" + }, + "pathOrder": [ + "disabilityDiagnosis" + ], + "isReference": false + }, + "Disability.OrderOfDisability": { + "paths": { + "orderOfDisability": "$.disabilities[*].orderOfDisability" + }, + "pathOrder": [ + "orderOfDisability" + ], + "isReference": false + }, + "Disability.DisabilityDeterminationSourceType": { + "paths": { + "disabilityDeterminationSourceTypeDescriptor": "$.disabilities[*].disabilityDeterminationSourceTypeDescriptor" + }, + "pathOrder": [ + "disabilityDeterminationSourceTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisabilityDeterminationSourceTypeDescriptor" + }, + "Disability.DisabilityDesignation": { + "paths": { + "disabilityDesignationDescriptor": "$.disabilities[*].designations[*].disabilityDesignationDescriptor" + }, + "pathOrder": [ + "disabilityDesignationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisabilityDesignationDescriptor" + }, + "CohortYear.SchoolYear": { + "paths": { + "schoolYear": "$.cohortYears[*].schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "CohortYear.CohortYearType": { + "paths": { + "cohortYearTypeDescriptor": "$.cohortYears[*].cohortYearTypeDescriptor" + }, + "pathOrder": [ + "cohortYearTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CohortYearTypeDescriptor" + }, + "CohortYear.Term": { + "paths": { + "termDescriptor": "$.cohortYears[*].termDescriptor" + }, + "pathOrder": [ + "termDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TermDescriptor" + }, + "StudentIndicator.IndicatorGroup": { + "paths": { + "indicatorGroup": "$.studentIndicators[*].indicatorGroup" + }, + "pathOrder": [ + "indicatorGroup" + ], + "isReference": false + }, + "StudentIndicator.IndicatorName": { + "paths": { + "indicatorName": "$.studentIndicators[*].indicatorName" + }, + "pathOrder": [ + "indicatorName" + ], + "isReference": false + }, + "StudentIndicator.Indicator": { + "paths": { + "indicator": "$.studentIndicators[*].indicator" + }, + "pathOrder": [ + "indicator" + ], + "isReference": false + }, + "StudentIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.studentIndicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "StudentIndicator.Period.EndDate": { + "paths": { + "endDate": "$.studentIndicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "StudentIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.studentIndicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "LoginId": { + "paths": { + "loginId": "$.loginId" + }, + "pathOrder": [ + "loginId" + ], + "isReference": false + }, + "AncestryEthnicOrigin": { + "paths": { + "ancestryEthnicOriginDescriptor": "$.ancestryEthnicOrigins[*].ancestryEthnicOriginDescriptor" + }, + "pathOrder": [ + "ancestryEthnicOriginDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AncestryEthnicOriginDescriptor" + }, + "PrimaryLearningDeviceAwayFromSchool": { + "paths": { + "primaryLearningDeviceAwayFromSchoolDescriptor": "$.primaryLearningDeviceAwayFromSchoolDescriptor" + }, + "pathOrder": [ + "primaryLearningDeviceAwayFromSchoolDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PrimaryLearningDeviceAwayFromSchoolDescriptor" + }, + "PrimaryLearningDeviceAccess": { + "paths": { + "primaryLearningDeviceAccessDescriptor": "$.primaryLearningDeviceAccessDescriptor" + }, + "pathOrder": [ + "primaryLearningDeviceAccessDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PrimaryLearningDeviceAccessDescriptor" + }, + "PrimaryLearningDeviceProvider": { + "paths": { + "primaryLearningDeviceProviderDescriptor": "$.primaryLearningDeviceProviderDescriptor" + }, + "pathOrder": [ + "primaryLearningDeviceProviderDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PrimaryLearningDeviceProviderDescriptor" + }, + "InternetAccessInResidence": { + "paths": { + "internetAccessInResidence": "$.internetAccessInResidence" + }, + "pathOrder": [ + "internetAccessInResidence" + ], + "isReference": false + }, + "BarrierToInternetAccessInResidence": { + "paths": { + "barrierToInternetAccessInResidenceDescriptor": "$.barrierToInternetAccessInResidenceDescriptor" + }, + "pathOrder": [ + "barrierToInternetAccessInResidenceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "BarrierToInternetAccessInResidenceDescriptor" + }, + "InternetAccessTypeInResidence": { + "paths": { + "internetAccessTypeInResidenceDescriptor": "$.internetAccessTypeInResidenceDescriptor" + }, + "pathOrder": [ + "internetAccessTypeInResidenceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InternetAccessTypeInResidenceDescriptor" + }, + "InternetPerformanceInResidence": { + "paths": { + "internetPerformanceInResidenceDescriptor": "$.internetPerformanceInResidenceDescriptor" + }, + "pathOrder": [ + "internetPerformanceInResidenceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InternetPerformanceInResidenceDescriptor" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentEducationOrganizationResponsibilityAssociations": { + "resourceName": "StudentEducationOrganizationResponsibilityAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentEducationOrganizationResponsibilityAssociation", + "description": "This association indicates a relationship between a student and an education organization other than an enrollment relationship, and generally indicating some kind of responsibility of the education organization for the student. Enrollment relationship semantics are covered by StudentSchoolAssociation.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "responsibilityDescriptor": { + "type": "string", + "description": "Indications of an education organization's responsibility for a student, such as accountability, attendance, funding, etc." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the start date of an education organization's responsibility for a student." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the end date of an education organization's responsibility for a student." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "educationOrganizationReference", + "responsibilityDescriptor", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentEducationOrganizationResponsibilityAssociation", + "description": "This association indicates a relationship between a student and an education organization other than an enrollment relationship, and generally indicating some kind of responsibility of the education organization for the student. Enrollment relationship semantics are covered by StudentSchoolAssociation.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "responsibilityDescriptor": { + "type": "string", + "description": "Indications of an education organization's responsibility for a student, such as accountability, attendance, funding, etc." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the start date of an education organization's responsibility for a student." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the end date of an education organization's responsibility for a student." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "educationOrganizationReference", + "responsibilityDescriptor", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentEducationOrganizationResponsibilityAssociation", + "description": "This association indicates a relationship between a student and an education organization other than an enrollment relationship, and generally indicating some kind of responsibility of the education organization for the student. Enrollment relationship semantics are covered by StudentSchoolAssociation.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "responsibilityDescriptor": { + "type": "string", + "description": "Indications of an education organization's responsibility for a student, such as accountability, attendance, funding, etc." + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the start date of an education organization's responsibility for a student." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the end date of an education organization's responsibility for a student." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "EducationOrganization", + "Responsibility", + "BeginDate" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "Responsibility": { + "paths": { + "responsibilityDescriptor": "$.responsibilityDescriptor" + }, + "pathOrder": [ + "responsibilityDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResponsibilityDescriptor" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "responsibilityDescriptor", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentInterventionAssociations": { + "resourceName": "StudentInterventionAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentInterventionAssociation", + "description": "This association indicates the students participating in an intervention.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "interventionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionIdentificationCode" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "interventionEffectivenesses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "Targeted purpose of the intervention (e.g., attendance issue, dropout risk) for which the effectiveness is measured." + }, + "populationServedDescriptor": { + "type": "string", + "description": "Population for which effectiveness is measured." + }, + "gradeLevelDescriptor": { + "type": "string", + "description": "Grade level for which effectiveness is measured." + }, + "improvementIndex": { + "type": "integer", + "description": "Along a percentile distribution of students, the improvement index represents the change in an average student's percentile rank that is considered to be due to the intervention." + }, + "interventionEffectivenessRatingDescriptor": { + "type": "string", + "description": "An intervention demonstrates effectiveness if the research has shown that the program caused an improvement in outcomes. Values: positive effects, potentially positive effects, mixed effects, potentially negative effects, negative effects, and no discernible effects." + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor", + "populationServedDescriptor", + "gradeLevelDescriptor", + "interventionEffectivenessRatingDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the assigner that provides information regarding why the student was assigned to this intervention.", + "minLength": 1, + "maxLength": 1024 + }, + "dosage": { + "type": "integer", + "description": "The duration of time in minutes for which the student was assigned to participate in the intervention." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "interventionReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentInterventionAssociation", + "description": "This association indicates the students participating in an intervention.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "interventionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionIdentificationCode" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "interventionEffectivenesses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "Targeted purpose of the intervention (e.g., attendance issue, dropout risk) for which the effectiveness is measured." + }, + "populationServedDescriptor": { + "type": "string", + "description": "Population for which effectiveness is measured." + }, + "gradeLevelDescriptor": { + "type": "string", + "description": "Grade level for which effectiveness is measured." + }, + "improvementIndex": { + "type": "integer", + "description": "Along a percentile distribution of students, the improvement index represents the change in an average student's percentile rank that is considered to be due to the intervention." + }, + "interventionEffectivenessRatingDescriptor": { + "type": "string", + "description": "An intervention demonstrates effectiveness if the research has shown that the program caused an improvement in outcomes. Values: positive effects, potentially positive effects, mixed effects, potentially negative effects, negative effects, and no discernible effects." + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor", + "populationServedDescriptor", + "gradeLevelDescriptor", + "interventionEffectivenessRatingDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the assigner that provides information regarding why the student was assigned to this intervention.", + "minLength": 1, + "maxLength": 1024 + }, + "dosage": { + "type": "integer", + "description": "The duration of time in minutes for which the student was assigned to participate in the intervention." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "interventionReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentInterventionAssociation", + "description": "This association indicates the students participating in an intervention.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "interventionReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "interventionIdentificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code assigned to an intervention.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "interventionIdentificationCode" + ] + }, + "cohortReference": { + "type": "object", + "properties": { + "cohortIdentifier": { + "type": "string", + "description": "The name or ID for the cohort.", + "minLength": 1, + "maxLength": 36 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "cohortIdentifier", + "educationOrganizationId" + ] + }, + "interventionEffectivenesses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "diagnosisDescriptor": { + "type": "string", + "description": "Targeted purpose of the intervention (e.g., attendance issue, dropout risk) for which the effectiveness is measured." + }, + "populationServedDescriptor": { + "type": "string", + "description": "Population for which effectiveness is measured." + }, + "gradeLevelDescriptor": { + "type": "string", + "description": "Grade level for which effectiveness is measured." + }, + "improvementIndex": { + "type": "integer", + "description": "Along a percentile distribution of students, the improvement index represents the change in an average student's percentile rank that is considered to be due to the intervention." + }, + "interventionEffectivenessRatingDescriptor": { + "type": "string", + "description": "An intervention demonstrates effectiveness if the research has shown that the program caused an improvement in outcomes. Values: positive effects, potentially positive effects, mixed effects, potentially negative effects, negative effects, and no discernible effects." + } + }, + "additionalProperties": false, + "required": [ + "diagnosisDescriptor", + "populationServedDescriptor", + "gradeLevelDescriptor", + "interventionEffectivenessRatingDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "diagnosticStatement": { + "type": "string", + "description": "A statement provided by the assigner that provides information regarding why the student was assigned to this intervention.", + "minLength": 1, + "maxLength": 1024 + }, + "dosage": { + "type": "integer", + "description": "The duration of time in minutes for which the student was assigned to participate in the intervention." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "Intervention" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Intervention": { + "paths": { + "educationOrganizationId": "$.interventionReference.educationOrganizationId", + "interventionIdentificationCode": "$.interventionReference.interventionIdentificationCode" + }, + "pathOrder": [ + "educationOrganizationId", + "interventionIdentificationCode" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Intervention" + }, + "Cohort": { + "paths": { + "cohortIdentifier": "$.cohortReference.cohortIdentifier", + "educationOrganizationId": "$.cohortReference.educationOrganizationId" + }, + "pathOrder": [ + "cohortIdentifier", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Cohort" + }, + "InterventionEffectiveness.Diagnosis": { + "paths": { + "diagnosisDescriptor": "$.interventionEffectivenesses[*].diagnosisDescriptor" + }, + "pathOrder": [ + "diagnosisDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DiagnosisDescriptor" + }, + "InterventionEffectiveness.PopulationServed": { + "paths": { + "populationServedDescriptor": "$.interventionEffectivenesses[*].populationServedDescriptor" + }, + "pathOrder": [ + "populationServedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PopulationServedDescriptor" + }, + "InterventionEffectiveness.GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.interventionEffectivenesses[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "InterventionEffectiveness.ImprovementIndex": { + "paths": { + "improvementIndex": "$.interventionEffectivenesses[*].improvementIndex" + }, + "pathOrder": [ + "improvementIndex" + ], + "isReference": false + }, + "InterventionEffectiveness.InterventionEffectivenessRating": { + "paths": { + "interventionEffectivenessRatingDescriptor": "$.interventionEffectivenesses[*].interventionEffectivenessRatingDescriptor" + }, + "pathOrder": [ + "interventionEffectivenessRatingDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InterventionEffectivenessRatingDescriptor" + }, + "DiagnosticStatement": { + "paths": { + "diagnosticStatement": "$.diagnosticStatement" + }, + "pathOrder": [ + "diagnosticStatement" + ], + "isReference": false + }, + "Dosage": { + "paths": { + "dosage": "$.dosage" + }, + "pathOrder": [ + "dosage" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "interventionIdentificationCode", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentSchoolAssociations": { + "resourceName": "StudentSchoolAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolAssociation", + "description": "This association represents the school in which a student is enrolled. The semantics of enrollment may differ slightly by state. Non-enrollment relationships between a student and an education organization may be described using the StudentEducationOrganizationAssociation.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "primarySchool": { + "type": "boolean", + "description": "Indicates if a given enrollment record should be considered the primary record for a student." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "entryDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual enters and begins to receive instructional services in a school." + }, + "entryGradeLevelDescriptor": { + "type": "string", + "description": "The grade level or primary instructional level at which a student enters and receives services in a school or an educational institution during a given academic session." + }, + "entryGradeLevelReasonDescriptor": { + "type": "string", + "description": "The primary reason as to why a staff member determined that a student should be promoted or not (or be demoted) at the end of a given school term." + }, + "entryTypeDescriptor": { + "type": "string", + "description": "The process by which a student enters a school during a given academic session." + }, + "repeatGradeIndicator": { + "type": "boolean", + "description": "An indicator of whether the student is enrolling to repeat a grade level, either by failure or an agreement to hold the student back." + }, + "classOfSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "schoolChoiceTransfer": { + "type": "boolean", + "description": "An indication of whether students transferred in or out of the school did so during the school year under the provisions for public school choice in accordance with Title I, Part A, Section 1116." + }, + "exitWithdrawDate": { + "type": "string", + "format": "date", + "description": "The recorded exit or withdraw date for the student." + }, + "exitWithdrawTypeDescriptor": { + "type": "string", + "description": "The circumstances under which the student exited from membership in an educational institution." + }, + "educationPlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationPlanDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationPlanDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "residencyStatusDescriptor": { + "type": "string", + "description": "An indication of the location of a persons legal residence relative to (within or outside of) the boundaries of the public school attended and its administrative unit." + }, + "graduationPlanReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "graduationSchoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ] + }, + "alternativeGraduationPlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alternativeGraduationPlanReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "graduationSchoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ] + } + }, + "additionalProperties": false, + "required": [ + "alternativeGraduationPlanReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "employedWhileEnrolled": { + "type": "boolean", + "description": "An individual who is a paid employee or works in his or her own business, profession, or farm and at the same time is enrolled in secondary, postsecondary, or adult education." + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The full-time equivalent ratio for the student’s assignment to a school for services or instruction. For example, a full-time student would have an FTE value of 1 while a half-time student would have an FTE value of 0.5." + }, + "termCompletionIndicator": { + "type": "boolean", + "description": "Idicates whether or not a student completed the most recent school term." + }, + "nextYearSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "nextYearGradeLevelDescriptor": { + "type": "string", + "description": "The anticipated grade level for the student for the next school year." + }, + "schoolChoice": { + "type": "boolean", + "description": "An indication of whether the student enrolled in this school under the provisions for public school choice" + }, + "schoolChoiceBasisDescriptor": { + "type": "string", + "description": "The legal basis for the school choice enrollment according to local, state or federal policy or regulation. (The descriptor provides the list of available bases specific to the state" + }, + "enrollmentTypeDescriptor": { + "type": "string", + "description": "The type of enrollment reflected by the StudentSchoolAssociation." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "schoolReference", + "entryDate", + "entryGradeLevelDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolAssociation", + "description": "This association represents the school in which a student is enrolled. The semantics of enrollment may differ slightly by state. Non-enrollment relationships between a student and an education organization may be described using the StudentEducationOrganizationAssociation.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "primarySchool": { + "type": "boolean", + "description": "Indicates if a given enrollment record should be considered the primary record for a student." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "entryDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual enters and begins to receive instructional services in a school." + }, + "entryGradeLevelDescriptor": { + "type": "string", + "description": "The grade level or primary instructional level at which a student enters and receives services in a school or an educational institution during a given academic session." + }, + "entryGradeLevelReasonDescriptor": { + "type": "string", + "description": "The primary reason as to why a staff member determined that a student should be promoted or not (or be demoted) at the end of a given school term." + }, + "entryTypeDescriptor": { + "type": "string", + "description": "The process by which a student enters a school during a given academic session." + }, + "repeatGradeIndicator": { + "type": "boolean", + "description": "An indicator of whether the student is enrolling to repeat a grade level, either by failure or an agreement to hold the student back." + }, + "classOfSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "schoolChoiceTransfer": { + "type": "boolean", + "description": "An indication of whether students transferred in or out of the school did so during the school year under the provisions for public school choice in accordance with Title I, Part A, Section 1116." + }, + "exitWithdrawDate": { + "type": "string", + "format": "date", + "description": "The recorded exit or withdraw date for the student." + }, + "exitWithdrawTypeDescriptor": { + "type": "string", + "description": "The circumstances under which the student exited from membership in an educational institution." + }, + "educationPlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationPlanDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationPlanDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "residencyStatusDescriptor": { + "type": "string", + "description": "An indication of the location of a persons legal residence relative to (within or outside of) the boundaries of the public school attended and its administrative unit." + }, + "graduationPlanReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "graduationSchoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ] + }, + "alternativeGraduationPlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alternativeGraduationPlanReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "graduationSchoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ] + } + }, + "additionalProperties": false, + "required": [ + "alternativeGraduationPlanReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "employedWhileEnrolled": { + "type": "boolean", + "description": "An individual who is a paid employee or works in his or her own business, profession, or farm and at the same time is enrolled in secondary, postsecondary, or adult education." + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The full-time equivalent ratio for the student’s assignment to a school for services or instruction. For example, a full-time student would have an FTE value of 1 while a half-time student would have an FTE value of 0.5." + }, + "termCompletionIndicator": { + "type": "boolean", + "description": "Idicates whether or not a student completed the most recent school term." + }, + "nextYearSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "nextYearGradeLevelDescriptor": { + "type": "string", + "description": "The anticipated grade level for the student for the next school year." + }, + "schoolChoice": { + "type": "boolean", + "description": "An indication of whether the student enrolled in this school under the provisions for public school choice" + }, + "schoolChoiceBasisDescriptor": { + "type": "string", + "description": "The legal basis for the school choice enrollment according to local, state or federal policy or regulation. (The descriptor provides the list of available bases specific to the state" + }, + "enrollmentTypeDescriptor": { + "type": "string", + "description": "The type of enrollment reflected by the StudentSchoolAssociation." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "schoolReference", + "entryDate", + "entryGradeLevelDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolAssociation", + "description": "This association represents the school in which a student is enrolled. The semantics of enrollment may differ slightly by state. Non-enrollment relationships between a student and an education organization may be described using the StudentEducationOrganizationAssociation.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "schoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "primarySchool": { + "type": "boolean", + "description": "Indicates if a given enrollment record should be considered the primary record for a student." + }, + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "entryDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which an individual enters and begins to receive instructional services in a school." + }, + "entryGradeLevelDescriptor": { + "type": "string", + "description": "The grade level or primary instructional level at which a student enters and receives services in a school or an educational institution during a given academic session." + }, + "entryGradeLevelReasonDescriptor": { + "type": "string", + "description": "The primary reason as to why a staff member determined that a student should be promoted or not (or be demoted) at the end of a given school term." + }, + "entryTypeDescriptor": { + "type": "string", + "description": "The process by which a student enters a school during a given academic session." + }, + "repeatGradeIndicator": { + "type": "boolean", + "description": "An indicator of whether the student is enrolling to repeat a grade level, either by failure or an agreement to hold the student back." + }, + "classOfSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "schoolChoiceTransfer": { + "type": "boolean", + "description": "An indication of whether students transferred in or out of the school did so during the school year under the provisions for public school choice in accordance with Title I, Part A, Section 1116." + }, + "exitWithdrawDate": { + "type": "string", + "format": "date", + "description": "The recorded exit or withdraw date for the student." + }, + "exitWithdrawTypeDescriptor": { + "type": "string", + "description": "The circumstances under which the student exited from membership in an educational institution." + }, + "educationPlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationPlanDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationPlanDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "residencyStatusDescriptor": { + "type": "string", + "description": "An indication of the location of a persons legal residence relative to (within or outside of) the boundaries of the public school attended and its administrative unit." + }, + "graduationPlanReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "graduationSchoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ] + }, + "alternativeGraduationPlans": { + "type": "array", + "items": { + "type": "object", + "properties": { + "alternativeGraduationPlanReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "graduationPlanTypeDescriptor": { + "type": "string", + "description": "The type of academic plan the student is following for graduation." + }, + "graduationSchoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ] + } + }, + "additionalProperties": false, + "required": [ + "alternativeGraduationPlanReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "employedWhileEnrolled": { + "type": "boolean", + "description": "An individual who is a paid employee or works in his or her own business, profession, or farm and at the same time is enrolled in secondary, postsecondary, or adult education." + }, + "calendarReference": { + "type": "object", + "properties": { + "calendarCode": { + "type": "string", + "description": "The identifier for the calendar.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false, + "required": [ + "calendarCode", + "schoolId", + "schoolYear" + ] + }, + "fullTimeEquivalency": { + "type": "number", + "description": "The full-time equivalent ratio for the student’s assignment to a school for services or instruction. For example, a full-time student would have an FTE value of 1 while a half-time student would have an FTE value of 0.5." + }, + "termCompletionIndicator": { + "type": "boolean", + "description": "Idicates whether or not a student completed the most recent school term." + }, + "nextYearSchoolReference": { + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + } + }, + "additionalProperties": false, + "required": [ + "schoolId" + ] + }, + "nextYearGradeLevelDescriptor": { + "type": "string", + "description": "The anticipated grade level for the student for the next school year." + }, + "schoolChoice": { + "type": "boolean", + "description": "An indication of whether the student enrolled in this school under the provisions for public school choice" + }, + "schoolChoiceBasisDescriptor": { + "type": "string", + "description": "The legal basis for the school choice enrollment according to local, state or federal policy or regulation. (The descriptor provides the list of available bases specific to the state" + }, + "enrollmentTypeDescriptor": { + "type": "string", + "description": "The type of enrollment reflected by the StudentSchoolAssociation." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [ + { + "sourceJsonPath": "$.calendarReference.schoolId", + "targetJsonPath": "$.schoolReference.schoolId" + }, + { + "sourceJsonPath": "$.calendarReference.schoolYear", + "targetJsonPath": "$.schoolYearTypeReference.schoolYear" + } + ], + "identityFullnames": [ + "Student", + "School", + "EntryDate" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "School": { + "paths": { + "schoolId": "$.schoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "PrimarySchool": { + "paths": { + "primarySchool": "$.primarySchool" + }, + "pathOrder": [ + "primarySchool" + ], + "isReference": false + }, + "SchoolYear": { + "paths": { + "schoolYear": "$.schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "EntryDate": { + "paths": { + "entryDate": "$.entryDate" + }, + "pathOrder": [ + "entryDate" + ], + "isReference": false + }, + "EntryGradeLevel": { + "paths": { + "entryGradeLevelDescriptor": "$.entryGradeLevelDescriptor" + }, + "pathOrder": [ + "entryGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "EntryGradeLevelReason": { + "paths": { + "entryGradeLevelReasonDescriptor": "$.entryGradeLevelReasonDescriptor" + }, + "pathOrder": [ + "entryGradeLevelReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EntryGradeLevelReasonDescriptor" + }, + "EntryType": { + "paths": { + "entryTypeDescriptor": "$.entryTypeDescriptor" + }, + "pathOrder": [ + "entryTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EntryTypeDescriptor" + }, + "RepeatGradeIndicator": { + "paths": { + "repeatGradeIndicator": "$.repeatGradeIndicator" + }, + "pathOrder": [ + "repeatGradeIndicator" + ], + "isReference": false + }, + "ClassOfSchoolYear": { + "paths": { + "schoolYear": "$.classOfSchoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "SchoolChoiceTransfer": { + "paths": { + "schoolChoiceTransfer": "$.schoolChoiceTransfer" + }, + "pathOrder": [ + "schoolChoiceTransfer" + ], + "isReference": false + }, + "ExitWithdrawDate": { + "paths": { + "exitWithdrawDate": "$.exitWithdrawDate" + }, + "pathOrder": [ + "exitWithdrawDate" + ], + "isReference": false + }, + "ExitWithdrawType": { + "paths": { + "exitWithdrawTypeDescriptor": "$.exitWithdrawTypeDescriptor" + }, + "pathOrder": [ + "exitWithdrawTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ExitWithdrawTypeDescriptor" + }, + "EducationPlan": { + "paths": { + "educationPlanDescriptor": "$.educationPlans[*].educationPlanDescriptor" + }, + "pathOrder": [ + "educationPlanDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationPlanDescriptor" + }, + "ResidencyStatus": { + "paths": { + "residencyStatusDescriptor": "$.residencyStatusDescriptor" + }, + "pathOrder": [ + "residencyStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ResidencyStatusDescriptor" + }, + "GraduationPlan": { + "paths": { + "educationOrganizationId": "$.graduationPlanReference.educationOrganizationId", + "graduationPlanTypeDescriptor": "$.graduationPlanReference.graduationPlanTypeDescriptor", + "graduationSchoolYear": "$.graduationPlanReference.graduationSchoolYear" + }, + "pathOrder": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GraduationPlan" + }, + "AlternativeGraduationPlan": { + "paths": { + "educationOrganizationId": "$.alternativeGraduationPlans[*].alternativeGraduationPlanReference.educationOrganizationId", + "graduationPlanTypeDescriptor": "$.alternativeGraduationPlans[*].alternativeGraduationPlanReference.graduationPlanTypeDescriptor", + "graduationSchoolYear": "$.alternativeGraduationPlans[*].alternativeGraduationPlanReference.graduationSchoolYear" + }, + "pathOrder": [ + "educationOrganizationId", + "graduationPlanTypeDescriptor", + "graduationSchoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "GraduationPlan" + }, + "EmployedWhileEnrolled": { + "paths": { + "employedWhileEnrolled": "$.employedWhileEnrolled" + }, + "pathOrder": [ + "employedWhileEnrolled" + ], + "isReference": false + }, + "Calendar": { + "paths": { + "calendarCode": "$.calendarReference.calendarCode", + "schoolId": "$.calendarReference.schoolId", + "schoolYear": "$.calendarReference.schoolYear" + }, + "pathOrder": [ + "calendarCode", + "schoolId", + "schoolYear" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Calendar" + }, + "FullTimeEquivalency": { + "paths": { + "fullTimeEquivalency": "$.fullTimeEquivalency" + }, + "pathOrder": [ + "fullTimeEquivalency" + ], + "isReference": false + }, + "TermCompletionIndicator": { + "paths": { + "termCompletionIndicator": "$.termCompletionIndicator" + }, + "pathOrder": [ + "termCompletionIndicator" + ], + "isReference": false + }, + "NextYearSchool": { + "paths": { + "schoolId": "$.nextYearSchoolReference.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "School" + }, + "NextYearGradeLevel": { + "paths": { + "nextYearGradeLevelDescriptor": "$.nextYearGradeLevelDescriptor" + }, + "pathOrder": [ + "nextYearGradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "SchoolChoice": { + "paths": { + "schoolChoice": "$.schoolChoice" + }, + "pathOrder": [ + "schoolChoice" + ], + "isReference": false + }, + "SchoolChoiceBasis": { + "paths": { + "schoolChoiceBasisDescriptor": "$.schoolChoiceBasisDescriptor" + }, + "pathOrder": [ + "schoolChoiceBasisDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SchoolChoiceBasisDescriptor" + }, + "EnrollmentType": { + "paths": { + "enrollmentTypeDescriptor": "$.enrollmentTypeDescriptor" + }, + "pathOrder": [ + "enrollmentTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EnrollmentTypeDescriptor" + } + }, + "identityPathOrder": [ + "entryDate", + "schoolId", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentSectionAssociations": { + "resourceName": "StudentSectionAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": true, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSectionAssociation", + "description": "This association indicates the course sections to which a student is assigned.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the withdrawal or exit of the student from the section." + }, + "homeroomIndicator": { + "type": "boolean", + "description": "Indicates the section is the student's homeroom. Homeroom period may the convention for taking daily attendance." + }, + "repeatIdentifierDescriptor": { + "type": "string", + "description": "An indication as to whether a student has previously taken a given course." + }, + "teacherStudentDataLinkExclusion": { + "type": "boolean", + "description": "Indicates that the student-section combination is excluded from calculation of value-added or growth attribution calculations used for a particular teacher evaluation." + }, + "attemptStatusDescriptor": { + "type": "string", + "description": "An indication of the student's completion status for the section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "sectionReference", + "beginDate" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSectionAssociation", + "description": "This association indicates the course sections to which a student is assigned.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the withdrawal or exit of the student from the section." + }, + "homeroomIndicator": { + "type": "boolean", + "description": "Indicates the section is the student's homeroom. Homeroom period may the convention for taking daily attendance." + }, + "repeatIdentifierDescriptor": { + "type": "string", + "description": "An indication as to whether a student has previously taken a given course." + }, + "teacherStudentDataLinkExclusion": { + "type": "boolean", + "description": "Indicates that the student-section combination is excluded from calculation of value-added or growth attribution calculations used for a particular teacher evaluation." + }, + "attemptStatusDescriptor": { + "type": "string", + "description": "An indication of the student's completion status for the section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "sectionReference", + "beginDate" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSectionAssociation", + "description": "This association indicates the course sections to which a student is assigned.", + "type": "object", + "properties": { + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the student's entry or assignment to the section." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "Month, day, and year of the withdrawal or exit of the student from the section." + }, + "homeroomIndicator": { + "type": "boolean", + "description": "Indicates the section is the student's homeroom. Homeroom period may the convention for taking daily attendance." + }, + "repeatIdentifierDescriptor": { + "type": "string", + "description": "An indication as to whether a student has previously taken a given course." + }, + "teacherStudentDataLinkExclusion": { + "type": "boolean", + "description": "Indicates that the student-section combination is excluded from calculation of value-added or growth attribution calculations used for a particular teacher evaluation." + }, + "attemptStatusDescriptor": { + "type": "string", + "description": "An indication of the student's completion status for the section." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Student", + "Section", + "BeginDate" + ], + "documentPathsMapping": { + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Section": { + "paths": { + "localCourseCode": "$.sectionReference.localCourseCode", + "schoolId": "$.sectionReference.schoolId", + "schoolYear": "$.sectionReference.schoolYear", + "sectionIdentifier": "$.sectionReference.sectionIdentifier", + "sessionName": "$.sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "HomeroomIndicator": { + "paths": { + "homeroomIndicator": "$.homeroomIndicator" + }, + "pathOrder": [ + "homeroomIndicator" + ], + "isReference": false + }, + "RepeatIdentifier": { + "paths": { + "repeatIdentifierDescriptor": "$.repeatIdentifierDescriptor" + }, + "pathOrder": [ + "repeatIdentifierDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "RepeatIdentifierDescriptor" + }, + "TeacherStudentDataLinkExclusion": { + "paths": { + "teacherStudentDataLinkExclusion": "$.teacherStudentDataLinkExclusion" + }, + "pathOrder": [ + "teacherStudentDataLinkExclusion" + ], + "isReference": false + }, + "AttemptStatus": { + "paths": { + "attemptStatusDescriptor": "$.attemptStatusDescriptor" + }, + "pathOrder": [ + "attemptStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AttemptStatusDescriptor" + } + }, + "identityPathOrder": [ + "beginDate", + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "studentUniqueId" + ], + "isSubclass": false + }, + "studentSpecialEducationProgramEligibilityAssociations": { + "resourceName": "StudentSpecialEducationProgramEligibilityAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSpecialEducationProgramEligibilityAssociation", + "description": "Captures details regarding the evaluation process for eligibility of students for special education services under IDEA Part C or Part B.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "consentToEvaluationReceivedDate": { + "type": "string", + "format": "date", + "description": "Indicates the date on which the local education agency received written consent for the evaluation from the student's parent or guardian. This is the first day of the evaluation timeframe." + }, + "originalECIServicesDate": { + "type": "string", + "format": "date", + "description": "The month, date, and year when an infant or toddler, from birth through age 2, began participating in the early childhood intervention (ECI) program." + }, + "ideaPartDescriptor": { + "type": "string", + "description": "Indicates if the evaluation is done under Part B IDEA or Part C IDEA." + }, + "consentToEvaluationDate": { + "type": "string", + "format": "date", + "description": "The date on which the student's parent gave a consent (Parent Consent Date)." + }, + "evaluationCompleteIndicator": { + "type": "boolean", + "description": "Indicates the evaluation completed status." + }, + "eligibilityEvaluationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year when the written individual evaluation report was completed." + }, + "eligibilityEvaluationTypeDescriptor": { + "type": "string", + "description": "Indicates if this is an initial evaluation or a reevaluation." + }, + "evaluationDelayReasonDescriptor": { + "type": "string", + "description": "Refers to the justification as to why the evaluation report was completed beyond the state-established timeframe. This descriptor field will have allowed reasons as descriptor values." + }, + "evaluationLateReason": { + "type": "string", + "description": "Refers to additional information for delay in doing the evaluation.", + "minLength": 1, + "maxLength": 255 + }, + "evaluationDelayDays": { + "type": "integer", + "description": "Indicates the number of student absences, if any, beginning the first instructional day following the date on which the local education agency (LEA) received written parental or guardian consent for the evaluation." + }, + "eligibilityDeterminationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year the local education agency (LEA) held the admission, review, and dismissal committee meeting regarding the child's eligibility determination for special education and related services. An individualized education plan (IEP) would be developed and implemented for a child admitted into special education on this same date." + }, + "ideaIndicator": { + "type": "boolean", + "description": "Indicates whether or not the student was determined eligible and enrolled in special education and related services as a result of the evaluation report and the admission, review, and dismissal committee meeting decision." + }, + "eligibilityDelayReasonDescriptor": { + "type": "string", + "description": "The reason why the eligibility determination was completed beyond the required timeframe." + }, + "transitionNotificationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year the LEA Notification of Potentially Eligible for Special Education Services was sent by the early childhood intervention (ECI) contractor to the local education agency (LEA) to notify them that a child enrolled in ECI will shortly reach the age of eligibility for Part B services and the child is potentially eligible for services under Part B, early childhood special education (ECSE). The LEA Notification constitutes a referral to the LEA for an initial evaluation and eligibility determination of the child which the parent or guardian may opt out from the referral." + }, + "transitionConferenceDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year when the transition conference was held (for a child receiving early childhood intervention (ECI) services) among the lead agency, the family, and the local education agency (LEA) where the child resides to discuss the child's potential eligibility for early childhood special education (ECSE) services." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationReference", + "studentReference", + "programReference", + "consentToEvaluationReceivedDate", + "ideaPartDescriptor" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSpecialEducationProgramEligibilityAssociation", + "description": "Captures details regarding the evaluation process for eligibility of students for special education services under IDEA Part C or Part B.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "consentToEvaluationReceivedDate": { + "type": "string", + "format": "date", + "description": "Indicates the date on which the local education agency received written consent for the evaluation from the student's parent or guardian. This is the first day of the evaluation timeframe." + }, + "originalECIServicesDate": { + "type": "string", + "format": "date", + "description": "The month, date, and year when an infant or toddler, from birth through age 2, began participating in the early childhood intervention (ECI) program." + }, + "ideaPartDescriptor": { + "type": "string", + "description": "Indicates if the evaluation is done under Part B IDEA or Part C IDEA." + }, + "consentToEvaluationDate": { + "type": "string", + "format": "date", + "description": "The date on which the student's parent gave a consent (Parent Consent Date)." + }, + "evaluationCompleteIndicator": { + "type": "boolean", + "description": "Indicates the evaluation completed status." + }, + "eligibilityEvaluationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year when the written individual evaluation report was completed." + }, + "eligibilityEvaluationTypeDescriptor": { + "type": "string", + "description": "Indicates if this is an initial evaluation or a reevaluation." + }, + "evaluationDelayReasonDescriptor": { + "type": "string", + "description": "Refers to the justification as to why the evaluation report was completed beyond the state-established timeframe. This descriptor field will have allowed reasons as descriptor values." + }, + "evaluationLateReason": { + "type": "string", + "description": "Refers to additional information for delay in doing the evaluation.", + "minLength": 1, + "maxLength": 255 + }, + "evaluationDelayDays": { + "type": "integer", + "description": "Indicates the number of student absences, if any, beginning the first instructional day following the date on which the local education agency (LEA) received written parental or guardian consent for the evaluation." + }, + "eligibilityDeterminationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year the local education agency (LEA) held the admission, review, and dismissal committee meeting regarding the child's eligibility determination for special education and related services. An individualized education plan (IEP) would be developed and implemented for a child admitted into special education on this same date." + }, + "ideaIndicator": { + "type": "boolean", + "description": "Indicates whether or not the student was determined eligible and enrolled in special education and related services as a result of the evaluation report and the admission, review, and dismissal committee meeting decision." + }, + "eligibilityDelayReasonDescriptor": { + "type": "string", + "description": "The reason why the eligibility determination was completed beyond the required timeframe." + }, + "transitionNotificationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year the LEA Notification of Potentially Eligible for Special Education Services was sent by the early childhood intervention (ECI) contractor to the local education agency (LEA) to notify them that a child enrolled in ECI will shortly reach the age of eligibility for Part B services and the child is potentially eligible for services under Part B, early childhood special education (ECSE). The LEA Notification constitutes a referral to the LEA for an initial evaluation and eligibility determination of the child which the parent or guardian may opt out from the referral." + }, + "transitionConferenceDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year when the transition conference was held (for a child receiving early childhood intervention (ECI) services) among the lead agency, the family, and the local education agency (LEA) where the child resides to discuss the child's potential eligibility for early childhood special education (ECSE) services." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationReference", + "studentReference", + "programReference", + "consentToEvaluationReceivedDate", + "ideaPartDescriptor" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSpecialEducationProgramEligibilityAssociation", + "description": "Captures details regarding the evaluation process for eligibility of students for special education services under IDEA Part C or Part B.", + "type": "object", + "properties": { + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "consentToEvaluationReceivedDate": { + "type": "string", + "format": "date", + "description": "Indicates the date on which the local education agency received written consent for the evaluation from the student's parent or guardian. This is the first day of the evaluation timeframe." + }, + "originalECIServicesDate": { + "type": "string", + "format": "date", + "description": "The month, date, and year when an infant or toddler, from birth through age 2, began participating in the early childhood intervention (ECI) program." + }, + "ideaPartDescriptor": { + "type": "string", + "description": "Indicates if the evaluation is done under Part B IDEA or Part C IDEA." + }, + "consentToEvaluationDate": { + "type": "string", + "format": "date", + "description": "The date on which the student's parent gave a consent (Parent Consent Date)." + }, + "evaluationCompleteIndicator": { + "type": "boolean", + "description": "Indicates the evaluation completed status." + }, + "eligibilityEvaluationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year when the written individual evaluation report was completed." + }, + "eligibilityEvaluationTypeDescriptor": { + "type": "string", + "description": "Indicates if this is an initial evaluation or a reevaluation." + }, + "evaluationDelayReasonDescriptor": { + "type": "string", + "description": "Refers to the justification as to why the evaluation report was completed beyond the state-established timeframe. This descriptor field will have allowed reasons as descriptor values." + }, + "evaluationLateReason": { + "type": "string", + "description": "Refers to additional information for delay in doing the evaluation.", + "minLength": 1, + "maxLength": 255 + }, + "evaluationDelayDays": { + "type": "integer", + "description": "Indicates the number of student absences, if any, beginning the first instructional day following the date on which the local education agency (LEA) received written parental or guardian consent for the evaluation." + }, + "eligibilityDeterminationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year the local education agency (LEA) held the admission, review, and dismissal committee meeting regarding the child's eligibility determination for special education and related services. An individualized education plan (IEP) would be developed and implemented for a child admitted into special education on this same date." + }, + "ideaIndicator": { + "type": "boolean", + "description": "Indicates whether or not the student was determined eligible and enrolled in special education and related services as a result of the evaluation report and the admission, review, and dismissal committee meeting decision." + }, + "eligibilityDelayReasonDescriptor": { + "type": "string", + "description": "The reason why the eligibility determination was completed beyond the required timeframe." + }, + "transitionNotificationDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year the LEA Notification of Potentially Eligible for Special Education Services was sent by the early childhood intervention (ECI) contractor to the local education agency (LEA) to notify them that a child enrolled in ECI will shortly reach the age of eligibility for Part B services and the child is potentially eligible for services under Part B, early childhood special education (ECSE). The LEA Notification constitutes a referral to the LEA for an initial evaluation and eligibility determination of the child which the parent or guardian may opt out from the referral." + }, + "transitionConferenceDate": { + "type": "string", + "format": "date", + "description": "Indicates the month, day, and year when the transition conference was held (for a child receiving early childhood intervention (ECI) services) among the lead agency, the family, and the local education agency (LEA) where the child resides to discuss the child's potential eligibility for early childhood special education (ECSE) services." + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganization", + "Student", + "Program", + "ConsentToEvaluationReceivedDate" + ], + "documentPathsMapping": { + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "ConsentToEvaluationReceivedDate": { + "paths": { + "consentToEvaluationReceivedDate": "$.consentToEvaluationReceivedDate" + }, + "pathOrder": [ + "consentToEvaluationReceivedDate" + ], + "isReference": false + }, + "OriginalECIServicesDate": { + "paths": { + "originalECIServicesDate": "$.originalECIServicesDate" + }, + "pathOrder": [ + "originalECIServicesDate" + ], + "isReference": false + }, + "IDEAPart": { + "paths": { + "ideaPartDescriptor": "$.ideaPartDescriptor" + }, + "pathOrder": [ + "ideaPartDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IDEAPartDescriptor" + }, + "ConsentToEvaluationDate": { + "paths": { + "consentToEvaluationDate": "$.consentToEvaluationDate" + }, + "pathOrder": [ + "consentToEvaluationDate" + ], + "isReference": false + }, + "EvaluationCompleteIndicator": { + "paths": { + "evaluationCompleteIndicator": "$.evaluationCompleteIndicator" + }, + "pathOrder": [ + "evaluationCompleteIndicator" + ], + "isReference": false + }, + "EligibilityEvaluationDate": { + "paths": { + "eligibilityEvaluationDate": "$.eligibilityEvaluationDate" + }, + "pathOrder": [ + "eligibilityEvaluationDate" + ], + "isReference": false + }, + "EligibilityEvaluationType": { + "paths": { + "eligibilityEvaluationTypeDescriptor": "$.eligibilityEvaluationTypeDescriptor" + }, + "pathOrder": [ + "eligibilityEvaluationTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EligibilityEvaluationTypeDescriptor" + }, + "EvaluationDelayReason": { + "paths": { + "evaluationDelayReasonDescriptor": "$.evaluationDelayReasonDescriptor" + }, + "pathOrder": [ + "evaluationDelayReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EvaluationDelayReasonDescriptor" + }, + "EvaluationLateReason": { + "paths": { + "evaluationLateReason": "$.evaluationLateReason" + }, + "pathOrder": [ + "evaluationLateReason" + ], + "isReference": false + }, + "EvaluationDelayDays": { + "paths": { + "evaluationDelayDays": "$.evaluationDelayDays" + }, + "pathOrder": [ + "evaluationDelayDays" + ], + "isReference": false + }, + "EligibilityDeterminationDate": { + "paths": { + "eligibilityDeterminationDate": "$.eligibilityDeterminationDate" + }, + "pathOrder": [ + "eligibilityDeterminationDate" + ], + "isReference": false + }, + "IDEAIndicator": { + "paths": { + "ideaIndicator": "$.ideaIndicator" + }, + "pathOrder": [ + "ideaIndicator" + ], + "isReference": false + }, + "EligibilityDelayReason": { + "paths": { + "eligibilityDelayReasonDescriptor": "$.eligibilityDelayReasonDescriptor" + }, + "pathOrder": [ + "eligibilityDelayReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EligibilityDelayReasonDescriptor" + }, + "TransitionNotificationDate": { + "paths": { + "transitionNotificationDate": "$.transitionNotificationDate" + }, + "pathOrder": [ + "transitionNotificationDate" + ], + "isReference": false + }, + "TransitionConferenceDate": { + "paths": { + "transitionConferenceDate": "$.transitionConferenceDate" + }, + "pathOrder": [ + "transitionConferenceDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "consentToEvaluationReceivedDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": false + }, + "surveyCourseAssociations": { + "resourceName": "SurveyCourseAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyCourseAssociation", + "description": "The course associated with the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyReference", + "courseReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyCourseAssociation", + "description": "The course associated with the survey.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyReference", + "courseReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyCourseAssociation", + "description": "The course associated with the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "courseReference": { + "type": "object", + "properties": { + "courseCode": { + "type": "string", + "description": "A unique alphanumeric code assigned to a course.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "courseCode", + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Survey", + "Course" + ], + "documentPathsMapping": { + "Survey": { + "paths": { + "namespace": "$.surveyReference.namespace", + "surveyIdentifier": "$.surveyReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Survey" + }, + "Course": { + "paths": { + "courseCode": "$.courseReference.courseCode", + "educationOrganizationId": "$.courseReference.educationOrganizationId" + }, + "pathOrder": [ + "courseCode", + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Course" + } + }, + "identityPathOrder": [ + "courseCode", + "educationOrganizationId", + "namespace", + "surveyIdentifier" + ], + "isSubclass": false + }, + "surveyProgramAssociations": { + "resourceName": "SurveyProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyProgramAssociation", + "description": "The program associated with the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyReference", + "programReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyProgramAssociation", + "description": "The program associated with the survey.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyReference", + "programReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyProgramAssociation", + "description": "The program associated with the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Survey", + "Program" + ], + "documentPathsMapping": { + "Survey": { + "paths": { + "namespace": "$.surveyReference.namespace", + "surveyIdentifier": "$.surveyReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Survey" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "namespace", + "programName", + "programTypeDescriptor", + "surveyIdentifier" + ], + "isSubclass": false + }, + "surveyResponseEducationOrganizationTargetAssociations": { + "resourceName": "SurveyResponseEducationOrganizationTargetAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponseEducationOrganizationTargetAssociation", + "description": "This association provides information about the survey being taken and the education organization the survey is about.", + "type": "object", + "properties": { + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyResponseReference", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponseEducationOrganizationTargetAssociation", + "description": "This association provides information about the survey being taken and the education organization the survey is about.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyResponseReference", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponseEducationOrganizationTargetAssociation", + "description": "This association provides information about the survey being taken and the education organization the survey is about.", + "type": "object", + "properties": { + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SurveyResponse", + "EducationOrganization" + ], + "documentPathsMapping": { + "SurveyResponse": { + "paths": { + "namespace": "$.surveyResponseReference.namespace", + "surveyIdentifier": "$.surveyResponseReference.surveyIdentifier", + "surveyResponseIdentifier": "$.surveyResponseReference.surveyResponseIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveyResponse" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isSubclass": false + }, + "surveyResponseStaffTargetAssociations": { + "resourceName": "SurveyResponseStaffTargetAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponseStaffTargetAssociation", + "description": "The association provides information about the survey being taken and who the survey is about.", + "type": "object", + "properties": { + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyResponseReference", + "staffReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponseStaffTargetAssociation", + "description": "The association provides information about the survey being taken and who the survey is about.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyResponseReference", + "staffReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveyResponseStaffTargetAssociation", + "description": "The association provides information about the survey being taken and who the survey is about.", + "type": "object", + "properties": { + "surveyResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ] + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SurveyResponse", + "Staff" + ], + "documentPathsMapping": { + "SurveyResponse": { + "paths": { + "namespace": "$.surveyResponseReference.namespace", + "surveyIdentifier": "$.surveyResponseReference.surveyIdentifier", + "surveyResponseIdentifier": "$.surveyResponseReference.surveyResponseIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveyResponse" + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + } + }, + "identityPathOrder": [ + "namespace", + "staffUniqueId", + "surveyIdentifier", + "surveyResponseIdentifier" + ], + "isSubclass": false + }, + "surveySectionAssociations": { + "resourceName": "SurveySectionAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionAssociation", + "description": "The section associated with the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveyReference", + "sectionReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionAssociation", + "description": "The section associated with the survey.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveyReference", + "sectionReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionAssociation", + "description": "The section associated with the survey.", + "type": "object", + "properties": { + "surveyReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier" + ] + }, + "sectionReference": { + "type": "object", + "properties": { + "localCourseCode": { + "type": "string", + "description": "The local code assigned by the School that identifies the course offering provided for the instruction of students.", + "minLength": 1, + "maxLength": 60 + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + }, + "sessionName": { + "type": "string", + "description": "The identifier for the calendar for the academic session.", + "minLength": 1, + "maxLength": 60 + }, + "sectionIdentifier": { + "type": "string", + "description": "The local identifier assigned to a section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sessionName", + "sectionIdentifier" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "Survey", + "Section" + ], + "documentPathsMapping": { + "Survey": { + "paths": { + "namespace": "$.surveyReference.namespace", + "surveyIdentifier": "$.surveyReference.surveyIdentifier" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Survey" + }, + "Section": { + "paths": { + "localCourseCode": "$.sectionReference.localCourseCode", + "schoolId": "$.sectionReference.schoolId", + "schoolYear": "$.sectionReference.schoolYear", + "sectionIdentifier": "$.sectionReference.sectionIdentifier", + "sessionName": "$.sectionReference.sessionName" + }, + "pathOrder": [ + "localCourseCode", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Section" + } + }, + "identityPathOrder": [ + "localCourseCode", + "namespace", + "schoolId", + "schoolYear", + "sectionIdentifier", + "sessionName", + "surveyIdentifier" + ], + "isSubclass": false + }, + "surveySectionResponseEducationOrganizationTargetAssociations": { + "resourceName": "SurveySectionResponseEducationOrganizationTargetAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponseEducationOrganizationTargetAssociation", + "description": "This association provides information about the survey section and the education organization the survey section is about.", + "type": "object", + "properties": { + "surveySectionResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveySectionResponseReference", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponseEducationOrganizationTargetAssociation", + "description": "This association provides information about the survey section and the education organization the survey section is about.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveySectionResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveySectionResponseReference", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponseEducationOrganizationTargetAssociation", + "description": "This association provides information about the survey section and the education organization the survey section is about.", + "type": "object", + "properties": { + "surveySectionResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ] + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SurveySectionResponse", + "EducationOrganization" + ], + "documentPathsMapping": { + "SurveySectionResponse": { + "paths": { + "namespace": "$.surveySectionResponseReference.namespace", + "surveyIdentifier": "$.surveySectionResponseReference.surveyIdentifier", + "surveyResponseIdentifier": "$.surveySectionResponseReference.surveyResponseIdentifier", + "surveySectionTitle": "$.surveySectionResponseReference.surveySectionTitle" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveySectionResponse" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + } + }, + "identityPathOrder": [ + "educationOrganizationId", + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ], + "isSubclass": false + }, + "surveySectionResponseStaffTargetAssociations": { + "resourceName": "SurveySectionResponseStaffTargetAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponseStaffTargetAssociation", + "description": "This association provides information about the survey section and the staff the survey section is about.", + "type": "object", + "properties": { + "surveySectionResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ] + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "surveySectionResponseReference", + "staffReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponseStaffTargetAssociation", + "description": "This association provides information about the survey section and the staff the survey section is about.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "surveySectionResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ] + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "surveySectionResponseReference", + "staffReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.SurveySectionResponseStaffTargetAssociation", + "description": "This association provides information about the survey section and the staff the survey section is about.", + "type": "object", + "properties": { + "surveySectionResponseReference": { + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for the survey.", + "minLength": 5, + "maxLength": 255 + }, + "surveyIdentifier": { + "type": "string", + "description": "The unique survey identifier from the survey tool.", + "minLength": 1, + "maxLength": 60 + }, + "surveyResponseIdentifier": { + "type": "string", + "description": "The identifier of the survey typically from the survey application.", + "minLength": 1, + "maxLength": 60 + }, + "surveySectionTitle": { + "type": "string", + "description": "The title or label for the survey section.", + "minLength": 1, + "maxLength": 255 + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ] + }, + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SurveySectionResponse", + "Staff" + ], + "documentPathsMapping": { + "SurveySectionResponse": { + "paths": { + "namespace": "$.surveySectionResponseReference.namespace", + "surveyIdentifier": "$.surveySectionResponseReference.surveyIdentifier", + "surveyResponseIdentifier": "$.surveySectionResponseReference.surveyResponseIdentifier", + "surveySectionTitle": "$.surveySectionResponseReference.surveySectionTitle" + }, + "pathOrder": [ + "namespace", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "SurveySectionResponse" + }, + "Staff": { + "paths": { + "staffUniqueId": "$.staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + } + }, + "identityPathOrder": [ + "namespace", + "staffUniqueId", + "surveyIdentifier", + "surveyResponseIdentifier", + "surveySectionTitle" + ], + "isSubclass": false + }, + "absenceEventCategoryDescriptors": { + "resourceName": "AbsenceEventCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "academicHonorCategoryDescriptors": { + "resourceName": "AcademicHonorCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "academicSubjectDescriptors": { + "resourceName": "AcademicSubjectDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "accommodationDescriptors": { + "resourceName": "AccommodationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "accountTypeDescriptors": { + "resourceName": "AccountTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "achievementCategoryDescriptors": { + "resourceName": "AchievementCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "additionalCreditTypeDescriptors": { + "resourceName": "AdditionalCreditTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "addressTypeDescriptors": { + "resourceName": "AddressTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "administrationEnvironmentDescriptors": { + "resourceName": "AdministrationEnvironmentDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "administrativeFundingControlDescriptors": { + "resourceName": "AdministrativeFundingControlDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "ancestryEthnicOriginDescriptors": { + "resourceName": "AncestryEthnicOriginDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assessmentCategoryDescriptors": { + "resourceName": "AssessmentCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assessmentIdentificationSystemDescriptors": { + "resourceName": "AssessmentIdentificationSystemDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assessmentItemCategoryDescriptors": { + "resourceName": "AssessmentItemCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assessmentItemResultDescriptors": { + "resourceName": "AssessmentItemResultDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assessmentPeriodDescriptors": { + "resourceName": "AssessmentPeriodDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assessmentReportingMethodDescriptors": { + "resourceName": "AssessmentReportingMethodDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "assignmentLateStatusDescriptors": { + "resourceName": "AssignmentLateStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "attemptStatusDescriptors": { + "resourceName": "AttemptStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "attendanceEventCategoryDescriptors": { + "resourceName": "AttendanceEventCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "barrierToInternetAccessInResidenceDescriptors": { + "resourceName": "BarrierToInternetAccessInResidenceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "behaviorDescriptors": { + "resourceName": "BehaviorDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "calendarEventDescriptors": { + "resourceName": "CalendarEventDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "calendarTypeDescriptors": { + "resourceName": "CalendarTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "careerPathwayDescriptors": { + "resourceName": "CareerPathwayDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "charterApprovalAgencyTypeDescriptors": { + "resourceName": "CharterApprovalAgencyTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "charterStatusDescriptors": { + "resourceName": "CharterStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "citizenshipStatusDescriptors": { + "resourceName": "CitizenshipStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "classroomPositionDescriptors": { + "resourceName": "ClassroomPositionDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "cohortScopeDescriptors": { + "resourceName": "CohortScopeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "cohortTypeDescriptors": { + "resourceName": "CohortTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "cohortYearTypeDescriptors": { + "resourceName": "CohortYearTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "competencyLevelDescriptors": { + "resourceName": "CompetencyLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "contactTypeDescriptors": { + "resourceName": "ContactTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "contentClassDescriptors": { + "resourceName": "ContentClassDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "continuationOfServicesReasonDescriptors": { + "resourceName": "ContinuationOfServicesReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "costRateDescriptors": { + "resourceName": "CostRateDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "countryDescriptors": { + "resourceName": "CountryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "courseAttemptResultDescriptors": { + "resourceName": "CourseAttemptResultDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "courseDefinedByDescriptors": { + "resourceName": "CourseDefinedByDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "courseGPAApplicabilityDescriptors": { + "resourceName": "CourseGPAApplicabilityDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "courseIdentificationSystemDescriptors": { + "resourceName": "CourseIdentificationSystemDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "courseLevelCharacteristicDescriptors": { + "resourceName": "CourseLevelCharacteristicDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "courseRepeatCodeDescriptors": { + "resourceName": "CourseRepeatCodeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "credentialFieldDescriptors": { + "resourceName": "CredentialFieldDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "credentialTypeDescriptors": { + "resourceName": "CredentialTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "creditCategoryDescriptors": { + "resourceName": "CreditCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "creditTypeDescriptors": { + "resourceName": "CreditTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "cTEProgramServiceDescriptors": { + "resourceName": "CTEProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "curriculumUsedDescriptors": { + "resourceName": "CurriculumUsedDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "deliveryMethodDescriptors": { + "resourceName": "DeliveryMethodDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "diagnosisDescriptors": { + "resourceName": "DiagnosisDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "diplomaLevelDescriptors": { + "resourceName": "DiplomaLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "diplomaTypeDescriptors": { + "resourceName": "DiplomaTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "disabilityDescriptors": { + "resourceName": "DisabilityDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "disabilityDesignationDescriptors": { + "resourceName": "DisabilityDesignationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "disabilityDeterminationSourceTypeDescriptors": { + "resourceName": "DisabilityDeterminationSourceTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "disciplineDescriptors": { + "resourceName": "DisciplineDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "disciplineActionLengthDifferenceReasonDescriptors": { + "resourceName": "DisciplineActionLengthDifferenceReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "disciplineIncidentParticipationCodeDescriptors": { + "resourceName": "DisciplineIncidentParticipationCodeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "educationalEnvironmentDescriptors": { + "resourceName": "EducationalEnvironmentDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "educationOrganizationAssociationTypeDescriptors": { + "resourceName": "EducationOrganizationAssociationTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "educationOrganizationCategoryDescriptors": { + "resourceName": "EducationOrganizationCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "educationOrganizationIdentificationSystemDescriptors": { + "resourceName": "EducationOrganizationIdentificationSystemDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "educationPlanDescriptors": { + "resourceName": "EducationPlanDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "electronicMailTypeDescriptors": { + "resourceName": "ElectronicMailTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "eligibilityDelayReasonDescriptors": { + "resourceName": "EligibilityDelayReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "eligibilityEvaluationTypeDescriptors": { + "resourceName": "EligibilityEvaluationTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "employmentStatusDescriptors": { + "resourceName": "EmploymentStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "enrollmentTypeDescriptors": { + "resourceName": "EnrollmentTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "entryGradeLevelReasonDescriptors": { + "resourceName": "EntryGradeLevelReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "entryTypeDescriptors": { + "resourceName": "EntryTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "evaluationDelayReasonDescriptors": { + "resourceName": "EvaluationDelayReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "eventCircumstanceDescriptors": { + "resourceName": "EventCircumstanceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "exitWithdrawTypeDescriptors": { + "resourceName": "ExitWithdrawTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "financialCollectionDescriptors": { + "resourceName": "FinancialCollectionDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "gradebookEntryTypeDescriptors": { + "resourceName": "GradebookEntryTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "gradeLevelDescriptors": { + "resourceName": "GradeLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "gradePointAverageTypeDescriptors": { + "resourceName": "GradePointAverageTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "gradeTypeDescriptors": { + "resourceName": "GradeTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "gradingPeriodDescriptors": { + "resourceName": "GradingPeriodDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "graduationPlanTypeDescriptors": { + "resourceName": "GraduationPlanTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "gunFreeSchoolsActReportingStatusDescriptors": { + "resourceName": "GunFreeSchoolsActReportingStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "homelessPrimaryNighttimeResidenceDescriptors": { + "resourceName": "HomelessPrimaryNighttimeResidenceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "homelessProgramServiceDescriptors": { + "resourceName": "HomelessProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "iDEAPartDescriptors": { + "resourceName": "IDEAPartDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "identificationDocumentUseDescriptors": { + "resourceName": "IdentificationDocumentUseDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "incidentLocationDescriptors": { + "resourceName": "IncidentLocationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "indicatorDescriptors": { + "resourceName": "IndicatorDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "indicatorGroupDescriptors": { + "resourceName": "IndicatorGroupDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "indicatorLevelDescriptors": { + "resourceName": "IndicatorLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "institutionTelephoneNumberTypeDescriptors": { + "resourceName": "InstitutionTelephoneNumberTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "interactivityStyleDescriptors": { + "resourceName": "InteractivityStyleDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "internetAccessDescriptors": { + "resourceName": "InternetAccessDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "internetAccessTypeInResidenceDescriptors": { + "resourceName": "InternetAccessTypeInResidenceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "internetPerformanceInResidenceDescriptors": { + "resourceName": "InternetPerformanceInResidenceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "interventionClassDescriptors": { + "resourceName": "InterventionClassDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "interventionEffectivenessRatingDescriptors": { + "resourceName": "InterventionEffectivenessRatingDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "languageDescriptors": { + "resourceName": "LanguageDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "languageInstructionProgramServiceDescriptors": { + "resourceName": "LanguageInstructionProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "languageUseDescriptors": { + "resourceName": "LanguageUseDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "learningStandardCategoryDescriptors": { + "resourceName": "LearningStandardCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "learningStandardEquivalenceStrengthDescriptors": { + "resourceName": "LearningStandardEquivalenceStrengthDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "learningStandardScopeDescriptors": { + "resourceName": "LearningStandardScopeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "levelOfEducationDescriptors": { + "resourceName": "LevelOfEducationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "licenseStatusDescriptors": { + "resourceName": "LicenseStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "licenseTypeDescriptors": { + "resourceName": "LicenseTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "limitedEnglishProficiencyDescriptors": { + "resourceName": "LimitedEnglishProficiencyDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "localeDescriptors": { + "resourceName": "LocaleDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "localEducationAgencyCategoryDescriptors": { + "resourceName": "LocalEducationAgencyCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "magnetSpecialProgramEmphasisSchoolDescriptors": { + "resourceName": "MagnetSpecialProgramEmphasisSchoolDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "mediumOfInstructionDescriptors": { + "resourceName": "MediumOfInstructionDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "methodCreditEarnedDescriptors": { + "resourceName": "MethodCreditEarnedDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "migrantEducationProgramServiceDescriptors": { + "resourceName": "MigrantEducationProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "modelEntityDescriptors": { + "resourceName": "ModelEntityDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "monitoredDescriptors": { + "resourceName": "MonitoredDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "neglectedOrDelinquentProgramDescriptors": { + "resourceName": "NeglectedOrDelinquentProgramDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "neglectedOrDelinquentProgramServiceDescriptors": { + "resourceName": "NeglectedOrDelinquentProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "networkPurposeDescriptors": { + "resourceName": "NetworkPurposeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "operationalStatusDescriptors": { + "resourceName": "OperationalStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "otherNameTypeDescriptors": { + "resourceName": "OtherNameTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "participationDescriptors": { + "resourceName": "ParticipationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "participationStatusDescriptors": { + "resourceName": "ParticipationStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "performanceBaseConversionDescriptors": { + "resourceName": "PerformanceBaseConversionDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "performanceLevelDescriptors": { + "resourceName": "PerformanceLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "personalInformationVerificationDescriptors": { + "resourceName": "PersonalInformationVerificationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "platformTypeDescriptors": { + "resourceName": "PlatformTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "populationServedDescriptors": { + "resourceName": "PopulationServedDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "postingResultDescriptors": { + "resourceName": "PostingResultDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "postSecondaryEventCategoryDescriptors": { + "resourceName": "PostSecondaryEventCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "postSecondaryInstitutionLevelDescriptors": { + "resourceName": "PostSecondaryInstitutionLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "primaryLearningDeviceAccessDescriptors": { + "resourceName": "PrimaryLearningDeviceAccessDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "primaryLearningDeviceAwayFromSchoolDescriptors": { + "resourceName": "PrimaryLearningDeviceAwayFromSchoolDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "primaryLearningDeviceProviderDescriptors": { + "resourceName": "PrimaryLearningDeviceProviderDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "proficiencyDescriptors": { + "resourceName": "ProficiencyDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "programAssignmentDescriptors": { + "resourceName": "ProgramAssignmentDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "programCharacteristicDescriptors": { + "resourceName": "ProgramCharacteristicDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "programSponsorDescriptors": { + "resourceName": "ProgramSponsorDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "programTypeDescriptors": { + "resourceName": "ProgramTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "progressDescriptors": { + "resourceName": "ProgressDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "progressLevelDescriptors": { + "resourceName": "ProgressLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "providerCategoryDescriptors": { + "resourceName": "ProviderCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "providerProfitabilityDescriptors": { + "resourceName": "ProviderProfitabilityDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "providerStatusDescriptors": { + "resourceName": "ProviderStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "publicationStatusDescriptors": { + "resourceName": "PublicationStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "questionFormDescriptors": { + "resourceName": "QuestionFormDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "raceDescriptors": { + "resourceName": "RaceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "reasonExitedDescriptors": { + "resourceName": "ReasonExitedDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "reasonNotTestedDescriptors": { + "resourceName": "ReasonNotTestedDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "recognitionTypeDescriptors": { + "resourceName": "RecognitionTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "relationDescriptors": { + "resourceName": "RelationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "repeatIdentifierDescriptors": { + "resourceName": "RepeatIdentifierDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "reporterDescriptionDescriptors": { + "resourceName": "ReporterDescriptionDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "reportingTagDescriptors": { + "resourceName": "ReportingTagDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "residencyStatusDescriptors": { + "resourceName": "ResidencyStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "responseIndicatorDescriptors": { + "resourceName": "ResponseIndicatorDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "responsibilityDescriptors": { + "resourceName": "ResponsibilityDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "restraintEventReasonDescriptors": { + "resourceName": "RestraintEventReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "resultDatatypeTypeDescriptors": { + "resourceName": "ResultDatatypeTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "retestIndicatorDescriptors": { + "resourceName": "RetestIndicatorDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "schoolCategoryDescriptors": { + "resourceName": "SchoolCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "schoolChoiceBasisDescriptors": { + "resourceName": "SchoolChoiceBasisDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "schoolChoiceImplementStatusDescriptors": { + "resourceName": "SchoolChoiceImplementStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "schoolFoodServiceProgramServiceDescriptors": { + "resourceName": "SchoolFoodServiceProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "schoolTypeDescriptors": { + "resourceName": "SchoolTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "sectionCharacteristicDescriptors": { + "resourceName": "SectionCharacteristicDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "separationDescriptors": { + "resourceName": "SeparationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "separationReasonDescriptors": { + "resourceName": "SeparationReasonDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "serviceDescriptors": { + "resourceName": "ServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "sexDescriptors": { + "resourceName": "SexDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "sourceSystemDescriptors": { + "resourceName": "SourceSystemDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "specialEducationProgramServiceDescriptors": { + "resourceName": "SpecialEducationProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "specialEducationSettingDescriptors": { + "resourceName": "SpecialEducationSettingDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "staffClassificationDescriptors": { + "resourceName": "StaffClassificationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "staffIdentificationSystemDescriptors": { + "resourceName": "StaffIdentificationSystemDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "staffLeaveEventCategoryDescriptors": { + "resourceName": "StaffLeaveEventCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "stateAbbreviationDescriptors": { + "resourceName": "StateAbbreviationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "studentCharacteristicDescriptors": { + "resourceName": "StudentCharacteristicDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "studentIdentificationSystemDescriptors": { + "resourceName": "StudentIdentificationSystemDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "studentParticipationCodeDescriptors": { + "resourceName": "StudentParticipationCodeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "submissionStatusDescriptors": { + "resourceName": "SubmissionStatusDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "surveyCategoryDescriptors": { + "resourceName": "SurveyCategoryDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "surveyLevelDescriptors": { + "resourceName": "SurveyLevelDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "teachingCredentialDescriptors": { + "resourceName": "TeachingCredentialDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "teachingCredentialBasisDescriptors": { + "resourceName": "TeachingCredentialBasisDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "technicalSkillsAssessmentDescriptors": { + "resourceName": "TechnicalSkillsAssessmentDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "telephoneNumberTypeDescriptors": { + "resourceName": "TelephoneNumberTypeDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "termDescriptors": { + "resourceName": "TermDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "titleIPartAParticipantDescriptors": { + "resourceName": "TitleIPartAParticipantDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "titleIPartAProgramServiceDescriptors": { + "resourceName": "TitleIPartAProgramServiceDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "titleIPartASchoolDesignationDescriptors": { + "resourceName": "TitleIPartASchoolDesignationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "tribalAffiliationDescriptors": { + "resourceName": "TribalAffiliationDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "visaDescriptors": { + "resourceName": "VisaDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "weaponDescriptors": { + "resourceName": "WeaponDescriptor", + "isDescriptor": true, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [ + "id", + "namespace", + "codeValue", + "shortDescription" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.Descriptor", + "description": "An Ed-Fi Descriptor", + "type": "object", + "properties": { + "namespace": { + "type": "string", + "description": "The descriptor namespace as a URI" + }, + "codeValue": { + "type": "string", + "description": "The descriptor code value" + }, + "shortDescription": { + "type": "string", + "description": "The descriptor short description" + }, + "description": { + "type": "string", + "description": "The descriptor description" + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [], + "documentPathsMapping": {}, + "identityPathOrder": [], + "isSubclass": false + }, + "communityOrganizations": { + "resourceName": "CommunityOrganization", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityOrganization", + "description": "This entity represents an administrative unit at the state level which exists primarily to operate local community providers.", + "type": "object", + "properties": { + "communityOrganizationId": { + "type": "integer", + "description": "The identifier assigned to a community organization." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "communityOrganizationId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityOrganization", + "description": "This entity represents an administrative unit at the state level which exists primarily to operate local community providers.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "communityOrganizationId": { + "type": "integer", + "description": "The identifier assigned to a community organization." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "communityOrganizationId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityOrganization", + "description": "This entity represents an administrative unit at the state level which exists primarily to operate local community providers.", + "type": "object", + "properties": { + "communityOrganizationId": { + "type": "integer", + "description": "The identifier assigned to a community organization." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CommunityOrganizationId" + ], + "documentPathsMapping": { + "CommunityOrganizationId": { + "paths": { + "communityOrganizationId": "$.communityOrganizationId" + }, + "pathOrder": [ + "communityOrganizationId" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "communityOrganizationId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "communityOrganizationId", + "subclassType": "domainEntity" + }, + "communityProviders": { + "resourceName": "CommunityProvider", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityProvider", + "description": "This entity represents an educational organization that includes staff and students who participate in classes and educational activity groups.", + "type": "object", + "properties": { + "communityProviderId": { + "type": "integer", + "description": "The identifier assigned to a community provider." + }, + "communityOrganizationReference": { + "type": "object", + "properties": { + "communityOrganizationId": { + "type": "integer", + "description": "The identifier assigned to a community organization." + } + }, + "additionalProperties": false, + "required": [ + "communityOrganizationId" + ] + }, + "providerProfitabilityDescriptor": { + "type": "string", + "description": "Indicates the profitability status of the provider." + }, + "providerStatusDescriptor": { + "type": "string", + "description": "Indicates the status of the provider." + }, + "providerCategoryDescriptor": { + "type": "string", + "description": "Indicates the category of the provider." + }, + "schoolIndicator": { + "type": "boolean", + "description": "An indication of whether the community provider is a school." + }, + "licenseExemptIndicator": { + "type": "boolean", + "description": "An indication of whether the provider is exempt from having a license." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "communityProviderId", + "providerStatusDescriptor", + "providerCategoryDescriptor", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityProvider", + "description": "This entity represents an educational organization that includes staff and students who participate in classes and educational activity groups.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "communityProviderId": { + "type": "integer", + "description": "The identifier assigned to a community provider." + }, + "communityOrganizationReference": { + "type": "object", + "properties": { + "communityOrganizationId": { + "type": "integer", + "description": "The identifier assigned to a community organization." + } + }, + "additionalProperties": false, + "required": [ + "communityOrganizationId" + ] + }, + "providerProfitabilityDescriptor": { + "type": "string", + "description": "Indicates the profitability status of the provider." + }, + "providerStatusDescriptor": { + "type": "string", + "description": "Indicates the status of the provider." + }, + "providerCategoryDescriptor": { + "type": "string", + "description": "Indicates the category of the provider." + }, + "schoolIndicator": { + "type": "boolean", + "description": "An indication of whether the community provider is a school." + }, + "licenseExemptIndicator": { + "type": "boolean", + "description": "An indication of whether the provider is exempt from having a license." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "communityProviderId", + "providerStatusDescriptor", + "providerCategoryDescriptor", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.CommunityProvider", + "description": "This entity represents an educational organization that includes staff and students who participate in classes and educational activity groups.", + "type": "object", + "properties": { + "communityProviderId": { + "type": "integer", + "description": "The identifier assigned to a community provider." + }, + "communityOrganizationReference": { + "type": "object", + "properties": { + "communityOrganizationId": { + "type": "integer", + "description": "The identifier assigned to a community organization." + } + }, + "additionalProperties": false, + "required": [ + "communityOrganizationId" + ] + }, + "providerProfitabilityDescriptor": { + "type": "string", + "description": "Indicates the profitability status of the provider." + }, + "providerStatusDescriptor": { + "type": "string", + "description": "Indicates the status of the provider." + }, + "providerCategoryDescriptor": { + "type": "string", + "description": "Indicates the category of the provider." + }, + "schoolIndicator": { + "type": "boolean", + "description": "An indication of whether the community provider is a school." + }, + "licenseExemptIndicator": { + "type": "boolean", + "description": "An indication of whether the provider is exempt from having a license." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "CommunityProviderId" + ], + "documentPathsMapping": { + "CommunityProviderId": { + "paths": { + "communityProviderId": "$.communityProviderId" + }, + "pathOrder": [ + "communityProviderId" + ], + "isReference": false + }, + "CommunityOrganization": { + "paths": { + "communityOrganizationId": "$.communityOrganizationReference.communityOrganizationId" + }, + "pathOrder": [ + "communityOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "CommunityOrganization" + }, + "ProviderProfitability": { + "paths": { + "providerProfitabilityDescriptor": "$.providerProfitabilityDescriptor" + }, + "pathOrder": [ + "providerProfitabilityDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProviderProfitabilityDescriptor" + }, + "ProviderStatus": { + "paths": { + "providerStatusDescriptor": "$.providerStatusDescriptor" + }, + "pathOrder": [ + "providerStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProviderStatusDescriptor" + }, + "ProviderCategory": { + "paths": { + "providerCategoryDescriptor": "$.providerCategoryDescriptor" + }, + "pathOrder": [ + "providerCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProviderCategoryDescriptor" + }, + "SchoolIndicator": { + "paths": { + "schoolIndicator": "$.schoolIndicator" + }, + "pathOrder": [ + "schoolIndicator" + ], + "isReference": false + }, + "LicenseExemptIndicator": { + "paths": { + "licenseExemptIndicator": "$.licenseExemptIndicator" + }, + "pathOrder": [ + "licenseExemptIndicator" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "communityProviderId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "communityProviderId", + "subclassType": "domainEntity" + }, + "educationOrganizationNetworks": { + "resourceName": "EducationOrganizationNetwork", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationNetwork", + "description": "This entity is a self-organized membership network of peer-level education organizations intended to provide shared services or collective procurement.", + "type": "object", + "properties": { + "educationOrganizationNetworkId": { + "type": "integer", + "description": "The identifier assigned to a network of education organizations." + }, + "networkPurposeDescriptor": { + "type": "string", + "description": "The purpose(s) of the network (e.g., shared services, collective procurement)." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationNetworkId", + "networkPurposeDescriptor", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationNetwork", + "description": "This entity is a self-organized membership network of peer-level education organizations intended to provide shared services or collective procurement.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationOrganizationNetworkId": { + "type": "integer", + "description": "The identifier assigned to a network of education organizations." + }, + "networkPurposeDescriptor": { + "type": "string", + "description": "The purpose(s) of the network (e.g., shared services, collective procurement)." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationOrganizationNetworkId", + "networkPurposeDescriptor", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationOrganizationNetwork", + "description": "This entity is a self-organized membership network of peer-level education organizations intended to provide shared services or collective procurement.", + "type": "object", + "properties": { + "educationOrganizationNetworkId": { + "type": "integer", + "description": "The identifier assigned to a network of education organizations." + }, + "networkPurposeDescriptor": { + "type": "string", + "description": "The purpose(s) of the network (e.g., shared services, collective procurement)." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationOrganizationNetworkId" + ], + "documentPathsMapping": { + "EducationOrganizationNetworkId": { + "paths": { + "educationOrganizationNetworkId": "$.educationOrganizationNetworkId" + }, + "pathOrder": [ + "educationOrganizationNetworkId" + ], + "isReference": false + }, + "NetworkPurpose": { + "paths": { + "networkPurposeDescriptor": "$.networkPurposeDescriptor" + }, + "pathOrder": [ + "networkPurposeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "NetworkPurposeDescriptor" + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationOrganizationNetworkId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "educationOrganizationNetworkId", + "subclassType": "domainEntity" + }, + "educationServiceCenters": { + "resourceName": "EducationServiceCenter", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationServiceCenter", + "description": "This entity represents a regional, multi-services public agency authorized by state law to develop, manage and provide services, programs, or other support options (e.g., construction, food services, and technology services) to LEAs.", + "type": "object", + "properties": { + "educationServiceCenterId": { + "type": "integer", + "description": "The identifier assigned to an education service center." + }, + "stateEducationAgencyReference": { + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "educationServiceCenterId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationServiceCenter", + "description": "This entity represents a regional, multi-services public agency authorized by state law to develop, manage and provide services, programs, or other support options (e.g., construction, food services, and technology services) to LEAs.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "educationServiceCenterId": { + "type": "integer", + "description": "The identifier assigned to an education service center." + }, + "stateEducationAgencyReference": { + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "educationServiceCenterId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.EducationServiceCenter", + "description": "This entity represents a regional, multi-services public agency authorized by state law to develop, manage and provide services, programs, or other support options (e.g., construction, food services, and technology services) to LEAs.", + "type": "object", + "properties": { + "educationServiceCenterId": { + "type": "integer", + "description": "The identifier assigned to an education service center." + }, + "stateEducationAgencyReference": { + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "EducationServiceCenterId" + ], + "documentPathsMapping": { + "EducationServiceCenterId": { + "paths": { + "educationServiceCenterId": "$.educationServiceCenterId" + }, + "pathOrder": [ + "educationServiceCenterId" + ], + "isReference": false + }, + "StateEducationAgency": { + "paths": { + "stateEducationAgencyId": "$.stateEducationAgencyReference.stateEducationAgencyId" + }, + "pathOrder": [ + "stateEducationAgencyId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StateEducationAgency" + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "educationServiceCenterId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "educationServiceCenterId", + "subclassType": "domainEntity" + }, + "localEducationAgencies": { + "resourceName": "LocalEducationAgency", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalEducationAgency", + "description": "This entity represents an administrative unit at the local level which exists primarily to operate schools or to contract for educational services. It includes school districts, charter schools, charter management organizations, or other local administrative organizations.", + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + }, + "localEducationAgencyCategoryDescriptor": { + "type": "string", + "description": "The category of local education agency/district." + }, + "charterStatusDescriptor": { + "type": "string", + "description": "A school or agency providing free public elementary or secondary education to eligible students under a specific charter granted by the state legislature or other appropriate authority and designated by such authority to be a charter school." + }, + "accountabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "gunFreeSchoolsActReportingStatusDescriptor": { + "type": "string", + "description": "An indication of whether the school or Local Education Agency (LEA) submitted a Gun-Free Schools Act (GFSA) of 1994 report to the state, as defined by Title 18, Section 921." + }, + "schoolChoiceImplementStatusDescriptor": { + "type": "string", + "description": "An indication of whether the LEA was able to implement the provisions for public school choice under Title I, Part A, Section 1116 of ESEA as amended." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "federalFunds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the federal funds are received." + }, + "innovativeDollarsSpent": { + "type": "number", + "description": "The total Title V, Part A funds expended by LEAs." + }, + "innovativeDollarsSpentStrategicPriorities": { + "type": "number", + "description": "The total amount of Title V, Part A funds expended by LEAs for the four strategic priorities." + }, + "innovativeProgramsFundsReceived": { + "type": "number", + "description": "The total Title V, Part A funds received by LEAs." + }, + "schoolImprovementAllocation": { + "type": "number", + "description": "The amount of Section 1003(a) and 1003(g) allocations to LEAs." + }, + "schoolImprovementReservedFundsPercentage": { + "type": "number", + "description": "An indication of the percentage of the Title I, Part A allocation that the SEA reserved in accordance with Section 1003(a) of ESEA and 200.100(a) of ED's regulations governing the reservation of funds for school improvement under Section 1003(a) of ESEA." + }, + "supplementalEducationalServicesFundsSpent": { + "type": "number", + "description": "The dollar amount spent on supplemental educational services during the school year under Title I, Part A, Section 1116 of ESEA as amended." + }, + "supplementalEducationalServicesPerPupilExpenditure": { + "type": "number", + "description": "The maximum dollar amount that may be spent per child for expenditures related to supplemental educational services under Title I of the ESEA." + }, + "stateAssessmentAdministrationFunding": { + "type": "number", + "description": "The percentage of funds used to administer assessments required by Section 1111(b) or to carry out other activities described in Section 6111 and other activities related to ensuring that the state's schools and LEAs are held accountable for results." + } + }, + "additionalProperties": false, + "required": [ + "fiscalYear" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "parentLocalEducationAgencyReference": { + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId" + ] + }, + "educationServiceCenterReference": { + "type": "object", + "properties": { + "educationServiceCenterId": { + "type": "integer", + "description": "The identifier assigned to an education service center." + } + }, + "additionalProperties": false, + "required": [ + "educationServiceCenterId" + ] + }, + "stateEducationAgencyReference": { + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId", + "localEducationAgencyCategoryDescriptor", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalEducationAgency", + "description": "This entity represents an administrative unit at the local level which exists primarily to operate schools or to contract for educational services. It includes school districts, charter schools, charter management organizations, or other local administrative organizations.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + }, + "localEducationAgencyCategoryDescriptor": { + "type": "string", + "description": "The category of local education agency/district." + }, + "charterStatusDescriptor": { + "type": "string", + "description": "A school or agency providing free public elementary or secondary education to eligible students under a specific charter granted by the state legislature or other appropriate authority and designated by such authority to be a charter school." + }, + "accountabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "gunFreeSchoolsActReportingStatusDescriptor": { + "type": "string", + "description": "An indication of whether the school or Local Education Agency (LEA) submitted a Gun-Free Schools Act (GFSA) of 1994 report to the state, as defined by Title 18, Section 921." + }, + "schoolChoiceImplementStatusDescriptor": { + "type": "string", + "description": "An indication of whether the LEA was able to implement the provisions for public school choice under Title I, Part A, Section 1116 of ESEA as amended." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "federalFunds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the federal funds are received." + }, + "innovativeDollarsSpent": { + "type": "number", + "description": "The total Title V, Part A funds expended by LEAs." + }, + "innovativeDollarsSpentStrategicPriorities": { + "type": "number", + "description": "The total amount of Title V, Part A funds expended by LEAs for the four strategic priorities." + }, + "innovativeProgramsFundsReceived": { + "type": "number", + "description": "The total Title V, Part A funds received by LEAs." + }, + "schoolImprovementAllocation": { + "type": "number", + "description": "The amount of Section 1003(a) and 1003(g) allocations to LEAs." + }, + "schoolImprovementReservedFundsPercentage": { + "type": "number", + "description": "An indication of the percentage of the Title I, Part A allocation that the SEA reserved in accordance with Section 1003(a) of ESEA and 200.100(a) of ED's regulations governing the reservation of funds for school improvement under Section 1003(a) of ESEA." + }, + "supplementalEducationalServicesFundsSpent": { + "type": "number", + "description": "The dollar amount spent on supplemental educational services during the school year under Title I, Part A, Section 1116 of ESEA as amended." + }, + "supplementalEducationalServicesPerPupilExpenditure": { + "type": "number", + "description": "The maximum dollar amount that may be spent per child for expenditures related to supplemental educational services under Title I of the ESEA." + }, + "stateAssessmentAdministrationFunding": { + "type": "number", + "description": "The percentage of funds used to administer assessments required by Section 1111(b) or to carry out other activities described in Section 6111 and other activities related to ensuring that the state's schools and LEAs are held accountable for results." + } + }, + "additionalProperties": false, + "required": [ + "fiscalYear" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "parentLocalEducationAgencyReference": { + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId" + ] + }, + "educationServiceCenterReference": { + "type": "object", + "properties": { + "educationServiceCenterId": { + "type": "integer", + "description": "The identifier assigned to an education service center." + } + }, + "additionalProperties": false, + "required": [ + "educationServiceCenterId" + ] + }, + "stateEducationAgencyReference": { + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "localEducationAgencyId", + "localEducationAgencyCategoryDescriptor", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.LocalEducationAgency", + "description": "This entity represents an administrative unit at the local level which exists primarily to operate schools or to contract for educational services. It includes school districts, charter schools, charter management organizations, or other local administrative organizations.", + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + }, + "localEducationAgencyCategoryDescriptor": { + "type": "string", + "description": "The category of local education agency/district." + }, + "charterStatusDescriptor": { + "type": "string", + "description": "A school or agency providing free public elementary or secondary education to eligible students under a specific charter granted by the state legislature or other appropriate authority and designated by such authority to be a charter school." + }, + "accountabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "gunFreeSchoolsActReportingStatusDescriptor": { + "type": "string", + "description": "An indication of whether the school or Local Education Agency (LEA) submitted a Gun-Free Schools Act (GFSA) of 1994 report to the state, as defined by Title 18, Section 921." + }, + "schoolChoiceImplementStatusDescriptor": { + "type": "string", + "description": "An indication of whether the LEA was able to implement the provisions for public school choice under Title I, Part A, Section 1116 of ESEA as amended." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "federalFunds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the federal funds are received." + }, + "innovativeDollarsSpent": { + "type": "number", + "description": "The total Title V, Part A funds expended by LEAs." + }, + "innovativeDollarsSpentStrategicPriorities": { + "type": "number", + "description": "The total amount of Title V, Part A funds expended by LEAs for the four strategic priorities." + }, + "innovativeProgramsFundsReceived": { + "type": "number", + "description": "The total Title V, Part A funds received by LEAs." + }, + "schoolImprovementAllocation": { + "type": "number", + "description": "The amount of Section 1003(a) and 1003(g) allocations to LEAs." + }, + "schoolImprovementReservedFundsPercentage": { + "type": "number", + "description": "An indication of the percentage of the Title I, Part A allocation that the SEA reserved in accordance with Section 1003(a) of ESEA and 200.100(a) of ED's regulations governing the reservation of funds for school improvement under Section 1003(a) of ESEA." + }, + "supplementalEducationalServicesFundsSpent": { + "type": "number", + "description": "The dollar amount spent on supplemental educational services during the school year under Title I, Part A, Section 1116 of ESEA as amended." + }, + "supplementalEducationalServicesPerPupilExpenditure": { + "type": "number", + "description": "The maximum dollar amount that may be spent per child for expenditures related to supplemental educational services under Title I of the ESEA." + }, + "stateAssessmentAdministrationFunding": { + "type": "number", + "description": "The percentage of funds used to administer assessments required by Section 1111(b) or to carry out other activities described in Section 6111 and other activities related to ensuring that the state's schools and LEAs are held accountable for results." + } + }, + "additionalProperties": false, + "required": [ + "fiscalYear" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "parentLocalEducationAgencyReference": { + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId" + ] + }, + "educationServiceCenterReference": { + "type": "object", + "properties": { + "educationServiceCenterId": { + "type": "integer", + "description": "The identifier assigned to an education service center." + } + }, + "additionalProperties": false, + "required": [ + "educationServiceCenterId" + ] + }, + "stateEducationAgencyReference": { + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "LocalEducationAgencyId" + ], + "documentPathsMapping": { + "LocalEducationAgencyId": { + "paths": { + "localEducationAgencyId": "$.localEducationAgencyId" + }, + "pathOrder": [ + "localEducationAgencyId" + ], + "isReference": false + }, + "LocalEducationAgencyCategory": { + "paths": { + "localEducationAgencyCategoryDescriptor": "$.localEducationAgencyCategoryDescriptor" + }, + "pathOrder": [ + "localEducationAgencyCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocalEducationAgencyCategoryDescriptor" + }, + "CharterStatus": { + "paths": { + "charterStatusDescriptor": "$.charterStatusDescriptor" + }, + "pathOrder": [ + "charterStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CharterStatusDescriptor" + }, + "LocalEducationAgencyAccountability.SchoolYear": { + "paths": { + "schoolYear": "$.accountabilities[*].schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "LocalEducationAgencyAccountability.GunFreeSchoolsActReportingStatus": { + "paths": { + "gunFreeSchoolsActReportingStatusDescriptor": "$.accountabilities[*].gunFreeSchoolsActReportingStatusDescriptor" + }, + "pathOrder": [ + "gunFreeSchoolsActReportingStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GunFreeSchoolsActReportingStatusDescriptor" + }, + "LocalEducationAgencyAccountability.SchoolChoiceImplementStatus": { + "paths": { + "schoolChoiceImplementStatusDescriptor": "$.accountabilities[*].schoolChoiceImplementStatusDescriptor" + }, + "pathOrder": [ + "schoolChoiceImplementStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SchoolChoiceImplementStatusDescriptor" + }, + "LocalEducationAgencyFederalFunds.FiscalYear": { + "paths": { + "fiscalYear": "$.federalFunds[*].fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.InnovativeDollarsSpent": { + "paths": { + "innovativeDollarsSpent": "$.federalFunds[*].innovativeDollarsSpent" + }, + "pathOrder": [ + "innovativeDollarsSpent" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.InnovativeDollarsSpentStrategicPriorities": { + "paths": { + "innovativeDollarsSpentStrategicPriorities": "$.federalFunds[*].innovativeDollarsSpentStrategicPriorities" + }, + "pathOrder": [ + "innovativeDollarsSpentStrategicPriorities" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.InnovativeProgramsFundsReceived": { + "paths": { + "innovativeProgramsFundsReceived": "$.federalFunds[*].innovativeProgramsFundsReceived" + }, + "pathOrder": [ + "innovativeProgramsFundsReceived" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.SchoolImprovementAllocation": { + "paths": { + "schoolImprovementAllocation": "$.federalFunds[*].schoolImprovementAllocation" + }, + "pathOrder": [ + "schoolImprovementAllocation" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.SchoolImprovementReservedFundsPercentage": { + "paths": { + "schoolImprovementReservedFundsPercentage": "$.federalFunds[*].schoolImprovementReservedFundsPercentage" + }, + "pathOrder": [ + "schoolImprovementReservedFundsPercentage" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.SupplementalEducationalServicesFundsSpent": { + "paths": { + "supplementalEducationalServicesFundsSpent": "$.federalFunds[*].supplementalEducationalServicesFundsSpent" + }, + "pathOrder": [ + "supplementalEducationalServicesFundsSpent" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.SupplementalEducationalServicesPerPupilExpenditure": { + "paths": { + "supplementalEducationalServicesPerPupilExpenditure": "$.federalFunds[*].supplementalEducationalServicesPerPupilExpenditure" + }, + "pathOrder": [ + "supplementalEducationalServicesPerPupilExpenditure" + ], + "isReference": false + }, + "LocalEducationAgencyFederalFunds.StateAssessmentAdministrationFunding": { + "paths": { + "stateAssessmentAdministrationFunding": "$.federalFunds[*].stateAssessmentAdministrationFunding" + }, + "pathOrder": [ + "stateAssessmentAdministrationFunding" + ], + "isReference": false + }, + "ParentLocalEducationAgency": { + "paths": { + "localEducationAgencyId": "$.parentLocalEducationAgencyReference.localEducationAgencyId" + }, + "pathOrder": [ + "localEducationAgencyId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalEducationAgency" + }, + "EducationServiceCenter": { + "paths": { + "educationServiceCenterId": "$.educationServiceCenterReference.educationServiceCenterId" + }, + "pathOrder": [ + "educationServiceCenterId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationServiceCenter" + }, + "StateEducationAgency": { + "paths": { + "stateEducationAgencyId": "$.stateEducationAgencyReference.stateEducationAgencyId" + }, + "pathOrder": [ + "stateEducationAgencyId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "StateEducationAgency" + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "localEducationAgencyId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "localEducationAgencyId", + "subclassType": "domainEntity" + }, + "organizationDepartments": { + "resourceName": "OrganizationDepartment", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OrganizationDepartment", + "description": "An organizational unit of another education organization, often devoted to a particular academic discipline, area of study, or organization function.", + "type": "object", + "properties": { + "organizationDepartmentId": { + "type": "integer", + "description": "The unique identification code for the organization department." + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the department." + }, + "parentEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "organizationDepartmentId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OrganizationDepartment", + "description": "An organizational unit of another education organization, often devoted to a particular academic discipline, area of study, or organization function.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "organizationDepartmentId": { + "type": "integer", + "description": "The unique identification code for the organization department." + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the department." + }, + "parentEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "organizationDepartmentId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.OrganizationDepartment", + "description": "An organizational unit of another education organization, often devoted to a particular academic discipline, area of study, or organization function.", + "type": "object", + "properties": { + "organizationDepartmentId": { + "type": "integer", + "description": "The unique identification code for the organization department." + }, + "academicSubjectDescriptor": { + "type": "string", + "description": "The intended major subject area of the department." + }, + "parentEducationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "OrganizationDepartmentId" + ], + "documentPathsMapping": { + "OrganizationDepartmentId": { + "paths": { + "organizationDepartmentId": "$.organizationDepartmentId" + }, + "pathOrder": [ + "organizationDepartmentId" + ], + "isReference": false + }, + "AcademicSubject": { + "paths": { + "academicSubjectDescriptor": "$.academicSubjectDescriptor" + }, + "pathOrder": [ + "academicSubjectDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AcademicSubjectDescriptor" + }, + "ParentEducationOrganization": { + "paths": { + "educationOrganizationId": "$.parentEducationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "organizationDepartmentId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "organizationDepartmentId", + "subclassType": "domainEntity" + }, + "postSecondaryInstitutions": { + "resourceName": "PostSecondaryInstitution", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.PostSecondaryInstitution", + "description": "An organization that provides educational programs for individuals who have completed or otherwise left educational programs in secondary school(s).", + "type": "object", + "properties": { + "postSecondaryInstitutionId": { + "type": "integer", + "description": "The ID of the post secondary institution." + }, + "mediumOfInstructions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediumOfInstructionDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "mediumOfInstructionDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "postSecondaryInstitutionLevelDescriptor": { + "type": "string", + "description": "A classification of whether a post secondary institution's highest level of offering is a program of 4-years or higher (4 year), 2-but-less-than 4-years (2 year), or less than 2-years." + }, + "administrativeFundingControlDescriptor": { + "type": "string", + "description": "A classification of whether a postsecondary institution is operated by publicly elected or appointed officials (public control) or by privately elected or appointed officials and derives its major source of funds from private sources (private control)." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "postSecondaryInstitutionId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.PostSecondaryInstitution", + "description": "An organization that provides educational programs for individuals who have completed or otherwise left educational programs in secondary school(s).", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "postSecondaryInstitutionId": { + "type": "integer", + "description": "The ID of the post secondary institution." + }, + "mediumOfInstructions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediumOfInstructionDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "mediumOfInstructionDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "postSecondaryInstitutionLevelDescriptor": { + "type": "string", + "description": "A classification of whether a post secondary institution's highest level of offering is a program of 4-years or higher (4 year), 2-but-less-than 4-years (2 year), or less than 2-years." + }, + "administrativeFundingControlDescriptor": { + "type": "string", + "description": "A classification of whether a postsecondary institution is operated by publicly elected or appointed officials (public control) or by privately elected or appointed officials and derives its major source of funds from private sources (private control)." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "postSecondaryInstitutionId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.PostSecondaryInstitution", + "description": "An organization that provides educational programs for individuals who have completed or otherwise left educational programs in secondary school(s).", + "type": "object", + "properties": { + "postSecondaryInstitutionId": { + "type": "integer", + "description": "The ID of the post secondary institution." + }, + "mediumOfInstructions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediumOfInstructionDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "mediumOfInstructionDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "postSecondaryInstitutionLevelDescriptor": { + "type": "string", + "description": "A classification of whether a post secondary institution's highest level of offering is a program of 4-years or higher (4 year), 2-but-less-than 4-years (2 year), or less than 2-years." + }, + "administrativeFundingControlDescriptor": { + "type": "string", + "description": "A classification of whether a postsecondary institution is operated by publicly elected or appointed officials (public control) or by privately elected or appointed officials and derives its major source of funds from private sources (private control)." + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "PostSecondaryInstitutionId" + ], + "documentPathsMapping": { + "PostSecondaryInstitutionId": { + "paths": { + "postSecondaryInstitutionId": "$.postSecondaryInstitutionId" + }, + "pathOrder": [ + "postSecondaryInstitutionId" + ], + "isReference": false + }, + "MediumOfInstruction": { + "paths": { + "mediumOfInstructionDescriptor": "$.mediumOfInstructions[*].mediumOfInstructionDescriptor" + }, + "pathOrder": [ + "mediumOfInstructionDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MediumOfInstructionDescriptor" + }, + "PostSecondaryInstitutionLevel": { + "paths": { + "postSecondaryInstitutionLevelDescriptor": "$.postSecondaryInstitutionLevelDescriptor" + }, + "pathOrder": [ + "postSecondaryInstitutionLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "PostSecondaryInstitutionLevelDescriptor" + }, + "AdministrativeFundingControl": { + "paths": { + "administrativeFundingControlDescriptor": "$.administrativeFundingControlDescriptor" + }, + "pathOrder": [ + "administrativeFundingControlDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AdministrativeFundingControlDescriptor" + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "postSecondaryInstitutionId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "postSecondaryInstitutionId", + "subclassType": "domainEntity" + }, + "schools": { + "resourceName": "School", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.School", + "description": "This entity represents an educational organization that includes staff and students who participate in classes and educational activity groups.", + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "schoolCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "schoolCategoryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolTypeDescriptor": { + "type": "string", + "description": "The type of education institution as classified by its primary focus." + }, + "charterStatusDescriptor": { + "type": "string", + "description": "A school or agency providing free public elementary or secondary education to eligible students under a specific charter granted by the state legislature or other appropriate authority and designated by such authority to be a charter school." + }, + "titleIPartASchoolDesignationDescriptor": { + "type": "string", + "description": "Denotes the Title I Part A designation for the school." + }, + "magnetSpecialProgramEmphasisSchoolDescriptor": { + "type": "string", + "description": "A school that has been designed: 1) to attract students of different racial/ethnic backgrounds for the purpose of reducing, preventing, or eliminating racial isolation; and/or 2) to provide an academic or social focus on a particular theme (e.g., science/math, performing arts, gifted/talented, or foreign language)." + }, + "administrativeFundingControlDescriptor": { + "type": "string", + "description": "The type of education institution as classified by its funding source, for example public or private." + }, + "internetAccessDescriptor": { + "type": "string", + "description": "The type of Internet access available." + }, + "localEducationAgencyReference": { + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId" + ] + }, + "charterApprovalAgencyTypeDescriptor": { + "type": "string", + "description": "The type of agency that approved the establishment or continuation of a charter school." + }, + "charterApprovalSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "educationOrganizationCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "schoolId", + "gradeLevels", + "nameOfInstitution", + "educationOrganizationCategories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.School", + "description": "This entity represents an educational organization that includes staff and students who participate in classes and educational activity groups.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "schoolCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "schoolCategoryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolTypeDescriptor": { + "type": "string", + "description": "The type of education institution as classified by its primary focus." + }, + "charterStatusDescriptor": { + "type": "string", + "description": "A school or agency providing free public elementary or secondary education to eligible students under a specific charter granted by the state legislature or other appropriate authority and designated by such authority to be a charter school." + }, + "titleIPartASchoolDesignationDescriptor": { + "type": "string", + "description": "Denotes the Title I Part A designation for the school." + }, + "magnetSpecialProgramEmphasisSchoolDescriptor": { + "type": "string", + "description": "A school that has been designed: 1) to attract students of different racial/ethnic backgrounds for the purpose of reducing, preventing, or eliminating racial isolation; and/or 2) to provide an academic or social focus on a particular theme (e.g., science/math, performing arts, gifted/talented, or foreign language)." + }, + "administrativeFundingControlDescriptor": { + "type": "string", + "description": "The type of education institution as classified by its funding source, for example public or private." + }, + "internetAccessDescriptor": { + "type": "string", + "description": "The type of Internet access available." + }, + "localEducationAgencyReference": { + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId" + ] + }, + "charterApprovalAgencyTypeDescriptor": { + "type": "string", + "description": "The type of agency that approved the establishment or continuation of a charter school." + }, + "charterApprovalSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "educationOrganizationCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "schoolId", + "gradeLevels", + "nameOfInstitution", + "educationOrganizationCategories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.School", + "description": "This entity represents an educational organization that includes staff and students who participate in classes and educational activity groups.", + "type": "object", + "properties": { + "schoolId": { + "type": "integer", + "description": "The identifier assigned to a school." + }, + "gradeLevels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "gradeLevelDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "gradeLevelDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "schoolCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "schoolCategoryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "schoolTypeDescriptor": { + "type": "string", + "description": "The type of education institution as classified by its primary focus." + }, + "charterStatusDescriptor": { + "type": "string", + "description": "A school or agency providing free public elementary or secondary education to eligible students under a specific charter granted by the state legislature or other appropriate authority and designated by such authority to be a charter school." + }, + "titleIPartASchoolDesignationDescriptor": { + "type": "string", + "description": "Denotes the Title I Part A designation for the school." + }, + "magnetSpecialProgramEmphasisSchoolDescriptor": { + "type": "string", + "description": "A school that has been designed: 1) to attract students of different racial/ethnic backgrounds for the purpose of reducing, preventing, or eliminating racial isolation; and/or 2) to provide an academic or social focus on a particular theme (e.g., science/math, performing arts, gifted/talented, or foreign language)." + }, + "administrativeFundingControlDescriptor": { + "type": "string", + "description": "The type of education institution as classified by its funding source, for example public or private." + }, + "internetAccessDescriptor": { + "type": "string", + "description": "The type of Internet access available." + }, + "localEducationAgencyReference": { + "type": "object", + "properties": { + "localEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a local education agency." + } + }, + "additionalProperties": false, + "required": [ + "localEducationAgencyId" + ] + }, + "charterApprovalAgencyTypeDescriptor": { + "type": "string", + "description": "The type of agency that approved the establishment or continuation of a charter school." + }, + "charterApprovalSchoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "educationOrganizationCategories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "SchoolId" + ], + "documentPathsMapping": { + "SchoolId": { + "paths": { + "schoolId": "$.schoolId" + }, + "pathOrder": [ + "schoolId" + ], + "isReference": false + }, + "GradeLevel": { + "paths": { + "gradeLevelDescriptor": "$.gradeLevels[*].gradeLevelDescriptor" + }, + "pathOrder": [ + "gradeLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "GradeLevelDescriptor" + }, + "SchoolCategory": { + "paths": { + "schoolCategoryDescriptor": "$.schoolCategories[*].schoolCategoryDescriptor" + }, + "pathOrder": [ + "schoolCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SchoolCategoryDescriptor" + }, + "SchoolType": { + "paths": { + "schoolTypeDescriptor": "$.schoolTypeDescriptor" + }, + "pathOrder": [ + "schoolTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SchoolTypeDescriptor" + }, + "CharterStatus": { + "paths": { + "charterStatusDescriptor": "$.charterStatusDescriptor" + }, + "pathOrder": [ + "charterStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CharterStatusDescriptor" + }, + "TitleIPartASchoolDesignation": { + "paths": { + "titleIPartASchoolDesignationDescriptor": "$.titleIPartASchoolDesignationDescriptor" + }, + "pathOrder": [ + "titleIPartASchoolDesignationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TitleIPartASchoolDesignationDescriptor" + }, + "MagnetSpecialProgramEmphasisSchool": { + "paths": { + "magnetSpecialProgramEmphasisSchoolDescriptor": "$.magnetSpecialProgramEmphasisSchoolDescriptor" + }, + "pathOrder": [ + "magnetSpecialProgramEmphasisSchoolDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MagnetSpecialProgramEmphasisSchoolDescriptor" + }, + "AdministrativeFundingControl": { + "paths": { + "administrativeFundingControlDescriptor": "$.administrativeFundingControlDescriptor" + }, + "pathOrder": [ + "administrativeFundingControlDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AdministrativeFundingControlDescriptor" + }, + "InternetAccess": { + "paths": { + "internetAccessDescriptor": "$.internetAccessDescriptor" + }, + "pathOrder": [ + "internetAccessDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InternetAccessDescriptor" + }, + "LocalEducationAgency": { + "paths": { + "localEducationAgencyId": "$.localEducationAgencyReference.localEducationAgencyId" + }, + "pathOrder": [ + "localEducationAgencyId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "LocalEducationAgency" + }, + "CharterApprovalAgencyType": { + "paths": { + "charterApprovalAgencyTypeDescriptor": "$.charterApprovalAgencyTypeDescriptor" + }, + "pathOrder": [ + "charterApprovalAgencyTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CharterApprovalAgencyTypeDescriptor" + }, + "CharterApprovalSchoolYear": { + "paths": { + "schoolYear": "$.charterApprovalSchoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.educationOrganizationCategories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "schoolId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "schoolId", + "subclassType": "domainEntity" + }, + "stateEducationAgencies": { + "resourceName": "StateEducationAgency", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StateEducationAgency", + "description": "This entity represents the agency of the state charged with the primary responsibility for coordinating and supervising public instruction, including the setting of standards for elementary and secondary instructional programs.", + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + }, + "accountabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "cteGraduationRateInclusion": { + "type": "boolean", + "description": "An indication of whether CTE concentrators are included in the state's computation of its graduation rate." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "federalFunds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the federal funds are received." + }, + "federalProgramsFundingAllocation": { + "type": "number", + "description": "The amount of federal dollars distributed to Local Education Agencies (LEAs), retained by the State Education Agency (SEA) for program administration or other approved state-level activities (including unallocated, transferred to another state agency, or distributed to entities other than LEAs)." + } + }, + "additionalProperties": false, + "required": [ + "fiscalYear" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "stateEducationAgencyId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StateEducationAgency", + "description": "This entity represents the agency of the state charged with the primary responsibility for coordinating and supervising public instruction, including the setting of standards for elementary and secondary instructional programs.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + }, + "accountabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "cteGraduationRateInclusion": { + "type": "boolean", + "description": "An indication of whether CTE concentrators are included in the state's computation of its graduation rate." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "federalFunds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the federal funds are received." + }, + "federalProgramsFundingAllocation": { + "type": "number", + "description": "The amount of federal dollars distributed to Local Education Agencies (LEAs), retained by the State Education Agency (SEA) for program administration or other approved state-level activities (including unallocated, transferred to another state agency, or distributed to entities other than LEAs)." + } + }, + "additionalProperties": false, + "required": [ + "fiscalYear" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "stateEducationAgencyId", + "nameOfInstitution", + "categories" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StateEducationAgency", + "description": "This entity represents the agency of the state charged with the primary responsibility for coordinating and supervising public instruction, including the setting of standards for elementary and secondary instructional programs.", + "type": "object", + "properties": { + "stateEducationAgencyId": { + "type": "integer", + "description": "The identifier assigned to a state education agency." + }, + "accountabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "cteGraduationRateInclusion": { + "type": "boolean", + "description": "An indication of whether CTE concentrators are included in the state's computation of its graduation rate." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "federalFunds": { + "type": "array", + "items": { + "type": "object", + "properties": { + "fiscalYear": { + "type": "integer", + "description": "The fiscal year for which the federal funds are received." + }, + "federalProgramsFundingAllocation": { + "type": "number", + "description": "The amount of federal dollars distributed to Local Education Agencies (LEAs), retained by the State Education Agency (SEA) for program administration or other approved state-level activities (including unallocated, transferred to another state agency, or distributed to entities other than LEAs)." + } + }, + "additionalProperties": false, + "required": [ + "fiscalYear" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "identificationCodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "identificationCode": { + "type": "string", + "description": "A unique number or alphanumeric code that is assigned to an education organization by a school, school system, state, or other agency or entity.", + "minLength": 1, + "maxLength": 60 + }, + "educationOrganizationIdentificationSystemDescriptor": { + "type": "string", + "description": "The school system, state, or agency assigning the identification code." + } + }, + "additionalProperties": false, + "required": [ + "identificationCode", + "educationOrganizationIdentificationSystemDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "nameOfInstitution": { + "type": "string", + "description": "The full, legally accepted name of the institution.", + "minLength": 1, + "maxLength": 75 + }, + "shortNameOfInstitution": { + "type": "string", + "description": "A short name for the institution.", + "minLength": 1, + "maxLength": 75 + }, + "categories": { + "type": "array", + "items": { + "type": "object", + "properties": { + "educationOrganizationCategoryDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationCategoryDescriptor" + ] + }, + "minItems": 1, + "uniqueItems": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "streetNumberName": { + "type": "string", + "description": "The street number and street name or post office box number of an address.", + "minLength": 1, + "maxLength": 150 + }, + "apartmentRoomSuiteNumber": { + "type": "string", + "description": "The apartment, room, or suite number of an address.", + "minLength": 1, + "maxLength": 50 + }, + "buildingSiteNumber": { + "type": "string", + "description": "The number of the building on the site, if more than one building shares the same address.", + "minLength": 1, + "maxLength": 20 + }, + "city": { + "type": "string", + "description": "The name of the city in which an address is located.", + "minLength": 2, + "maxLength": 30 + }, + "stateAbbreviationDescriptor": { + "type": "string", + "description": "The abbreviation for the state (within the United States) or outlying area in which an address is located." + }, + "postalCode": { + "type": "string", + "description": "The five or nine digit zip code or overseas postal code portion of an address.", + "minLength": 1, + "maxLength": 17 + }, + "nameOfCounty": { + "type": "string", + "description": "The name of the county, parish, borough, or comparable unit (within a state) in 'which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "countyFIPSCode": { + "type": "string", + "description": "The Federal Information Processing Standards (FIPS) numeric code for the county issued by the National Institute of Standards and Technology (NIST). Counties are considered to be the \"first-order subdivisions\" of each State and statistically equivalent entity, regardless of their local designations (county, parish, borough, etc.) Counties in different States will have the same code. A unique county number is created when combined with the 2-digit FIPS State Code.", + "minLength": 3, + "maxLength": 5 + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "doNotPublishIndicator": { + "type": "boolean", + "description": "An indication that the address should not be published." + }, + "congressionalDistrict": { + "type": "string", + "description": "The congressional district in which an address is located.", + "minLength": 1, + "maxLength": 30 + }, + "localeDescriptor": { + "type": "string", + "description": "A general geographic indicator that categorizes U.S. territory (e.g., City, Suburban)." + } + }, + "additionalProperties": false, + "required": [ + "streetNumberName", + "city", + "stateAbbreviationDescriptor", + "postalCode", + "addressTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "internationalAddresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "addressTypeDescriptor": { + "type": "string", + "description": "The type of address listed for an individual or organization. For example: Physical Address, Mailing Address, Home Address, etc.)" + }, + "addressLine1": { + "type": "string", + "description": "The first line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine2": { + "type": "string", + "description": "The second line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine3": { + "type": "string", + "description": "The third line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "addressLine4": { + "type": "string", + "description": "The fourth line of the address.", + "minLength": 1, + "maxLength": 150 + }, + "countryDescriptor": { + "type": "string", + "description": "The name of the country. It is strongly recommended that entries use only ISO 3166 2-letter country codes." + }, + "latitude": { + "type": "string", + "description": "The geographic latitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "longitude": { + "type": "string", + "description": "The geographic longitude of the physical address.", + "minLength": 1, + "maxLength": 20 + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The first date the address is valid. For physical addresses, the date the individual moved to that address." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The last date the address is valid. For physical addresses, the date the individual moved from that address." + } + }, + "additionalProperties": false, + "required": [ + "addressTypeDescriptor", + "addressLine1", + "countryDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "institutionTelephones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "telephoneNumber": { + "type": "string", + "description": "The telephone number including the area code, and extension, if applicable.", + "minLength": 1, + "maxLength": 24 + }, + "institutionTelephoneNumberTypeDescriptor": { + "type": "string", + "description": "The type of communication number listed for an individual or organization." + } + }, + "additionalProperties": false, + "required": [ + "telephoneNumber", + "institutionTelephoneNumberTypeDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "webSite": { + "type": "string", + "description": "The public web site address (URL) for the education organization.", + "minLength": 5, + "maxLength": 255 + }, + "operationalStatusDescriptor": { + "type": "string", + "description": "The current operational status of the education organization (e.g., active, inactive)." + }, + "indicators": { + "type": "array", + "items": { + "type": "object", + "properties": { + "indicatorDescriptor": { + "type": "string", + "description": "The name or code for the indicator or metric." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that defined the metric.", + "minLength": 1, + "maxLength": 60 + }, + "indicatorValue": { + "type": "string", + "description": "The value of the indicator or metric. The semantics of an empty value is \"not submitted.\"", + "minLength": 1, + "maxLength": 60 + }, + "indicatorLevelDescriptor": { + "type": "string", + "description": "The value of the indicator or metric, as a value from a controlled vocabulary. The semantics of an empty value is \"not submitted.\"" + }, + "indicatorGroupDescriptor": { + "type": "string", + "description": "The name for a group of indicators." + }, + "periods": { + "type": "array", + "items": { + "type": "object", + "properties": { + "beginDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the start of the period." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year for the end of the period." + } + }, + "additionalProperties": false, + "required": [ + "beginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "indicatorDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "StateEducationAgencyId" + ], + "documentPathsMapping": { + "StateEducationAgencyId": { + "paths": { + "stateEducationAgencyId": "$.stateEducationAgencyId" + }, + "pathOrder": [ + "stateEducationAgencyId" + ], + "isReference": false + }, + "StateEducationAgencyAccountability.SchoolYear": { + "paths": { + "schoolYear": "$.accountabilities[*].schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "StateEducationAgencyAccountability.CTEGraduationRateInclusion": { + "paths": { + "cteGraduationRateInclusion": "$.accountabilities[*].cteGraduationRateInclusion" + }, + "pathOrder": [ + "cteGraduationRateInclusion" + ], + "isReference": false + }, + "StateEducationAgencyFederalFunds.FiscalYear": { + "paths": { + "fiscalYear": "$.federalFunds[*].fiscalYear" + }, + "pathOrder": [ + "fiscalYear" + ], + "isReference": false + }, + "StateEducationAgencyFederalFunds.FederalProgramsFundingAllocation": { + "paths": { + "federalProgramsFundingAllocation": "$.federalFunds[*].federalProgramsFundingAllocation" + }, + "pathOrder": [ + "federalProgramsFundingAllocation" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.IdentificationCode": { + "paths": { + "identificationCode": "$.identificationCodes[*].identificationCode" + }, + "pathOrder": [ + "identificationCode" + ], + "isReference": false + }, + "EducationOrganizationIdentificationCode.EducationOrganizationIdentificationSystem": { + "paths": { + "educationOrganizationIdentificationSystemDescriptor": "$.identificationCodes[*].educationOrganizationIdentificationSystemDescriptor" + }, + "pathOrder": [ + "educationOrganizationIdentificationSystemDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationIdentificationSystemDescriptor" + }, + "NameOfInstitution": { + "paths": { + "nameOfInstitution": "$.nameOfInstitution" + }, + "pathOrder": [ + "nameOfInstitution" + ], + "isReference": false + }, + "ShortNameOfInstitution": { + "paths": { + "shortNameOfInstitution": "$.shortNameOfInstitution" + }, + "pathOrder": [ + "shortNameOfInstitution" + ], + "isReference": false + }, + "EducationOrganizationCategory": { + "paths": { + "educationOrganizationCategoryDescriptor": "$.categories[*].educationOrganizationCategoryDescriptor" + }, + "pathOrder": [ + "educationOrganizationCategoryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "EducationOrganizationCategoryDescriptor" + }, + "Address.StreetNumberName": { + "paths": { + "streetNumberName": "$.addresses[*].streetNumberName" + }, + "pathOrder": [ + "streetNumberName" + ], + "isReference": false + }, + "Address.ApartmentRoomSuiteNumber": { + "paths": { + "apartmentRoomSuiteNumber": "$.addresses[*].apartmentRoomSuiteNumber" + }, + "pathOrder": [ + "apartmentRoomSuiteNumber" + ], + "isReference": false + }, + "Address.BuildingSiteNumber": { + "paths": { + "buildingSiteNumber": "$.addresses[*].buildingSiteNumber" + }, + "pathOrder": [ + "buildingSiteNumber" + ], + "isReference": false + }, + "Address.City": { + "paths": { + "city": "$.addresses[*].city" + }, + "pathOrder": [ + "city" + ], + "isReference": false + }, + "Address.StateAbbreviation": { + "paths": { + "stateAbbreviationDescriptor": "$.addresses[*].stateAbbreviationDescriptor" + }, + "pathOrder": [ + "stateAbbreviationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "StateAbbreviationDescriptor" + }, + "Address.PostalCode": { + "paths": { + "postalCode": "$.addresses[*].postalCode" + }, + "pathOrder": [ + "postalCode" + ], + "isReference": false + }, + "Address.NameOfCounty": { + "paths": { + "nameOfCounty": "$.addresses[*].nameOfCounty" + }, + "pathOrder": [ + "nameOfCounty" + ], + "isReference": false + }, + "Address.CountyFIPSCode": { + "paths": { + "countyFIPSCode": "$.addresses[*].countyFIPSCode" + }, + "pathOrder": [ + "countyFIPSCode" + ], + "isReference": false + }, + "Address.Latitude": { + "paths": { + "latitude": "$.addresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "Address.Longitude": { + "paths": { + "longitude": "$.addresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "Address.Period.BeginDate": { + "paths": { + "beginDate": "$.addresses[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "Address.Period.EndDate": { + "paths": { + "endDate": "$.addresses[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "Address.AddressType": { + "paths": { + "addressTypeDescriptor": "$.addresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "Address.DoNotPublishIndicator": { + "paths": { + "doNotPublishIndicator": "$.addresses[*].doNotPublishIndicator" + }, + "pathOrder": [ + "doNotPublishIndicator" + ], + "isReference": false + }, + "Address.CongressionalDistrict": { + "paths": { + "congressionalDistrict": "$.addresses[*].congressionalDistrict" + }, + "pathOrder": [ + "congressionalDistrict" + ], + "isReference": false + }, + "Address.Locale": { + "paths": { + "localeDescriptor": "$.addresses[*].localeDescriptor" + }, + "pathOrder": [ + "localeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LocaleDescriptor" + }, + "InternationalAddress.AddressType": { + "paths": { + "addressTypeDescriptor": "$.internationalAddresses[*].addressTypeDescriptor" + }, + "pathOrder": [ + "addressTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "AddressTypeDescriptor" + }, + "InternationalAddress.AddressLine1": { + "paths": { + "addressLine1": "$.internationalAddresses[*].addressLine1" + }, + "pathOrder": [ + "addressLine1" + ], + "isReference": false + }, + "InternationalAddress.AddressLine2": { + "paths": { + "addressLine2": "$.internationalAddresses[*].addressLine2" + }, + "pathOrder": [ + "addressLine2" + ], + "isReference": false + }, + "InternationalAddress.AddressLine3": { + "paths": { + "addressLine3": "$.internationalAddresses[*].addressLine3" + }, + "pathOrder": [ + "addressLine3" + ], + "isReference": false + }, + "InternationalAddress.AddressLine4": { + "paths": { + "addressLine4": "$.internationalAddresses[*].addressLine4" + }, + "pathOrder": [ + "addressLine4" + ], + "isReference": false + }, + "InternationalAddress.Country": { + "paths": { + "countryDescriptor": "$.internationalAddresses[*].countryDescriptor" + }, + "pathOrder": [ + "countryDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CountryDescriptor" + }, + "InternationalAddress.Latitude": { + "paths": { + "latitude": "$.internationalAddresses[*].latitude" + }, + "pathOrder": [ + "latitude" + ], + "isReference": false + }, + "InternationalAddress.Longitude": { + "paths": { + "longitude": "$.internationalAddresses[*].longitude" + }, + "pathOrder": [ + "longitude" + ], + "isReference": false + }, + "InternationalAddress.BeginDate": { + "paths": { + "beginDate": "$.internationalAddresses[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "InternationalAddress.EndDate": { + "paths": { + "endDate": "$.internationalAddresses[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "InstitutionTelephone.TelephoneNumber": { + "paths": { + "telephoneNumber": "$.institutionTelephones[*].telephoneNumber" + }, + "pathOrder": [ + "telephoneNumber" + ], + "isReference": false + }, + "InstitutionTelephone.InstitutionTelephoneNumberType": { + "paths": { + "institutionTelephoneNumberTypeDescriptor": "$.institutionTelephones[*].institutionTelephoneNumberTypeDescriptor" + }, + "pathOrder": [ + "institutionTelephoneNumberTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "InstitutionTelephoneNumberTypeDescriptor" + }, + "WebSite": { + "paths": { + "webSite": "$.webSite" + }, + "pathOrder": [ + "webSite" + ], + "isReference": false + }, + "OperationalStatus": { + "paths": { + "operationalStatusDescriptor": "$.operationalStatusDescriptor" + }, + "pathOrder": [ + "operationalStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "OperationalStatusDescriptor" + }, + "EducationOrganizationIndicator.Indicator": { + "paths": { + "indicatorDescriptor": "$.indicators[*].indicatorDescriptor" + }, + "pathOrder": [ + "indicatorDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorDescriptor" + }, + "EducationOrganizationIndicator.DesignatedBy": { + "paths": { + "designatedBy": "$.indicators[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorValue": { + "paths": { + "indicatorValue": "$.indicators[*].indicatorValue" + }, + "pathOrder": [ + "indicatorValue" + ], + "isReference": false + }, + "EducationOrganizationIndicator.IndicatorLevel": { + "paths": { + "indicatorLevelDescriptor": "$.indicators[*].indicatorLevelDescriptor" + }, + "pathOrder": [ + "indicatorLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorLevelDescriptor" + }, + "EducationOrganizationIndicator.IndicatorGroup": { + "paths": { + "indicatorGroupDescriptor": "$.indicators[*].indicatorGroupDescriptor" + }, + "pathOrder": [ + "indicatorGroupDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "IndicatorGroupDescriptor" + }, + "EducationOrganizationIndicator.Period.BeginDate": { + "paths": { + "beginDate": "$.indicators[*].periods[*].beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EducationOrganizationIndicator.Period.EndDate": { + "paths": { + "endDate": "$.indicators[*].periods[*].endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "stateEducationAgencyId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "EducationOrganization", + "superclassIdentityDocumentKey": "educationOrganizationId", + "subclassIdentityDocumentKey": "stateEducationAgencyId", + "subclassType": "domainEntity" + }, + "studentCTEProgramAssociations": { + "resourceName": "StudentCTEProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCTEProgramAssociation", + "description": "This association represents the career and technical education (CTE) program that a student participates in. The association is an extension of the StudentProgramAssociation particular for CTE programs.", + "type": "object", + "properties": { + "nonTraditionalGenderStatus": { + "type": "boolean", + "description": "Indicator that student is from a gender group that comprises less than 25% of the individuals employed in an occupation or field of work." + }, + "privateCTEProgram": { + "type": "boolean", + "description": "Indicator that student participated in career and technical education at private agencies or institutions that are reported by the state for purposes of the Elementary and Secondary Education Act (ESEA). Students in private institutions which do not receive Perkins funding are reported only in the state file." + }, + "technicalSkillsAssessmentDescriptor": { + "type": "string", + "description": "Results of technical skills assessment aligned with industry recognized standards." + }, + "cteProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "cteProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the CTE program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + }, + "cipCode": { + "type": "string", + "description": "Number and description of the CIP code associated with the student's CTE program.", + "minLength": 1, + "maxLength": 120 + } + }, + "additionalProperties": false, + "required": [ + "cteProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCTEProgramAssociation", + "description": "This association represents the career and technical education (CTE) program that a student participates in. The association is an extension of the StudentProgramAssociation particular for CTE programs.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "nonTraditionalGenderStatus": { + "type": "boolean", + "description": "Indicator that student is from a gender group that comprises less than 25% of the individuals employed in an occupation or field of work." + }, + "privateCTEProgram": { + "type": "boolean", + "description": "Indicator that student participated in career and technical education at private agencies or institutions that are reported by the state for purposes of the Elementary and Secondary Education Act (ESEA). Students in private institutions which do not receive Perkins funding are reported only in the state file." + }, + "technicalSkillsAssessmentDescriptor": { + "type": "string", + "description": "Results of technical skills assessment aligned with industry recognized standards." + }, + "cteProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "cteProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the CTE program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + }, + "cipCode": { + "type": "string", + "description": "Number and description of the CIP code associated with the student's CTE program.", + "minLength": 1, + "maxLength": 120 + } + }, + "additionalProperties": false, + "required": [ + "cteProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentCTEProgramAssociation", + "description": "This association represents the career and technical education (CTE) program that a student participates in. The association is an extension of the StudentProgramAssociation particular for CTE programs.", + "type": "object", + "properties": { + "nonTraditionalGenderStatus": { + "type": "boolean", + "description": "Indicator that student is from a gender group that comprises less than 25% of the individuals employed in an occupation or field of work." + }, + "privateCTEProgram": { + "type": "boolean", + "description": "Indicator that student participated in career and technical education at private agencies or institutions that are reported by the state for purposes of the Elementary and Secondary Education Act (ESEA). Students in private institutions which do not receive Perkins funding are reported only in the state file." + }, + "technicalSkillsAssessmentDescriptor": { + "type": "string", + "description": "Results of technical skills assessment aligned with industry recognized standards." + }, + "cteProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "cteProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the CTE program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + }, + "cipCode": { + "type": "string", + "description": "Number and description of the CIP code associated with the student's CTE program.", + "minLength": 1, + "maxLength": 120 + } + }, + "additionalProperties": false, + "required": [ + "cteProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "NonTraditionalGenderStatus": { + "paths": { + "nonTraditionalGenderStatus": "$.nonTraditionalGenderStatus" + }, + "pathOrder": [ + "nonTraditionalGenderStatus" + ], + "isReference": false + }, + "PrivateCTEProgram": { + "paths": { + "privateCTEProgram": "$.privateCTEProgram" + }, + "pathOrder": [ + "privateCTEProgram" + ], + "isReference": false + }, + "TechnicalSkillsAssessment": { + "paths": { + "technicalSkillsAssessmentDescriptor": "$.technicalSkillsAssessmentDescriptor" + }, + "pathOrder": [ + "technicalSkillsAssessmentDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TechnicalSkillsAssessmentDescriptor" + }, + "CTEProgramService.CTEProgramService": { + "paths": { + "cteProgramServiceDescriptor": "$.cteProgramServices[*].cteProgramServiceDescriptor" + }, + "pathOrder": [ + "cteProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "CTEProgramServiceDescriptor" + }, + "CTEProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.cteProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "CTEProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.cteProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "CTEProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.cteProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "CTEProgramService.CIPCode": { + "paths": { + "cipCode": "$.cteProgramServices[*].cipCode" + }, + "pathOrder": [ + "cipCode" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentHomelessProgramAssociations": { + "resourceName": "StudentHomelessProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentHomelessProgramAssociation", + "description": "This association represents the McKinney-Vento Homeless Program program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "homelessPrimaryNighttimeResidenceDescriptor": { + "type": "string", + "description": "The primary nighttime residence of the student at the time the student is identified as homeless." + }, + "awaitingFosterCare": { + "type": "boolean", + "description": "State defined definition for awaiting foster care." + }, + "homelessUnaccompaniedYouth": { + "type": "boolean", + "description": "A homeless unaccompanied youth is a youth who is not in the physical custody of a parent or guardian and who fits the McKinney-Vento definition of homeless. Students must be both unaccompanied and homeless to be included as an unaccompanied homeless youth." + }, + "homelessProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "homelessProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the homeless program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "homelessProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentHomelessProgramAssociation", + "description": "This association represents the McKinney-Vento Homeless Program program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "homelessPrimaryNighttimeResidenceDescriptor": { + "type": "string", + "description": "The primary nighttime residence of the student at the time the student is identified as homeless." + }, + "awaitingFosterCare": { + "type": "boolean", + "description": "State defined definition for awaiting foster care." + }, + "homelessUnaccompaniedYouth": { + "type": "boolean", + "description": "A homeless unaccompanied youth is a youth who is not in the physical custody of a parent or guardian and who fits the McKinney-Vento definition of homeless. Students must be both unaccompanied and homeless to be included as an unaccompanied homeless youth." + }, + "homelessProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "homelessProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the homeless program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "homelessProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentHomelessProgramAssociation", + "description": "This association represents the McKinney-Vento Homeless Program program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "homelessPrimaryNighttimeResidenceDescriptor": { + "type": "string", + "description": "The primary nighttime residence of the student at the time the student is identified as homeless." + }, + "awaitingFosterCare": { + "type": "boolean", + "description": "State defined definition for awaiting foster care." + }, + "homelessUnaccompaniedYouth": { + "type": "boolean", + "description": "A homeless unaccompanied youth is a youth who is not in the physical custody of a parent or guardian and who fits the McKinney-Vento definition of homeless. Students must be both unaccompanied and homeless to be included as an unaccompanied homeless youth." + }, + "homelessProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "homelessProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the homeless program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "homelessProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "HomelessPrimaryNighttimeResidence": { + "paths": { + "homelessPrimaryNighttimeResidenceDescriptor": "$.homelessPrimaryNighttimeResidenceDescriptor" + }, + "pathOrder": [ + "homelessPrimaryNighttimeResidenceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "HomelessPrimaryNighttimeResidenceDescriptor" + }, + "AwaitingFosterCare": { + "paths": { + "awaitingFosterCare": "$.awaitingFosterCare" + }, + "pathOrder": [ + "awaitingFosterCare" + ], + "isReference": false + }, + "HomelessUnaccompaniedYouth": { + "paths": { + "homelessUnaccompaniedYouth": "$.homelessUnaccompaniedYouth" + }, + "pathOrder": [ + "homelessUnaccompaniedYouth" + ], + "isReference": false + }, + "HomelessProgramService.HomelessProgramService": { + "paths": { + "homelessProgramServiceDescriptor": "$.homelessProgramServices[*].homelessProgramServiceDescriptor" + }, + "pathOrder": [ + "homelessProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "HomelessProgramServiceDescriptor" + }, + "HomelessProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.homelessProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "HomelessProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.homelessProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "HomelessProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.homelessProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentLanguageInstructionProgramAssociations": { + "resourceName": "StudentLanguageInstructionProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentLanguageInstructionProgramAssociation", + "description": "This association represents the Title III Language Instruction for Limited English Proficient and Immigrant Students program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "englishLanguageProficiencyAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "participationDescriptor": { + "type": "string", + "description": "Field indicating the participation in the yearly English language assessment." + }, + "proficiencyDescriptor": { + "type": "string", + "description": "The proficiency level for the yearly English language assessment." + }, + "progressDescriptor": { + "type": "string", + "description": "The yearly progress or growth from last year's assessment." + }, + "monitoredDescriptor": { + "type": "string", + "description": "Student is monitored on content achievement who are no longer receiving services." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "englishLearnerParticipation": { + "type": "boolean", + "description": "An indication that an English learner student is served by an English language instruction educational program supported with Title III of ESEA funds." + }, + "languageInstructionProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageInstructionProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the language instruction program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "languageInstructionProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "dosage": { + "type": "integer", + "description": "The duration of time in minutes for which the student was assigned to participate in the program." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentLanguageInstructionProgramAssociation", + "description": "This association represents the Title III Language Instruction for Limited English Proficient and Immigrant Students program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "englishLanguageProficiencyAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "participationDescriptor": { + "type": "string", + "description": "Field indicating the participation in the yearly English language assessment." + }, + "proficiencyDescriptor": { + "type": "string", + "description": "The proficiency level for the yearly English language assessment." + }, + "progressDescriptor": { + "type": "string", + "description": "The yearly progress or growth from last year's assessment." + }, + "monitoredDescriptor": { + "type": "string", + "description": "Student is monitored on content achievement who are no longer receiving services." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "englishLearnerParticipation": { + "type": "boolean", + "description": "An indication that an English learner student is served by an English language instruction educational program supported with Title III of ESEA funds." + }, + "languageInstructionProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageInstructionProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the language instruction program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "languageInstructionProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "dosage": { + "type": "integer", + "description": "The duration of time in minutes for which the student was assigned to participate in the program." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentLanguageInstructionProgramAssociation", + "description": "This association represents the Title III Language Instruction for Limited English Proficient and Immigrant Students program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "englishLanguageProficiencyAssessments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolYearTypeReference": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "EdFi.SchoolYearType", + "description": "A school year enumeration", + "type": "object", + "properties": { + "schoolYear": { + "type": "integer", + "description": "A school year between 1900 and 2100", + "minimum": 1900, + "maximum": 2100 + } + }, + "additionalProperties": false + }, + "participationDescriptor": { + "type": "string", + "description": "Field indicating the participation in the yearly English language assessment." + }, + "proficiencyDescriptor": { + "type": "string", + "description": "The proficiency level for the yearly English language assessment." + }, + "progressDescriptor": { + "type": "string", + "description": "The yearly progress or growth from last year's assessment." + }, + "monitoredDescriptor": { + "type": "string", + "description": "Student is monitored on content achievement who are no longer receiving services." + } + }, + "additionalProperties": false, + "required": [ + "schoolYearTypeReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "englishLearnerParticipation": { + "type": "boolean", + "description": "An indication that an English learner student is served by an English language instruction educational program supported with Title III of ESEA funds." + }, + "languageInstructionProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "languageInstructionProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the language instruction program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "languageInstructionProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "dosage": { + "type": "integer", + "description": "The duration of time in minutes for which the student was assigned to participate in the program." + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "EnglishLanguageProficiencyAssessment.SchoolYear": { + "paths": { + "schoolYear": "$.englishLanguageProficiencyAssessments[*].schoolYearTypeReference.schoolYear" + }, + "pathOrder": [ + "schoolYear" + ], + "isReference": false + }, + "EnglishLanguageProficiencyAssessment.Participation": { + "paths": { + "participationDescriptor": "$.englishLanguageProficiencyAssessments[*].participationDescriptor" + }, + "pathOrder": [ + "participationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationDescriptor" + }, + "EnglishLanguageProficiencyAssessment.Proficiency": { + "paths": { + "proficiencyDescriptor": "$.englishLanguageProficiencyAssessments[*].proficiencyDescriptor" + }, + "pathOrder": [ + "proficiencyDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProficiencyDescriptor" + }, + "EnglishLanguageProficiencyAssessment.Progress": { + "paths": { + "progressDescriptor": "$.englishLanguageProficiencyAssessments[*].progressDescriptor" + }, + "pathOrder": [ + "progressDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgressDescriptor" + }, + "EnglishLanguageProficiencyAssessment.Monitored": { + "paths": { + "monitoredDescriptor": "$.englishLanguageProficiencyAssessments[*].monitoredDescriptor" + }, + "pathOrder": [ + "monitoredDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MonitoredDescriptor" + }, + "EnglishLearnerParticipation": { + "paths": { + "englishLearnerParticipation": "$.englishLearnerParticipation" + }, + "pathOrder": [ + "englishLearnerParticipation" + ], + "isReference": false + }, + "LanguageInstructionProgramService.LanguageInstructionProgramService": { + "paths": { + "languageInstructionProgramServiceDescriptor": "$.languageInstructionProgramServices[*].languageInstructionProgramServiceDescriptor" + }, + "pathOrder": [ + "languageInstructionProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "LanguageInstructionProgramServiceDescriptor" + }, + "LanguageInstructionProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.languageInstructionProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "LanguageInstructionProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.languageInstructionProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "LanguageInstructionProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.languageInstructionProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Dosage": { + "paths": { + "dosage": "$.dosage" + }, + "pathOrder": [ + "dosage" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentMigrantEducationProgramAssociations": { + "resourceName": "StudentMigrantEducationProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentMigrantEducationProgramAssociation", + "description": "This association represents the migrant education program(s) that a student participates in or receives services from. The association is an extension of the StudentProgramAssociation with added elements particular to migrant education programs.", + "type": "object", + "properties": { + "priorityForServices": { + "type": "boolean", + "description": "Report migratory children who are classified as having \"priority for services\" because they are failing, or most at risk of failing to meet the state's challenging state academic content standards and challenging state student academic achievement standards, and their education has been interrupted during the regular school year." + }, + "lastQualifyingMove": { + "type": "string", + "format": "date", + "description": "Date the last qualifying move occurred; used to compute MEP status." + }, + "continuationOfServicesReasonDescriptor": { + "type": "string", + "description": "The \"continuation of services\" provision found in Section 1304(e) of the statute provides that (1) a child who ceases to be a migratory child during a school term shall be eligible for services until the end of such term; (2) a child who is no longer a migratory child may continue to receive services for one additional school year, but only if comparable services are not available through other programs; and (3) secondary school students who were eligible for services in secondary school may continue to be served through credit accrual programs until graduation. Only students who received services at any time during their 36 month eligibility period may continue to receive services (not necessarily the same service)." + }, + "usInitialEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student first entered the U.S." + }, + "usMostRecentEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the student's most recent entry into the U.S." + }, + "usInitialSchoolEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student first entered a U.S. school." + }, + "qualifyingArrivalDate": { + "type": "string", + "format": "date", + "description": "The qualifying arrival date (QAD) is the date the child joins the worker who has already moved, or the date when the worker joins the child who has already moved. The QAD is the date that the child's eligibility for the MEP begins. The QAD is not affected by subsequent non-qualifying moves." + }, + "stateResidencyDate": { + "type": "string", + "format": "date", + "description": "The verified state residency for the student." + }, + "eligibilityExpirationDate": { + "type": "string", + "format": "date", + "description": "The eligibility expiration date is used to determine end of eligibility and to account for a child's eligibility expiring earlier than 36 months from the child's QAD. A child's eligibility would end earlier than 36 months from the child's QAD, if the child is no longer entitled to a free public education (e.g., graduated with a high school diploma, obtained a high school equivalency diploma (HSED), or for other reasons as determined by states' requirements), or if the child passes away." + }, + "migrantEducationProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "migrantEducationProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the migrant education program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "migrantEducationProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "priorityForServices", + "lastQualifyingMove", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentMigrantEducationProgramAssociation", + "description": "This association represents the migrant education program(s) that a student participates in or receives services from. The association is an extension of the StudentProgramAssociation with added elements particular to migrant education programs.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "priorityForServices": { + "type": "boolean", + "description": "Report migratory children who are classified as having \"priority for services\" because they are failing, or most at risk of failing to meet the state's challenging state academic content standards and challenging state student academic achievement standards, and their education has been interrupted during the regular school year." + }, + "lastQualifyingMove": { + "type": "string", + "format": "date", + "description": "Date the last qualifying move occurred; used to compute MEP status." + }, + "continuationOfServicesReasonDescriptor": { + "type": "string", + "description": "The \"continuation of services\" provision found in Section 1304(e) of the statute provides that (1) a child who ceases to be a migratory child during a school term shall be eligible for services until the end of such term; (2) a child who is no longer a migratory child may continue to receive services for one additional school year, but only if comparable services are not available through other programs; and (3) secondary school students who were eligible for services in secondary school may continue to be served through credit accrual programs until graduation. Only students who received services at any time during their 36 month eligibility period may continue to receive services (not necessarily the same service)." + }, + "usInitialEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student first entered the U.S." + }, + "usMostRecentEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the student's most recent entry into the U.S." + }, + "usInitialSchoolEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student first entered a U.S. school." + }, + "qualifyingArrivalDate": { + "type": "string", + "format": "date", + "description": "The qualifying arrival date (QAD) is the date the child joins the worker who has already moved, or the date when the worker joins the child who has already moved. The QAD is the date that the child's eligibility for the MEP begins. The QAD is not affected by subsequent non-qualifying moves." + }, + "stateResidencyDate": { + "type": "string", + "format": "date", + "description": "The verified state residency for the student." + }, + "eligibilityExpirationDate": { + "type": "string", + "format": "date", + "description": "The eligibility expiration date is used to determine end of eligibility and to account for a child's eligibility expiring earlier than 36 months from the child's QAD. A child's eligibility would end earlier than 36 months from the child's QAD, if the child is no longer entitled to a free public education (e.g., graduated with a high school diploma, obtained a high school equivalency diploma (HSED), or for other reasons as determined by states' requirements), or if the child passes away." + }, + "migrantEducationProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "migrantEducationProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the migrant education program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "migrantEducationProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "priorityForServices", + "lastQualifyingMove", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentMigrantEducationProgramAssociation", + "description": "This association represents the migrant education program(s) that a student participates in or receives services from. The association is an extension of the StudentProgramAssociation with added elements particular to migrant education programs.", + "type": "object", + "properties": { + "priorityForServices": { + "type": "boolean", + "description": "Report migratory children who are classified as having \"priority for services\" because they are failing, or most at risk of failing to meet the state's challenging state academic content standards and challenging state student academic achievement standards, and their education has been interrupted during the regular school year." + }, + "lastQualifyingMove": { + "type": "string", + "format": "date", + "description": "Date the last qualifying move occurred; used to compute MEP status." + }, + "continuationOfServicesReasonDescriptor": { + "type": "string", + "description": "The \"continuation of services\" provision found in Section 1304(e) of the statute provides that (1) a child who ceases to be a migratory child during a school term shall be eligible for services until the end of such term; (2) a child who is no longer a migratory child may continue to receive services for one additional school year, but only if comparable services are not available through other programs; and (3) secondary school students who were eligible for services in secondary school may continue to be served through credit accrual programs until graduation. Only students who received services at any time during their 36 month eligibility period may continue to receive services (not necessarily the same service)." + }, + "usInitialEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student first entered the U.S." + }, + "usMostRecentEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year of the student's most recent entry into the U.S." + }, + "usInitialSchoolEntry": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student first entered a U.S. school." + }, + "qualifyingArrivalDate": { + "type": "string", + "format": "date", + "description": "The qualifying arrival date (QAD) is the date the child joins the worker who has already moved, or the date when the worker joins the child who has already moved. The QAD is the date that the child's eligibility for the MEP begins. The QAD is not affected by subsequent non-qualifying moves." + }, + "stateResidencyDate": { + "type": "string", + "format": "date", + "description": "The verified state residency for the student." + }, + "eligibilityExpirationDate": { + "type": "string", + "format": "date", + "description": "The eligibility expiration date is used to determine end of eligibility and to account for a child's eligibility expiring earlier than 36 months from the child's QAD. A child's eligibility would end earlier than 36 months from the child's QAD, if the child is no longer entitled to a free public education (e.g., graduated with a high school diploma, obtained a high school equivalency diploma (HSED), or for other reasons as determined by states' requirements), or if the child passes away." + }, + "migrantEducationProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "migrantEducationProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the migrant education program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "migrantEducationProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "PriorityForServices": { + "paths": { + "priorityForServices": "$.priorityForServices" + }, + "pathOrder": [ + "priorityForServices" + ], + "isReference": false + }, + "LastQualifyingMove": { + "paths": { + "lastQualifyingMove": "$.lastQualifyingMove" + }, + "pathOrder": [ + "lastQualifyingMove" + ], + "isReference": false + }, + "ContinuationOfServicesReason": { + "paths": { + "continuationOfServicesReasonDescriptor": "$.continuationOfServicesReasonDescriptor" + }, + "pathOrder": [ + "continuationOfServicesReasonDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ContinuationOfServicesReasonDescriptor" + }, + "USInitialEntry": { + "paths": { + "usInitialEntry": "$.usInitialEntry" + }, + "pathOrder": [ + "usInitialEntry" + ], + "isReference": false + }, + "USMostRecentEntry": { + "paths": { + "usMostRecentEntry": "$.usMostRecentEntry" + }, + "pathOrder": [ + "usMostRecentEntry" + ], + "isReference": false + }, + "USInitialSchoolEntry": { + "paths": { + "usInitialSchoolEntry": "$.usInitialSchoolEntry" + }, + "pathOrder": [ + "usInitialSchoolEntry" + ], + "isReference": false + }, + "QualifyingArrivalDate": { + "paths": { + "qualifyingArrivalDate": "$.qualifyingArrivalDate" + }, + "pathOrder": [ + "qualifyingArrivalDate" + ], + "isReference": false + }, + "StateResidencyDate": { + "paths": { + "stateResidencyDate": "$.stateResidencyDate" + }, + "pathOrder": [ + "stateResidencyDate" + ], + "isReference": false + }, + "EligibilityExpirationDate": { + "paths": { + "eligibilityExpirationDate": "$.eligibilityExpirationDate" + }, + "pathOrder": [ + "eligibilityExpirationDate" + ], + "isReference": false + }, + "MigrantEducationProgramService.MigrantEducationProgramService": { + "paths": { + "migrantEducationProgramServiceDescriptor": "$.migrantEducationProgramServices[*].migrantEducationProgramServiceDescriptor" + }, + "pathOrder": [ + "migrantEducationProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "MigrantEducationProgramServiceDescriptor" + }, + "MigrantEducationProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.migrantEducationProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "MigrantEducationProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.migrantEducationProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "MigrantEducationProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.migrantEducationProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentNeglectedOrDelinquentProgramAssociations": { + "resourceName": "StudentNeglectedOrDelinquentProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentNeglectedOrDelinquentProgramAssociation", + "description": "This association represents the Title I Part D Neglected or Delinquent program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "neglectedOrDelinquentProgramDescriptor": { + "type": "string", + "description": "The type of program under ESEA Title I, Part D, Subpart 1 (state programs) or Subpart 2 (LEA)." + }, + "elaProgressLevelDescriptor": { + "type": "string", + "description": "The progress measured from pre- to post- test for ELA." + }, + "mathematicsProgressLevelDescriptor": { + "type": "string", + "description": "The progress measured from pre- to post-test for Mathematics." + }, + "neglectedOrDelinquentProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "neglectedOrDelinquentProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the neglected or delinquent program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "neglectedOrDelinquentProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentNeglectedOrDelinquentProgramAssociation", + "description": "This association represents the Title I Part D Neglected or Delinquent program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "neglectedOrDelinquentProgramDescriptor": { + "type": "string", + "description": "The type of program under ESEA Title I, Part D, Subpart 1 (state programs) or Subpart 2 (LEA)." + }, + "elaProgressLevelDescriptor": { + "type": "string", + "description": "The progress measured from pre- to post- test for ELA." + }, + "mathematicsProgressLevelDescriptor": { + "type": "string", + "description": "The progress measured from pre- to post-test for Mathematics." + }, + "neglectedOrDelinquentProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "neglectedOrDelinquentProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the neglected or delinquent program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "neglectedOrDelinquentProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentNeglectedOrDelinquentProgramAssociation", + "description": "This association represents the Title I Part D Neglected or Delinquent program(s) that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "neglectedOrDelinquentProgramDescriptor": { + "type": "string", + "description": "The type of program under ESEA Title I, Part D, Subpart 1 (state programs) or Subpart 2 (LEA)." + }, + "elaProgressLevelDescriptor": { + "type": "string", + "description": "The progress measured from pre- to post- test for ELA." + }, + "mathematicsProgressLevelDescriptor": { + "type": "string", + "description": "The progress measured from pre- to post-test for Mathematics." + }, + "neglectedOrDelinquentProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "neglectedOrDelinquentProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the neglected or delinquent program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "neglectedOrDelinquentProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "NeglectedOrDelinquentProgram": { + "paths": { + "neglectedOrDelinquentProgramDescriptor": "$.neglectedOrDelinquentProgramDescriptor" + }, + "pathOrder": [ + "neglectedOrDelinquentProgramDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "NeglectedOrDelinquentProgramDescriptor" + }, + "ELAProgressLevel": { + "paths": { + "elaProgressLevelDescriptor": "$.elaProgressLevelDescriptor" + }, + "pathOrder": [ + "elaProgressLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgressLevelDescriptor" + }, + "MathematicsProgressLevel": { + "paths": { + "mathematicsProgressLevelDescriptor": "$.mathematicsProgressLevelDescriptor" + }, + "pathOrder": [ + "mathematicsProgressLevelDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ProgressLevelDescriptor" + }, + "NeglectedOrDelinquentProgramService.NeglectedOrDelinquentProgramService": { + "paths": { + "neglectedOrDelinquentProgramServiceDescriptor": "$.neglectedOrDelinquentProgramServices[*].neglectedOrDelinquentProgramServiceDescriptor" + }, + "pathOrder": [ + "neglectedOrDelinquentProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "NeglectedOrDelinquentProgramServiceDescriptor" + }, + "NeglectedOrDelinquentProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.neglectedOrDelinquentProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "NeglectedOrDelinquentProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.neglectedOrDelinquentProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "NeglectedOrDelinquentProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.neglectedOrDelinquentProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentProgramAssociations": { + "resourceName": "StudentProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentProgramAssociation", + "description": "This association represents the program(s) that a student participates in or is served by.", + "type": "object", + "properties": { + "services": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serviceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "serviceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentProgramAssociation", + "description": "This association represents the program(s) that a student participates in or is served by.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "services": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serviceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "serviceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentProgramAssociation", + "description": "This association represents the program(s) that a student participates in or is served by.", + "type": "object", + "properties": { + "services": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serviceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "serviceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "Service.Service": { + "paths": { + "serviceDescriptor": "$.services[*].serviceDescriptor" + }, + "pathOrder": [ + "serviceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ServiceDescriptor" + }, + "Service.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.services[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "Service.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.services[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "Service.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.services[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentSchoolFoodServiceProgramAssociations": { + "resourceName": "StudentSchoolFoodServiceProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolFoodServiceProgramAssociation", + "description": "This association represents the school food services program(s), such as the Free or Reduced Lunch program, that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "directCertification": { + "type": "boolean", + "description": "Indicates that the student's National School Lunch Program (NSLP) eligibility has been determined through direct certification." + }, + "schoolFoodServiceProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolFoodServiceProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the school food service program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "schoolFoodServiceProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolFoodServiceProgramAssociation", + "description": "This association represents the school food services program(s), such as the Free or Reduced Lunch program, that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "directCertification": { + "type": "boolean", + "description": "Indicates that the student's National School Lunch Program (NSLP) eligibility has been determined through direct certification." + }, + "schoolFoodServiceProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolFoodServiceProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the school food service program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "schoolFoodServiceProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSchoolFoodServiceProgramAssociation", + "description": "This association represents the school food services program(s), such as the Free or Reduced Lunch program, that a student participates in or from which the student receives services.", + "type": "object", + "properties": { + "directCertification": { + "type": "boolean", + "description": "Indicates that the student's National School Lunch Program (NSLP) eligibility has been determined through direct certification." + }, + "schoolFoodServiceProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "schoolFoodServiceProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the school food service program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "schoolFoodServiceProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "DirectCertification": { + "paths": { + "directCertification": "$.directCertification" + }, + "pathOrder": [ + "directCertification" + ], + "isReference": false + }, + "SchoolFoodServiceProgramService.SchoolFoodServiceProgramService": { + "paths": { + "schoolFoodServiceProgramServiceDescriptor": "$.schoolFoodServiceProgramServices[*].schoolFoodServiceProgramServiceDescriptor" + }, + "pathOrder": [ + "schoolFoodServiceProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SchoolFoodServiceProgramServiceDescriptor" + }, + "SchoolFoodServiceProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.schoolFoodServiceProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "SchoolFoodServiceProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.schoolFoodServiceProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "SchoolFoodServiceProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.schoolFoodServiceProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentSpecialEducationProgramAssociations": { + "resourceName": "StudentSpecialEducationProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSpecialEducationProgramAssociation", + "description": "This association represents the special education program(s) that a student participates in or receives services from. The association is an extension of the StudentProgramAssociation particular for special education programs.", + "type": "object", + "properties": { + "ideaEligibility": { + "type": "boolean", + "description": "Indicator of the eligibility of the student to receive special education services according to the Individuals with Disabilities Education Act (IDEA)." + }, + "specialEducationSettingDescriptor": { + "type": "string", + "description": "The major instructional setting (more than 50 percent of a student's special education program)." + }, + "serviceProviders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "primaryProvider": { + "type": "boolean", + "description": "Primary ServiceProvider." + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "specialEducationHoursPerWeek": { + "type": "number", + "description": "The number of hours per week for special education instruction and therapy." + }, + "schoolHoursPerWeek": { + "type": "number", + "description": "Indicate the total number of hours of instructional time per week for the school that the student attends." + }, + "multiplyDisabled": { + "type": "boolean", + "description": "Indicates whether the student receiving special education and related services has been designated as multiply disabled by the admission, review, and dismissal committee as aligned with federal requirements." + }, + "medicallyFragile": { + "type": "boolean", + "description": "Indicates whether the student receiving special education and related services is: 1) in the age range of birth to 22 years, and 2) has a serious, ongoing illness or a chronic condition that has lasted or is anticipated to last at least 12 or more months or has required at least one month of hospitalization, and that requires daily, ongoing medical treatments and monitoring by appropriately trained personnel which may include parents or other family members, and 3) requires the routine use of medical device or of assistive technology to compensate for the loss of usefulness of a body function needed to participate in activities of daily living, and 4) lives with ongoing threat to his or her continued well-being. Aligns with federal requirements." + }, + "lastEvaluationDate": { + "type": "string", + "format": "date", + "description": "The date of the last special education evaluation." + }, + "iepReviewDate": { + "type": "string", + "format": "date", + "description": "The date of the last IEP review." + }, + "iepBeginDate": { + "type": "string", + "format": "date", + "description": "The effective date of the most recent IEP." + }, + "iepEndDate": { + "type": "string", + "format": "date", + "description": "The end date of the most recent IEP." + }, + "disabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDescriptor": { + "type": "string", + "description": "A disability category that describes a individual's impairment." + }, + "disabilityDiagnosis": { + "type": "string", + "description": "A description of the disability diagnosis.", + "minLength": 1, + "maxLength": 80 + }, + "orderOfDisability": { + "type": "integer", + "description": "The order by severity of individual's disabilities: 1- Primary, 2 - Secondary, 3 - Tertiary, etc." + }, + "disabilityDeterminationSourceTypeDescriptor": { + "type": "string", + "description": "The source that provided the disability determination." + }, + "designations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDesignationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disabilityDesignationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "disabilityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "specialEducationProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "specialEducationProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the special education program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + }, + "providers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "primaryProvider": { + "type": "boolean", + "description": "Primary ServiceProvider." + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "specialEducationProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSpecialEducationProgramAssociation", + "description": "This association represents the special education program(s) that a student participates in or receives services from. The association is an extension of the StudentProgramAssociation particular for special education programs.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "ideaEligibility": { + "type": "boolean", + "description": "Indicator of the eligibility of the student to receive special education services according to the Individuals with Disabilities Education Act (IDEA)." + }, + "specialEducationSettingDescriptor": { + "type": "string", + "description": "The major instructional setting (more than 50 percent of a student's special education program)." + }, + "serviceProviders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "primaryProvider": { + "type": "boolean", + "description": "Primary ServiceProvider." + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "specialEducationHoursPerWeek": { + "type": "number", + "description": "The number of hours per week for special education instruction and therapy." + }, + "schoolHoursPerWeek": { + "type": "number", + "description": "Indicate the total number of hours of instructional time per week for the school that the student attends." + }, + "multiplyDisabled": { + "type": "boolean", + "description": "Indicates whether the student receiving special education and related services has been designated as multiply disabled by the admission, review, and dismissal committee as aligned with federal requirements." + }, + "medicallyFragile": { + "type": "boolean", + "description": "Indicates whether the student receiving special education and related services is: 1) in the age range of birth to 22 years, and 2) has a serious, ongoing illness or a chronic condition that has lasted or is anticipated to last at least 12 or more months or has required at least one month of hospitalization, and that requires daily, ongoing medical treatments and monitoring by appropriately trained personnel which may include parents or other family members, and 3) requires the routine use of medical device or of assistive technology to compensate for the loss of usefulness of a body function needed to participate in activities of daily living, and 4) lives with ongoing threat to his or her continued well-being. Aligns with federal requirements." + }, + "lastEvaluationDate": { + "type": "string", + "format": "date", + "description": "The date of the last special education evaluation." + }, + "iepReviewDate": { + "type": "string", + "format": "date", + "description": "The date of the last IEP review." + }, + "iepBeginDate": { + "type": "string", + "format": "date", + "description": "The effective date of the most recent IEP." + }, + "iepEndDate": { + "type": "string", + "format": "date", + "description": "The end date of the most recent IEP." + }, + "disabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDescriptor": { + "type": "string", + "description": "A disability category that describes a individual's impairment." + }, + "disabilityDiagnosis": { + "type": "string", + "description": "A description of the disability diagnosis.", + "minLength": 1, + "maxLength": 80 + }, + "orderOfDisability": { + "type": "integer", + "description": "The order by severity of individual's disabilities: 1- Primary, 2 - Secondary, 3 - Tertiary, etc." + }, + "disabilityDeterminationSourceTypeDescriptor": { + "type": "string", + "description": "The source that provided the disability determination." + }, + "designations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDesignationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disabilityDesignationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "disabilityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "specialEducationProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "specialEducationProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the special education program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + }, + "providers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "primaryProvider": { + "type": "boolean", + "description": "Primary ServiceProvider." + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "specialEducationProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentSpecialEducationProgramAssociation", + "description": "This association represents the special education program(s) that a student participates in or receives services from. The association is an extension of the StudentProgramAssociation particular for special education programs.", + "type": "object", + "properties": { + "ideaEligibility": { + "type": "boolean", + "description": "Indicator of the eligibility of the student to receive special education services according to the Individuals with Disabilities Education Act (IDEA)." + }, + "specialEducationSettingDescriptor": { + "type": "string", + "description": "The major instructional setting (more than 50 percent of a student's special education program)." + }, + "serviceProviders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "primaryProvider": { + "type": "boolean", + "description": "Primary ServiceProvider." + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "specialEducationHoursPerWeek": { + "type": "number", + "description": "The number of hours per week for special education instruction and therapy." + }, + "schoolHoursPerWeek": { + "type": "number", + "description": "Indicate the total number of hours of instructional time per week for the school that the student attends." + }, + "multiplyDisabled": { + "type": "boolean", + "description": "Indicates whether the student receiving special education and related services has been designated as multiply disabled by the admission, review, and dismissal committee as aligned with federal requirements." + }, + "medicallyFragile": { + "type": "boolean", + "description": "Indicates whether the student receiving special education and related services is: 1) in the age range of birth to 22 years, and 2) has a serious, ongoing illness or a chronic condition that has lasted or is anticipated to last at least 12 or more months or has required at least one month of hospitalization, and that requires daily, ongoing medical treatments and monitoring by appropriately trained personnel which may include parents or other family members, and 3) requires the routine use of medical device or of assistive technology to compensate for the loss of usefulness of a body function needed to participate in activities of daily living, and 4) lives with ongoing threat to his or her continued well-being. Aligns with federal requirements." + }, + "lastEvaluationDate": { + "type": "string", + "format": "date", + "description": "The date of the last special education evaluation." + }, + "iepReviewDate": { + "type": "string", + "format": "date", + "description": "The date of the last IEP review." + }, + "iepBeginDate": { + "type": "string", + "format": "date", + "description": "The effective date of the most recent IEP." + }, + "iepEndDate": { + "type": "string", + "format": "date", + "description": "The end date of the most recent IEP." + }, + "disabilities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDescriptor": { + "type": "string", + "description": "A disability category that describes a individual's impairment." + }, + "disabilityDiagnosis": { + "type": "string", + "description": "A description of the disability diagnosis.", + "minLength": 1, + "maxLength": 80 + }, + "orderOfDisability": { + "type": "integer", + "description": "The order by severity of individual's disabilities: 1- Primary, 2 - Secondary, 3 - Tertiary, etc." + }, + "disabilityDeterminationSourceTypeDescriptor": { + "type": "string", + "description": "The source that provided the disability determination." + }, + "designations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "disabilityDesignationDescriptor": { + "type": "string", + "description": "An Ed-Fi Descriptor" + } + }, + "additionalProperties": false, + "required": [ + "disabilityDesignationDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "disabilityDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "specialEducationProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "specialEducationProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the special education program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the student was in this option for the current school year." + }, + "providers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "staffReference": { + "type": "object", + "properties": { + "staffUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a staff.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "staffUniqueId" + ] + }, + "primaryProvider": { + "type": "boolean", + "description": "Primary ServiceProvider." + } + }, + "additionalProperties": false, + "required": [ + "staffReference" + ] + }, + "minItems": 0, + "uniqueItems": false + } + }, + "additionalProperties": false, + "required": [ + "specialEducationProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "IdeaEligibility": { + "paths": { + "ideaEligibility": "$.ideaEligibility" + }, + "pathOrder": [ + "ideaEligibility" + ], + "isReference": false + }, + "SpecialEducationSetting": { + "paths": { + "specialEducationSettingDescriptor": "$.specialEducationSettingDescriptor" + }, + "pathOrder": [ + "specialEducationSettingDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SpecialEducationSettingDescriptor" + }, + "ServiceProvider.Staff": { + "paths": { + "staffUniqueId": "$.serviceProviders[*].staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "ServiceProvider.PrimaryProvider": { + "paths": { + "primaryProvider": "$.serviceProviders[*].primaryProvider" + }, + "pathOrder": [ + "primaryProvider" + ], + "isReference": false + }, + "SpecialEducationHoursPerWeek": { + "paths": { + "specialEducationHoursPerWeek": "$.specialEducationHoursPerWeek" + }, + "pathOrder": [ + "specialEducationHoursPerWeek" + ], + "isReference": false + }, + "SchoolHoursPerWeek": { + "paths": { + "schoolHoursPerWeek": "$.schoolHoursPerWeek" + }, + "pathOrder": [ + "schoolHoursPerWeek" + ], + "isReference": false + }, + "MultiplyDisabled": { + "paths": { + "multiplyDisabled": "$.multiplyDisabled" + }, + "pathOrder": [ + "multiplyDisabled" + ], + "isReference": false + }, + "MedicallyFragile": { + "paths": { + "medicallyFragile": "$.medicallyFragile" + }, + "pathOrder": [ + "medicallyFragile" + ], + "isReference": false + }, + "LastEvaluationDate": { + "paths": { + "lastEvaluationDate": "$.lastEvaluationDate" + }, + "pathOrder": [ + "lastEvaluationDate" + ], + "isReference": false + }, + "IEPReviewDate": { + "paths": { + "iepReviewDate": "$.iepReviewDate" + }, + "pathOrder": [ + "iepReviewDate" + ], + "isReference": false + }, + "IEPBeginDate": { + "paths": { + "iepBeginDate": "$.iepBeginDate" + }, + "pathOrder": [ + "iepBeginDate" + ], + "isReference": false + }, + "IEPEndDate": { + "paths": { + "iepEndDate": "$.iepEndDate" + }, + "pathOrder": [ + "iepEndDate" + ], + "isReference": false + }, + "Disability.Disability": { + "paths": { + "disabilityDescriptor": "$.disabilities[*].disabilityDescriptor" + }, + "pathOrder": [ + "disabilityDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisabilityDescriptor" + }, + "Disability.DisabilityDiagnosis": { + "paths": { + "disabilityDiagnosis": "$.disabilities[*].disabilityDiagnosis" + }, + "pathOrder": [ + "disabilityDiagnosis" + ], + "isReference": false + }, + "Disability.OrderOfDisability": { + "paths": { + "orderOfDisability": "$.disabilities[*].orderOfDisability" + }, + "pathOrder": [ + "orderOfDisability" + ], + "isReference": false + }, + "Disability.DisabilityDeterminationSourceType": { + "paths": { + "disabilityDeterminationSourceTypeDescriptor": "$.disabilities[*].disabilityDeterminationSourceTypeDescriptor" + }, + "pathOrder": [ + "disabilityDeterminationSourceTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisabilityDeterminationSourceTypeDescriptor" + }, + "Disability.DisabilityDesignation": { + "paths": { + "disabilityDesignationDescriptor": "$.disabilities[*].designations[*].disabilityDesignationDescriptor" + }, + "pathOrder": [ + "disabilityDesignationDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "DisabilityDesignationDescriptor" + }, + "SpecialEducationProgramService.SpecialEducationProgramService": { + "paths": { + "specialEducationProgramServiceDescriptor": "$.specialEducationProgramServices[*].specialEducationProgramServiceDescriptor" + }, + "pathOrder": [ + "specialEducationProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "SpecialEducationProgramServiceDescriptor" + }, + "SpecialEducationProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.specialEducationProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "SpecialEducationProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.specialEducationProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "SpecialEducationProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.specialEducationProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "SpecialEducationProgramService.ServiceProvider.Staff": { + "paths": { + "staffUniqueId": "$.specialEducationProgramServices[*].providers[*].staffReference.staffUniqueId" + }, + "pathOrder": [ + "staffUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Staff" + }, + "SpecialEducationProgramService.ServiceProvider.PrimaryProvider": { + "paths": { + "primaryProvider": "$.specialEducationProgramServices[*].providers[*].primaryProvider" + }, + "pathOrder": [ + "primaryProvider" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + }, + "studentTitleIPartAProgramAssociations": { + "resourceName": "StudentTitleIPartAProgramAssociation", + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "allowIdentityUpdates": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentTitleIPartAProgramAssociation", + "description": "This association represents the Title I Part A program(s) that a student participates in or from which the student receives services. The association is an extension of the StudentProgramAssociation particular for Title I Part A programs.", + "type": "object", + "properties": { + "titleIPartAParticipantDescriptor": { + "type": "string", + "description": "An indication of the type of Title I program, if any, in which the student is participating and by which the student is served." + }, + "titleIPartAProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "titleIPartAProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the Title I Part A Program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the Student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the Student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "titleIPartAProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "titleIPartAParticipantDescriptor", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentTitleIPartAProgramAssociation", + "description": "This association represents the Title I Part A program(s) that a student participates in or from which the student receives services. The association is an extension of the StudentProgramAssociation particular for Title I Part A programs.", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The item id" + }, + "titleIPartAParticipantDescriptor": { + "type": "string", + "description": "An indication of the type of Title I program, if any, in which the student is participating and by which the student is served." + }, + "titleIPartAProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "titleIPartAProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the Title I Part A Program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the Student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the Student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "titleIPartAProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [ + "id", + "titleIPartAParticipantDescriptor", + "studentReference", + "programReference", + "beginDate", + "educationOrganizationReference" + ] + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Ed-Fi.StudentTitleIPartAProgramAssociation", + "description": "This association represents the Title I Part A program(s) that a student participates in or from which the student receives services. The association is an extension of the StudentProgramAssociation particular for Title I Part A programs.", + "type": "object", + "properties": { + "titleIPartAParticipantDescriptor": { + "type": "string", + "description": "An indication of the type of Title I program, if any, in which the student is participating and by which the student is served." + }, + "titleIPartAProgramServices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "titleIPartAProgramServiceDescriptor": { + "type": "string", + "description": "Indicates the service being provided to the student by the Title I Part A Program." + }, + "primaryIndicator": { + "type": "boolean", + "description": "True if service is a primary service." + }, + "serviceBeginDate": { + "type": "string", + "format": "date", + "description": "First date the Student was in this option for the current school year." + }, + "serviceEndDate": { + "type": "string", + "format": "date", + "description": "Last date the Student was in this option for the current school year." + } + }, + "additionalProperties": false, + "required": [ + "titleIPartAProgramServiceDescriptor" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "studentReference": { + "type": "object", + "properties": { + "studentUniqueId": { + "type": "string", + "description": "A unique alphanumeric code assigned to a student.", + "minLength": 1, + "maxLength": 32 + } + }, + "additionalProperties": false, + "required": [ + "studentUniqueId" + ] + }, + "programReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + }, + "programName": { + "type": "string", + "description": "The formal name of the program of instruction, training, services, or benefits available through federal, state, or local agencies.", + "minLength": 1, + "maxLength": 60 + }, + "programTypeDescriptor": { + "type": "string", + "description": "The type of program." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ] + }, + "beginDate": { + "type": "string", + "format": "date", + "description": "The earliest date the student is involved with the program. Typically, this is the date the student becomes eligible for the program." + }, + "endDate": { + "type": "string", + "format": "date", + "description": "The month, day, and year on which the student exited the program or stopped receiving services." + }, + "reasonExitedDescriptor": { + "type": "string", + "description": "The reason the student left the program within a school or district." + }, + "educationOrganizationReference": { + "type": "object", + "properties": { + "educationOrganizationId": { + "type": "integer", + "description": "The identifier assigned to an education organization." + } + }, + "additionalProperties": false, + "required": [ + "educationOrganizationId" + ] + }, + "servedOutsideOfRegularSession": { + "type": "boolean", + "description": "Indicates whether the student received services during the summer session or between sessions." + }, + "programParticipationStatuses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "participationStatusDescriptor": { + "type": "string", + "description": "The student's program participation status." + }, + "statusBeginDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status began." + }, + "statusEndDate": { + "type": "string", + "format": "date", + "description": "The date the student's program participation status ended." + }, + "designatedBy": { + "type": "string", + "description": "The person, organization, or department that designated the participation status.", + "minLength": 1, + "maxLength": 60 + } + }, + "additionalProperties": false, + "required": [ + "participationStatusDescriptor", + "statusBeginDate" + ] + }, + "minItems": 0, + "uniqueItems": false + }, + "_ext": { + "description": "optional extension collection", + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "additionalProperties": false, + "required": [] + }, + "equalityConstraints": [], + "identityFullnames": [ + "BeginDate", + "EducationOrganization", + "Program", + "Student" + ], + "documentPathsMapping": { + "TitleIPartAParticipant": { + "paths": { + "titleIPartAParticipantDescriptor": "$.titleIPartAParticipantDescriptor" + }, + "pathOrder": [ + "titleIPartAParticipantDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TitleIPartAParticipantDescriptor" + }, + "TitleIPartAProgramService.TitleIPartAProgramService": { + "paths": { + "titleIPartAProgramServiceDescriptor": "$.titleIPartAProgramServices[*].titleIPartAProgramServiceDescriptor" + }, + "pathOrder": [ + "titleIPartAProgramServiceDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "TitleIPartAProgramServiceDescriptor" + }, + "TitleIPartAProgramService.PrimaryIndicator": { + "paths": { + "primaryIndicator": "$.titleIPartAProgramServices[*].primaryIndicator" + }, + "pathOrder": [ + "primaryIndicator" + ], + "isReference": false + }, + "TitleIPartAProgramService.ServiceBeginDate": { + "paths": { + "serviceBeginDate": "$.titleIPartAProgramServices[*].serviceBeginDate" + }, + "pathOrder": [ + "serviceBeginDate" + ], + "isReference": false + }, + "TitleIPartAProgramService.ServiceEndDate": { + "paths": { + "serviceEndDate": "$.titleIPartAProgramServices[*].serviceEndDate" + }, + "pathOrder": [ + "serviceEndDate" + ], + "isReference": false + }, + "Student": { + "paths": { + "studentUniqueId": "$.studentReference.studentUniqueId" + }, + "pathOrder": [ + "studentUniqueId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Student" + }, + "Program": { + "paths": { + "educationOrganizationId": "$.programReference.educationOrganizationId", + "programName": "$.programReference.programName", + "programTypeDescriptor": "$.programReference.programTypeDescriptor" + }, + "pathOrder": [ + "educationOrganizationId", + "programName", + "programTypeDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "Program" + }, + "BeginDate": { + "paths": { + "beginDate": "$.beginDate" + }, + "pathOrder": [ + "beginDate" + ], + "isReference": false + }, + "EndDate": { + "paths": { + "endDate": "$.endDate" + }, + "pathOrder": [ + "endDate" + ], + "isReference": false + }, + "ReasonExited": { + "paths": { + "reasonExitedDescriptor": "$.reasonExitedDescriptor" + }, + "pathOrder": [ + "reasonExitedDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ReasonExitedDescriptor" + }, + "EducationOrganization": { + "paths": { + "educationOrganizationId": "$.educationOrganizationReference.educationOrganizationId" + }, + "pathOrder": [ + "educationOrganizationId" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": false, + "resourceName": "EducationOrganization" + }, + "ServedOutsideOfRegularSession": { + "paths": { + "servedOutsideOfRegularSession": "$.servedOutsideOfRegularSession" + }, + "pathOrder": [ + "servedOutsideOfRegularSession" + ], + "isReference": false + }, + "ProgramParticipationStatus.ParticipationStatus": { + "paths": { + "participationStatusDescriptor": "$.programParticipationStatuses[*].participationStatusDescriptor" + }, + "pathOrder": [ + "participationStatusDescriptor" + ], + "isReference": true, + "projectName": "Ed-Fi", + "isDescriptor": true, + "resourceName": "ParticipationStatusDescriptor" + }, + "ProgramParticipationStatus.StatusBeginDate": { + "paths": { + "statusBeginDate": "$.programParticipationStatuses[*].statusBeginDate" + }, + "pathOrder": [ + "statusBeginDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.StatusEndDate": { + "paths": { + "statusEndDate": "$.programParticipationStatuses[*].statusEndDate" + }, + "pathOrder": [ + "statusEndDate" + ], + "isReference": false + }, + "ProgramParticipationStatus.DesignatedBy": { + "paths": { + "designatedBy": "$.programParticipationStatuses[*].designatedBy" + }, + "pathOrder": [ + "designatedBy" + ], + "isReference": false + } + }, + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ], + "isSubclass": true, + "superclassProjectName": "Ed-Fi", + "superclassResourceName": "GeneralStudentProgramAssociation", + "subclassType": "association" + } + }, + "resourceNameMapping": { + "AcademicWeek": "academicWeeks", + "AccountabilityRating": "accountabilityRatings", + "Assessment": "assessments", + "AssessmentItem": "assessmentItems", + "AssessmentScoreRangeLearningStandard": "assessmentScoreRangeLearningStandards", + "BalanceSheetDimension": "balanceSheetDimensions", + "BellSchedule": "bellSchedules", + "Calendar": "calendars", + "CalendarDate": "calendarDates", + "ChartOfAccount": "chartOfAccounts", + "ClassPeriod": "classPeriods", + "Cohort": "cohorts", + "CommunityProviderLicense": "communityProviderLicenses", + "CompetencyObjective": "competencyObjectives", + "Contact": "contacts", + "Course": "courses", + "CourseOffering": "courseOfferings", + "CourseTranscript": "courseTranscripts", + "Credential": "credentials", + "DescriptorMapping": "descriptorMappings", + "DisciplineAction": "disciplineActions", + "DisciplineIncident": "disciplineIncidents", + "EducationContent": "educationContents", + "FunctionDimension": "functionDimensions", + "FundDimension": "fundDimensions", + "Grade": "grades", + "GradebookEntry": "gradebookEntries", + "GradingPeriod": "gradingPeriodDescriptors", + "GraduationPlan": "graduationPlans", + "Intervention": "interventions", + "InterventionPrescription": "interventionPrescriptions", + "InterventionStudy": "interventionStudies", + "LearningStandard": "learningStandards", + "LocalAccount": "localAccounts", + "LocalActual": "localActuals", + "LocalBudget": "localBudgets", + "LocalContractedStaff": "localContractedStaffs", + "LocalEncumbrance": "localEncumbrances", + "LocalPayroll": "localPayrolls", + "Location": "locations", + "ObjectDimension": "objectDimensions", + "ObjectiveAssessment": "objectiveAssessments", + "OpenStaffPosition": "openStaffPositions", + "OperationalUnitDimension": "operationalUnitDimensions", + "Person": "people", + "PostSecondaryEvent": "postSecondaryEvents", + "Program": "programs", + "ProgramDimension": "programDimensions", + "ProjectDimension": "projectDimensions", + "ReportCard": "reportCards", + "RestraintEvent": "restraintEvents", + "Section": "sections", + "SectionAttendanceTakenEvent": "sectionAttendanceTakenEvents", + "Session": "sessions", + "SourceDimension": "sourceDimensions", + "Staff": "staffs", + "StaffAbsenceEvent": "staffAbsenceEvents", + "StaffLeave": "staffLeaves", + "Student": "students", + "StudentAcademicRecord": "studentAcademicRecords", + "StudentAssessment": "studentAssessments", + "StudentCompetencyObjective": "studentCompetencyObjectives", + "StudentGradebookEntry": "studentGradebookEntries", + "StudentInterventionAttendanceEvent": "studentInterventionAttendanceEvents", + "StudentProgramAttendanceEvent": "studentProgramAttendanceEvents", + "StudentSchoolAttendanceEvent": "studentSchoolAttendanceEvents", + "StudentSectionAttendanceEvent": "studentSectionAttendanceEvents", + "Survey": "surveys", + "SurveyQuestion": "surveyQuestions", + "SurveyQuestionResponse": "surveyQuestionResponses", + "SurveyResponse": "surveyResponses", + "SurveySection": "surveySections", + "SurveySectionResponse": "surveySectionResponses", + "EducationOrganizationInterventionPrescriptionAssociation": "educationOrganizationInterventionPrescriptionAssociations", + "EducationOrganizationNetworkAssociation": "educationOrganizationNetworkAssociations", + "EducationOrganizationPeerAssociation": "educationOrganizationPeerAssociations", + "FeederSchoolAssociation": "feederSchoolAssociations", + "LearningStandardEquivalenceAssociation": "learningStandardEquivalenceAssociations", + "StaffCohortAssociation": "staffCohortAssociations", + "StaffDisciplineIncidentAssociation": "staffDisciplineIncidentAssociations", + "StaffEducationOrganizationAssignmentAssociation": "staffEducationOrganizationAssignmentAssociations", + "StaffEducationOrganizationContactAssociation": "staffEducationOrganizationContactAssociations", + "StaffEducationOrganizationEmploymentAssociation": "staffEducationOrganizationEmploymentAssociations", + "StaffProgramAssociation": "staffProgramAssociations", + "StaffSchoolAssociation": "staffSchoolAssociations", + "StaffSectionAssociation": "staffSectionAssociations", + "StudentAssessmentEducationOrganizationAssociation": "studentAssessmentEducationOrganizationAssociations", + "StudentCohortAssociation": "studentCohortAssociations", + "StudentContactAssociation": "studentContactAssociations", + "StudentDisciplineIncidentBehaviorAssociation": "studentDisciplineIncidentBehaviorAssociations", + "StudentDisciplineIncidentNonOffenderAssociation": "studentDisciplineIncidentNonOffenderAssociations", + "StudentEducationOrganizationAssociation": "studentEducationOrganizationAssociations", + "StudentEducationOrganizationResponsibilityAssociation": "studentEducationOrganizationResponsibilityAssociations", + "StudentInterventionAssociation": "studentInterventionAssociations", + "StudentSchoolAssociation": "studentSchoolAssociations", + "StudentSectionAssociation": "studentSectionAssociations", + "StudentSpecialEducationProgramEligibilityAssociation": "studentSpecialEducationProgramEligibilityAssociations", + "SurveyCourseAssociation": "surveyCourseAssociations", + "SurveyProgramAssociation": "surveyProgramAssociations", + "SurveyResponseEducationOrganizationTargetAssociation": "surveyResponseEducationOrganizationTargetAssociations", + "SurveyResponseStaffTargetAssociation": "surveyResponseStaffTargetAssociations", + "SurveySectionAssociation": "surveySectionAssociations", + "SurveySectionResponseEducationOrganizationTargetAssociation": "surveySectionResponseEducationOrganizationTargetAssociations", + "SurveySectionResponseStaffTargetAssociation": "surveySectionResponseStaffTargetAssociations", + "AbsenceEventCategory": "absenceEventCategoryDescriptors", + "AcademicHonorCategory": "academicHonorCategoryDescriptors", + "AcademicSubject": "academicSubjectDescriptors", + "Accommodation": "accommodationDescriptors", + "AccountType": "accountTypeDescriptors", + "AchievementCategory": "achievementCategoryDescriptors", + "AdditionalCreditType": "additionalCreditTypeDescriptors", + "AddressType": "addressTypeDescriptors", + "AdministrationEnvironment": "administrationEnvironmentDescriptors", + "AdministrativeFundingControl": "administrativeFundingControlDescriptors", + "AncestryEthnicOrigin": "ancestryEthnicOriginDescriptors", + "AssessmentCategory": "assessmentCategoryDescriptors", + "AssessmentIdentificationSystem": "assessmentIdentificationSystemDescriptors", + "AssessmentItemCategory": "assessmentItemCategoryDescriptors", + "AssessmentItemResult": "assessmentItemResultDescriptors", + "AssessmentPeriod": "assessmentPeriodDescriptors", + "AssessmentReportingMethod": "assessmentReportingMethodDescriptors", + "AssignmentLateStatus": "assignmentLateStatusDescriptors", + "AttemptStatus": "attemptStatusDescriptors", + "AttendanceEventCategory": "attendanceEventCategoryDescriptors", + "BarrierToInternetAccessInResidence": "barrierToInternetAccessInResidenceDescriptors", + "Behavior": "behaviorDescriptors", + "CalendarEvent": "calendarEventDescriptors", + "CalendarType": "calendarTypeDescriptors", + "CareerPathway": "careerPathwayDescriptors", + "CharterApprovalAgencyType": "charterApprovalAgencyTypeDescriptors", + "CharterStatus": "charterStatusDescriptors", + "CitizenshipStatus": "citizenshipStatusDescriptors", + "ClassroomPosition": "classroomPositionDescriptors", + "CohortScope": "cohortScopeDescriptors", + "CohortType": "cohortTypeDescriptors", + "CohortYearType": "cohortYearTypeDescriptors", + "CompetencyLevel": "competencyLevelDescriptors", + "ContactType": "contactTypeDescriptors", + "ContentClass": "contentClassDescriptors", + "ContinuationOfServicesReason": "continuationOfServicesReasonDescriptors", + "CostRate": "costRateDescriptors", + "Country": "countryDescriptors", + "CourseAttemptResult": "courseAttemptResultDescriptors", + "CourseDefinedBy": "courseDefinedByDescriptors", + "CourseGPAApplicability": "courseGPAApplicabilityDescriptors", + "CourseIdentificationSystem": "courseIdentificationSystemDescriptors", + "CourseLevelCharacteristic": "courseLevelCharacteristicDescriptors", + "CourseRepeatCode": "courseRepeatCodeDescriptors", + "CredentialField": "credentialFieldDescriptors", + "CredentialType": "credentialTypeDescriptors", + "CreditCategory": "creditCategoryDescriptors", + "CreditType": "creditTypeDescriptors", + "CTEProgramService": "cTEProgramServiceDescriptors", + "CurriculumUsed": "curriculumUsedDescriptors", + "DeliveryMethod": "deliveryMethodDescriptors", + "Diagnosis": "diagnosisDescriptors", + "DiplomaLevel": "diplomaLevelDescriptors", + "DiplomaType": "diplomaTypeDescriptors", + "Disability": "disabilityDescriptors", + "DisabilityDesignation": "disabilityDesignationDescriptors", + "DisabilityDeterminationSourceType": "disabilityDeterminationSourceTypeDescriptors", + "Discipline": "disciplineDescriptors", + "DisciplineActionLengthDifferenceReason": "disciplineActionLengthDifferenceReasonDescriptors", + "DisciplineIncidentParticipationCode": "disciplineIncidentParticipationCodeDescriptors", + "EducationalEnvironment": "educationalEnvironmentDescriptors", + "EducationOrganizationAssociationType": "educationOrganizationAssociationTypeDescriptors", + "EducationOrganizationCategory": "educationOrganizationCategoryDescriptors", + "EducationOrganizationIdentificationSystem": "educationOrganizationIdentificationSystemDescriptors", + "EducationPlan": "educationPlanDescriptors", + "ElectronicMailType": "electronicMailTypeDescriptors", + "EligibilityDelayReason": "eligibilityDelayReasonDescriptors", + "EligibilityEvaluationType": "eligibilityEvaluationTypeDescriptors", + "EmploymentStatus": "employmentStatusDescriptors", + "EnrollmentType": "enrollmentTypeDescriptors", + "EntryGradeLevelReason": "entryGradeLevelReasonDescriptors", + "EntryType": "entryTypeDescriptors", + "EvaluationDelayReason": "evaluationDelayReasonDescriptors", + "EventCircumstance": "eventCircumstanceDescriptors", + "ExitWithdrawType": "exitWithdrawTypeDescriptors", + "FinancialCollection": "financialCollectionDescriptors", + "GradebookEntryType": "gradebookEntryTypeDescriptors", + "GradeLevel": "gradeLevelDescriptors", + "GradePointAverageType": "gradePointAverageTypeDescriptors", + "GradeType": "gradeTypeDescriptors", + "GraduationPlanType": "graduationPlanTypeDescriptors", + "GunFreeSchoolsActReportingStatus": "gunFreeSchoolsActReportingStatusDescriptors", + "HomelessPrimaryNighttimeResidence": "homelessPrimaryNighttimeResidenceDescriptors", + "HomelessProgramService": "homelessProgramServiceDescriptors", + "IDEAPart": "iDEAPartDescriptors", + "IdentificationDocumentUse": "identificationDocumentUseDescriptors", + "IncidentLocation": "incidentLocationDescriptors", + "Indicator": "indicatorDescriptors", + "IndicatorGroup": "indicatorGroupDescriptors", + "IndicatorLevel": "indicatorLevelDescriptors", + "InstitutionTelephoneNumberType": "institutionTelephoneNumberTypeDescriptors", + "InteractivityStyle": "interactivityStyleDescriptors", + "InternetAccess": "internetAccessDescriptors", + "InternetAccessTypeInResidence": "internetAccessTypeInResidenceDescriptors", + "InternetPerformanceInResidence": "internetPerformanceInResidenceDescriptors", + "InterventionClass": "interventionClassDescriptors", + "InterventionEffectivenessRating": "interventionEffectivenessRatingDescriptors", + "Language": "languageDescriptors", + "LanguageInstructionProgramService": "languageInstructionProgramServiceDescriptors", + "LanguageUse": "languageUseDescriptors", + "LearningStandardCategory": "learningStandardCategoryDescriptors", + "LearningStandardEquivalenceStrength": "learningStandardEquivalenceStrengthDescriptors", + "LearningStandardScope": "learningStandardScopeDescriptors", + "LevelOfEducation": "levelOfEducationDescriptors", + "LicenseStatus": "licenseStatusDescriptors", + "LicenseType": "licenseTypeDescriptors", + "LimitedEnglishProficiency": "limitedEnglishProficiencyDescriptors", + "Locale": "localeDescriptors", + "LocalEducationAgencyCategory": "localEducationAgencyCategoryDescriptors", + "MagnetSpecialProgramEmphasisSchool": "magnetSpecialProgramEmphasisSchoolDescriptors", + "MediumOfInstruction": "mediumOfInstructionDescriptors", + "MethodCreditEarned": "methodCreditEarnedDescriptors", + "MigrantEducationProgramService": "migrantEducationProgramServiceDescriptors", + "ModelEntity": "modelEntityDescriptors", + "Monitored": "monitoredDescriptors", + "NeglectedOrDelinquentProgram": "neglectedOrDelinquentProgramDescriptors", + "NeglectedOrDelinquentProgramService": "neglectedOrDelinquentProgramServiceDescriptors", + "NetworkPurpose": "networkPurposeDescriptors", + "OperationalStatus": "operationalStatusDescriptors", + "OtherNameType": "otherNameTypeDescriptors", + "Participation": "participationDescriptors", + "ParticipationStatus": "participationStatusDescriptors", + "PerformanceBaseConversion": "performanceBaseConversionDescriptors", + "PerformanceLevel": "performanceLevelDescriptors", + "PersonalInformationVerification": "personalInformationVerificationDescriptors", + "PlatformType": "platformTypeDescriptors", + "PopulationServed": "populationServedDescriptors", + "PostingResult": "postingResultDescriptors", + "PostSecondaryEventCategory": "postSecondaryEventCategoryDescriptors", + "PostSecondaryInstitutionLevel": "postSecondaryInstitutionLevelDescriptors", + "PrimaryLearningDeviceAccess": "primaryLearningDeviceAccessDescriptors", + "PrimaryLearningDeviceAwayFromSchool": "primaryLearningDeviceAwayFromSchoolDescriptors", + "PrimaryLearningDeviceProvider": "primaryLearningDeviceProviderDescriptors", + "Proficiency": "proficiencyDescriptors", + "ProgramAssignment": "programAssignmentDescriptors", + "ProgramCharacteristic": "programCharacteristicDescriptors", + "ProgramSponsor": "programSponsorDescriptors", + "ProgramType": "programTypeDescriptors", + "Progress": "progressDescriptors", + "ProgressLevel": "progressLevelDescriptors", + "ProviderCategory": "providerCategoryDescriptors", + "ProviderProfitability": "providerProfitabilityDescriptors", + "ProviderStatus": "providerStatusDescriptors", + "PublicationStatus": "publicationStatusDescriptors", + "QuestionForm": "questionFormDescriptors", + "Race": "raceDescriptors", + "ReasonExited": "reasonExitedDescriptors", + "ReasonNotTested": "reasonNotTestedDescriptors", + "RecognitionType": "recognitionTypeDescriptors", + "Relation": "relationDescriptors", + "RepeatIdentifier": "repeatIdentifierDescriptors", + "ReporterDescription": "reporterDescriptionDescriptors", + "ReportingTag": "reportingTagDescriptors", + "ResidencyStatus": "residencyStatusDescriptors", + "ResponseIndicator": "responseIndicatorDescriptors", + "Responsibility": "responsibilityDescriptors", + "RestraintEventReason": "restraintEventReasonDescriptors", + "ResultDatatypeType": "resultDatatypeTypeDescriptors", + "RetestIndicator": "retestIndicatorDescriptors", + "SchoolCategory": "schoolCategoryDescriptors", + "SchoolChoiceBasis": "schoolChoiceBasisDescriptors", + "SchoolChoiceImplementStatus": "schoolChoiceImplementStatusDescriptors", + "SchoolFoodServiceProgramService": "schoolFoodServiceProgramServiceDescriptors", + "SchoolType": "schoolTypeDescriptors", + "SectionCharacteristic": "sectionCharacteristicDescriptors", + "Separation": "separationDescriptors", + "SeparationReason": "separationReasonDescriptors", + "Service": "serviceDescriptors", + "Sex": "sexDescriptors", + "SourceSystem": "sourceSystemDescriptors", + "SpecialEducationProgramService": "specialEducationProgramServiceDescriptors", + "SpecialEducationSetting": "specialEducationSettingDescriptors", + "StaffClassification": "staffClassificationDescriptors", + "StaffIdentificationSystem": "staffIdentificationSystemDescriptors", + "StaffLeaveEventCategory": "staffLeaveEventCategoryDescriptors", + "StateAbbreviation": "stateAbbreviationDescriptors", + "StudentCharacteristic": "studentCharacteristicDescriptors", + "StudentIdentificationSystem": "studentIdentificationSystemDescriptors", + "StudentParticipationCode": "studentParticipationCodeDescriptors", + "SubmissionStatus": "submissionStatusDescriptors", + "SurveyCategory": "surveyCategoryDescriptors", + "SurveyLevel": "surveyLevelDescriptors", + "TeachingCredential": "teachingCredentialDescriptors", + "TeachingCredentialBasis": "teachingCredentialBasisDescriptors", + "TechnicalSkillsAssessment": "technicalSkillsAssessmentDescriptors", + "TelephoneNumberType": "telephoneNumberTypeDescriptors", + "Term": "termDescriptors", + "TitleIPartAParticipant": "titleIPartAParticipantDescriptors", + "TitleIPartAProgramService": "titleIPartAProgramServiceDescriptors", + "TitleIPartASchoolDesignation": "titleIPartASchoolDesignationDescriptors", + "TribalAffiliation": "tribalAffiliationDescriptors", + "Visa": "visaDescriptors", + "Weapon": "weaponDescriptors", + "CommunityOrganization": "communityOrganizations", + "CommunityProvider": "communityProviders", + "EducationOrganizationNetwork": "educationOrganizationNetworks", + "EducationServiceCenter": "educationServiceCenters", + "LocalEducationAgency": "localEducationAgencies", + "OrganizationDepartment": "organizationDepartments", + "PostSecondaryInstitution": "postSecondaryInstitutions", + "School": "schools", + "StateEducationAgency": "stateEducationAgencies", + "StudentCTEProgramAssociation": "studentCTEProgramAssociations", + "StudentHomelessProgramAssociation": "studentHomelessProgramAssociations", + "StudentLanguageInstructionProgramAssociation": "studentLanguageInstructionProgramAssociations", + "StudentMigrantEducationProgramAssociation": "studentMigrantEducationProgramAssociations", + "StudentNeglectedOrDelinquentProgramAssociation": "studentNeglectedOrDelinquentProgramAssociations", + "StudentProgramAssociation": "studentProgramAssociations", + "StudentSchoolFoodServiceProgramAssociation": "studentSchoolFoodServiceProgramAssociations", + "StudentSpecialEducationProgramAssociation": "studentSpecialEducationProgramAssociations", + "StudentTitleIPartAProgramAssociation": "studentTitleIPartAProgramAssociations" + }, + "abstractResources": { + "EducationOrganization": { + "identityPathOrder": [ + "educationOrganizationId" + ] + }, + "GeneralStudentProgramAssociation": { + "identityPathOrder": [ + "beginDate", + "educationOrganizationId", + "programName", + "programTypeDescriptor", + "studentUniqueId" + ] + } + } + } + }, + "projectNameMapping": { + "Ed-Fi": "ed-fi" + } +} \ No newline at end of file diff --git a/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentInfoExtractor.ts b/Meadowlark-js/packages/meadowlark-core/src/extraction/BuildDocumentInfo.ts similarity index 51% rename from Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentInfoExtractor.ts rename to Meadowlark-js/packages/meadowlark-core/src/extraction/BuildDocumentInfo.ts index b478aee5..5c954183 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentInfoExtractor.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/extraction/BuildDocumentInfo.ts @@ -2,35 +2,37 @@ // Licensed to the Ed-Fi Alliance under one or more agreements. // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { TopLevelEntity } from '@edfi/metaed-core'; -import { extractDocumentReferences } from './DocumentReferenceExtractor'; -import { extractDocumentIdentity, deriveSuperclassInfoFrom } from './DocumentIdentityExtractor'; + import { DocumentInfo } from '../model/DocumentInfo'; import { extractDescriptorValues } from './DescriptorValueExtractor'; -import { SuperclassInfo } from '../model/SuperclassInfo'; +import { extractDocumentIdentity } from './DocumentIdentityExtractor'; +import { extractDocumentReferences } from './DocumentReferenceExtractor'; +import { deriveSuperclassInfoFrom } from './SuperclassInfoExtractor'; import { DocumentIdentity } from '../model/DocumentIdentity'; -import { ResourceInfo } from '../model/ResourceInfo'; +import { SuperclassInfo } from '../model/SuperclassInfo'; +import { ApiSchema } from '../model/api-schema/ApiSchema'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; /** - * Extracts document identity and document reference information from the request body. + * Builds a DocumentInfo using the various extractors */ -export async function extractDocumentInfo( - resourceInfo: ResourceInfo, +export function buildDocumentInfo( + apiSchema: ApiSchema, + resourceSchema: ResourceSchema, body: object, - matchingMetaEdModel: TopLevelEntity, requestTimestamp: number, -): Promise { - const documentIdentity: DocumentIdentity = extractDocumentIdentity(matchingMetaEdModel, body); +): DocumentInfo { + const documentIdentity: DocumentIdentity = extractDocumentIdentity(resourceSchema, body); let superclassInfo: SuperclassInfo | null = null; - if (!resourceInfo.isDescriptor) { - // We need to do this even if no body for deletes - superclassInfo = deriveSuperclassInfoFrom(matchingMetaEdModel, documentIdentity); + if (!resourceSchema.isDescriptor) { + // We need to do this even if we have no body, for deletes + superclassInfo = deriveSuperclassInfoFrom(resourceSchema, documentIdentity); } return { - documentReferences: extractDocumentReferences(matchingMetaEdModel, body), - descriptorReferences: extractDescriptorValues(matchingMetaEdModel, body), + documentReferences: extractDocumentReferences(apiSchema, resourceSchema, body), + descriptorReferences: extractDescriptorValues(resourceSchema, body), documentIdentity, superclassInfo, requestTimestamp, diff --git a/Meadowlark-js/packages/meadowlark-core/src/extraction/DescriptorValueExtractor.ts b/Meadowlark-js/packages/meadowlark-core/src/extraction/DescriptorValueExtractor.ts index 8ad35f0c..5738211c 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/extraction/DescriptorValueExtractor.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/extraction/DescriptorValueExtractor.ts @@ -2,92 +2,56 @@ // Licensed to the Ed-Fi Alliance under one or more agreements. // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. - -import { normalizeDescriptorSuffix, TopLevelEntity } from '@edfi/metaed-core'; -import { - CollectedProperty, - EntityApiSchemaData, - EntityPropertyApiSchemaData, - prefixedName, - topLevelApiNameOnEntity, -} from '@edfi/metaed-plugin-edfi-api-schema'; +import { JSONPath as jsonPath } from 'jsonpath-plus'; +import invariant from 'ts-invariant'; +import { DocumentIdentity } from '../model/DocumentIdentity'; import { DocumentReference } from '../model/DocumentReference'; - -// TODO: The behavior of calculating the body names of descriptors for an entity can be pushed into a -// new MetaEd enhancer, and entity.data.edfiApiSchema.apiMapping.descriptorCollectedApiProperties -// can be replaced with an array structure with the resolved name, isCollection flag, metaEdType and metaEdName, -// named something like entity.data.edfiApiSchema.apiMapping.descriptorPropertyBodyNames +import { DocumentObjectKey } from '../model/api-schema/DocumentObjectKey'; +import { DocumentPaths } from '../model/api-schema/DocumentPaths'; +import { JsonPath } from '../model/api-schema/JsonPath'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; /** - * Assumes collectedProperty is a descriptor collection + * Takes a resource schema and an API document for that resource and + * extracts the descriptor URI for each descriptor value in the body */ -function extractForDescriptorCollection( - collectedProperty: CollectedProperty, - body: object, - topLevelName: string, -): DocumentReference[] { - const { apiMapping } = collectedProperty.property.data.edfiApiSchema as EntityPropertyApiSchemaData; - const bodyDescriptorArray = - body[prefixedName(topLevelName, collectedProperty.property, collectedProperty.propertyModifier)]; +export function extractDescriptorValues(resourceSchema: ResourceSchema, documentBody: object): DocumentReference[] { + const result: DocumentReference[] = []; - // Handle optional case - if (bodyDescriptorArray == null) return []; + Object.values(resourceSchema.documentPathsMapping).forEach((documentPaths: DocumentPaths) => { + // Only applies to paths to document references + if (!documentPaths.isReference) return; - return bodyDescriptorArray.map( - (bodyDescriptorObject) => - ({ - projectName: collectedProperty.property.namespace.projectName, - resourceVersion: collectedProperty.property.namespace.projectVersion, - resourceName: apiMapping.metaEdName, - isAssignableFrom: false, - documentIdentity: { - descriptor: - bodyDescriptorObject[ - prefixedName( - apiMapping.descriptorCollectionName, - collectedProperty.property, - collectedProperty.propertyModifier, - ) - ], - }, + // Only applies to descriptor references + if (!documentPaths.isDescriptor) return; - isDescriptor: true, - }) as DocumentReference, - ); -} + invariant( + documentPaths.pathOrder.length === 1, + `DescriptorValueExtractor: Descriptor reference for ${documentPaths.resourceName} must have a single path key`, + ); + const descriptorKey: DocumentObjectKey = documentPaths.pathOrder[0]; -function extractDescriptorValuesFromBody( - collectedProperty: CollectedProperty, - body: object, - topLevelName: string, -): DocumentReference[] { - const { apiMapping } = collectedProperty.property.data.edfiApiSchema as EntityPropertyApiSchemaData; - if (apiMapping.isDescriptorCollection) return extractForDescriptorCollection(collectedProperty, body, topLevelName); + const descriptorJsonPath: JsonPath = documentPaths.paths[descriptorKey]; - const bodyDescriptorName = prefixedName(topLevelName, collectedProperty.property, collectedProperty.propertyModifier); - // Handle optional case - if (body[bodyDescriptorName] == null) return []; - return [ - { - projectName: collectedProperty.property.namespace.projectName, - resourceName: normalizeDescriptorSuffix(apiMapping.metaEdName), - documentIdentity: { descriptor: body[bodyDescriptorName] }, - isDescriptor: true, - }, - ]; -} + const descriptorValues: any[] = jsonPath({ + path: descriptorJsonPath, + json: documentBody, + flatten: true, + }); -/** - * Takes a MetaEd entity object and a API JSON body for the resource mapped to that MetaEd entity and - * extracts the descriptor URI for each descriptor value in the body - */ -export function extractDescriptorValues(entity: TopLevelEntity, body: object): DocumentReference[] { - const result: DocumentReference[] = []; - const { descriptorCollectedApiProperties } = (entity.data.edfiApiSchema as EntityApiSchemaData).apiMapping; + // Path can be empty if descriptor reference is optional + if (descriptorValues.length === 0) return; + + const documentIdentity: DocumentIdentity = descriptorValues.map((descriptorValue) => ({ + descriptor: descriptorValue, + })); - descriptorCollectedApiProperties.forEach((collectedProperty: CollectedProperty) => { - const topLevelName = topLevelApiNameOnEntity(entity, collectedProperty.property); - result.push(...extractDescriptorValuesFromBody(collectedProperty, body, topLevelName)); + result.push({ + documentIdentity, + isDescriptor: documentPaths.isDescriptor, + projectName: documentPaths.projectName, + resourceName: documentPaths.resourceName, + }); }); return result; diff --git a/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentIdentityExtractor.ts b/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentIdentityExtractor.ts index a50b8e90..5ca5118d 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentIdentityExtractor.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentIdentityExtractor.ts @@ -2,165 +2,71 @@ // Licensed to the Ed-Fi Alliance under one or more agreements. // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. - -import R from 'ramda'; -import { invariant } from 'ts-invariant'; -import { EntityProperty, TopLevelEntity } from '@edfi/metaed-core'; -import { - topLevelApiNameOnEntity, - ReferenceComponent, - isReferenceElement, - EntityApiSchemaData, - EntityPropertyApiSchemaData, -} from '@edfi/metaed-plugin-edfi-api-schema'; -import { decapitalize } from '../Utility'; -import { SuperclassInfo } from '../model/SuperclassInfo'; +import invariant from 'ts-invariant'; +import { JSONPath as jsonPath } from 'jsonpath-plus'; import { DocumentIdentity } from '../model/DocumentIdentity'; import { DescriptorDocument } from '../model/DescriptorDocument'; import { descriptorDocumentIdentityFrom } from '../model/DescriptorDocumentInfo'; import { SchoolYearEnumerationDocument } from '../model/SchoolYearEnumerationDocument'; import { schoolYearEnumerationDocumentIdentityFrom } from '../model/SchoolYearEnumerationDocumentInfo'; - -type NullableTopLevelEntity = { superclass: TopLevelEntity | null }; - -/** - * Takes a non-reference property representing a portion of the identity of a MetaEd entity, - * an API JSON body matching that entity, and a path to the location of the property value - * in the JSON body, and returns that portion of the document identity extracted from the JSON body. - * - * documentPath is a path in the JSON body as a string array with one path segment per array element. - */ -function singleIdentityFrom(property: EntityProperty, body: object, documentPath: string[]): DocumentIdentity { - const { apiMapping } = property.data.edfiApiSchema as EntityPropertyApiSchemaData; - - let path: string[]; - - if (property.type === 'schoolYearEnumeration' && property.roleName !== '') { - path = [...documentPath, 'schoolYear']; - } else { - path = [...documentPath, apiMapping.fullName]; - } - - const documentPathAsString: string = path.join('.'); - - const elementValue: string | undefined = R.path(path, body); - - invariant( - elementValue != null, - `Identity element value for ${property.metaEdName} not found in ${JSON.stringify(body)} at ${documentPathAsString}`, - ); - - return { [documentPathAsString]: elementValue }; -} +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; +import { MetaEdPropertyFullName } from '../model/api-schema/MetaEdPropertyFullName'; +import { DocumentPaths } from '../model/api-schema/DocumentPaths'; +import { JsonPath } from '../model/api-schema/JsonPath'; +import { DocumentObjectKey } from '../model/api-schema/DocumentObjectKey'; /** - * Takes a ReferenceComponent representing an identity of a MetaEd entity along with - * an API JSON body matching that entity and returns the document identity extracted - * from the JSON body. + * An intermediate object containing the individual DocumentPaths for each property + * that is part of the identity for this resource. Any duplicate path DocumentObjectKeys + * will overwrite another, but this should be fine because a prior Equality Constraint + * check will enforce that the document values are equal regardless of the path that wins. * - * documentPath is an accumulator allowing this function to recursively build up paths in the - * JSON body as a string array with one path segment per array element. This allows use - * of the path() function of the ramdajs library (https://ramdajs.com/docs/#path) to extract - * values from the JSON body. - */ -function documentIdentitiesFrom( - identityReferenceComponent: ReferenceComponent, - body: object, - entity: TopLevelEntity, - documentPath: string[], -): DocumentIdentity[] { - if (isReferenceElement(identityReferenceComponent)) { - // SchoolYearEnumerations are an API one-off expressed as two levels in the document body - if (identityReferenceComponent.sourceProperty.type === 'schoolYearEnumeration') { - const { roleName } = identityReferenceComponent.sourceProperty; - if (roleName !== '') { - documentPath.push(`${decapitalize(roleName)}SchoolYearTypeReference`); - } else { - documentPath.push('schoolYearTypeReference'); - } - } - return [singleIdentityFrom(identityReferenceComponent.sourceProperty, body, documentPath)]; - } - - const result: DocumentIdentity[] = []; - identityReferenceComponent.referenceComponents.forEach((childComponent: ReferenceComponent) => { - const identityTopLevelName = topLevelApiNameOnEntity(entity, identityReferenceComponent.sourceProperty); - const newDocumentPath: string[] = documentPath.length > 0 ? documentPath : [identityTopLevelName]; - if (isReferenceElement(childComponent)) { - result.push(singleIdentityFrom(childComponent.sourceProperty, body, newDocumentPath)); - } else { - result.push(...documentIdentitiesFrom(childComponent, body, entity, newDocumentPath)); - } - }); - return result; -} - -/** - * Collapses an array of DocumentIdentity objects into a single DocumentIdentity. + * For example, a document may have two schoolId entries in different locations as part of + * the document identity. Both must be the same value. */ -function documentIdentityFrom(documentIdentities: DocumentIdentity[]): DocumentIdentity { - return documentIdentities.reduce( - (accumulator: DocumentIdentity, current: DocumentIdentity) => ({ ...accumulator, ...current }), - {}, - ); -} +type IdentityDocumentPaths = { [key: DocumentObjectKey]: JsonPath }; /** * Takes a MetaEd entity object and a API JSON body for the resource mapped to that MetaEd entity and * extracts the document identity information from the JSON body. Also extracts security information, if any. */ -export function extractDocumentIdentity(entity: TopLevelEntity, body: object): DocumentIdentity { - if (entity.type === 'descriptor') return descriptorDocumentIdentityFrom(body as DescriptorDocument); - if (entity.type === 'schoolYearEnumeration') - return schoolYearEnumerationDocumentIdentityFrom(body as SchoolYearEnumerationDocument); - - // identityReferenceComponents can represent a tree of identity information, thus the need to - // flatmap into identities per top level component. - const documentIdentities: DocumentIdentity[] = ( - entity.data.edfiApiSchema as EntityApiSchemaData - ).apiMapping.identityReferenceComponents.flatMap((identityReferenceComponent: ReferenceComponent) => - documentIdentitiesFrom(identityReferenceComponent, body, entity, []), - ); - - // Combine the individual document identities from the top level components into a single one - return documentIdentityFrom(documentIdentities); -} - -/** - * Create a SuperclassInfo from an already constructed DocumentIdentity, if the entity should have one. - * If the entity is a subclass with an identity rename, replace the renamed identity property with the - * original superclass identity property name, thereby putting it in superclass form. - * - * For example, School is a subclass of EducationOrganization which renames educationOrganizationId - * to schoolId. An example document identity for a School is { name: schoolId, value: 123 }. The - * equivalent superclass identity for this School would be { name: educationOrganizationId, value: 123 }. - * - */ -export function deriveSuperclassInfoFrom(entity: TopLevelEntity, documentIdentity: DocumentIdentity): SuperclassInfo | null { - const { superclass }: NullableTopLevelEntity = (entity.data.edfiApiSchema as EntityApiSchemaData).apiMapping; - if (superclass == null) return null; - const identityRename: EntityProperty | undefined = entity.identityProperties.find((p) => p.isIdentityRename); - if (identityRename == null) { - return { resourceName: superclass.metaEdName, documentIdentity, projectName: superclass.namespace.projectName }; +export function extractDocumentIdentity(resourceSchema: ResourceSchema, documentBody: object): DocumentIdentity { + if (resourceSchema.isDescriptor) return descriptorDocumentIdentityFrom(documentBody as DescriptorDocument); + if (resourceSchema.isSchoolYearEnumeration) { + return schoolYearEnumerationDocumentIdentityFrom(documentBody as SchoolYearEnumerationDocument); } - const subclassName = decapitalize(identityRename.metaEdName); - const superclassName = decapitalize(identityRename.baseKeyName); - - if (documentIdentity[subclassName] == null) { - return { resourceName: superclass.metaEdName, documentIdentity, projectName: superclass.namespace.projectName }; - } + const identityDocumentPaths: IdentityDocumentPaths = {}; + resourceSchema.identityFullnames.forEach((identityFullName: MetaEdPropertyFullName) => { + const identityPaths: DocumentPaths = resourceSchema.documentPathsMapping[identityFullName]; + Object.entries(identityPaths.paths).forEach(([documentKey, documentJsonPath]) => { + identityDocumentPaths[documentKey] = documentJsonPath; + }); + }); - // copy the DocumentIdentity so the original is not affected - const superclassIdentity: DocumentIdentity = { ...documentIdentity }; + const documentIdentity: DocumentIdentity = []; + // Build up documentIdentity in order + resourceSchema.identityPathOrder.forEach((documentKey: DocumentObjectKey) => { + const documentJsonPath: JsonPath = identityDocumentPaths[documentKey]; + const documentValue: any = jsonPath({ + path: documentJsonPath, + json: documentBody, + wrap: false, + }); + + invariant( + !Array.isArray(documentValue), + `Identity for path ${documentJsonPath} should not be multiple values but was ${documentValue}`, + ); + invariant(documentValue != null, `Identity for path ${documentJsonPath} was not found in the document`); + + documentIdentity.push({ [documentKey]: documentValue }); + }); - // Replace subclassName with superclassName - delete superclassIdentity[subclassName]; - superclassIdentity[superclassName] = documentIdentity[subclassName]; + invariant( + documentIdentity.length > 0, + `DocumentIdentityExtractor: Document identity is empty for ${resourceSchema.resourceName}`, + ); - return { - resourceName: superclass.metaEdName, - projectName: superclass.namespace.projectName, - documentIdentity: superclassIdentity, - }; + return documentIdentity; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentReferenceExtractor.ts b/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentReferenceExtractor.ts index c2fb6a93..b66a2e71 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentReferenceExtractor.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/extraction/DocumentReferenceExtractor.ts @@ -2,267 +2,176 @@ // Licensed to the Ed-Fi Alliance under one or more agreements. // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. - -import R from 'ramda'; -import { TopLevelEntity, ReferentialProperty, normalizeDescriptorSuffix } from '@edfi/metaed-core'; -import { - EntityApiSchemaData, - EntityPropertyApiSchemaData, - ApiPropertyMapping, - topLevelApiNameOnEntity, - isReferenceElement, - ReferenceComponent, - ReferenceGroup, -} from '@edfi/metaed-plugin-edfi-api-schema'; +import invariant from 'ts-invariant'; +import { JSONPath as jsonPath } from 'jsonpath-plus'; import { DocumentReference } from '../model/DocumentReference'; +import { DocumentObjectKey } from '../model/api-schema/DocumentObjectKey'; +import { DocumentPaths } from '../model/api-schema/DocumentPaths'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; import { DocumentIdentity } from '../model/DocumentIdentity'; -import { decapitalize } from '../Utility'; +import { ApiSchema } from '../model/api-schema/ApiSchema'; +import { MetaEdProjectName } from '../model/api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from '../model/api-schema/MetaEdResourceName'; +import { ProjectSchema } from '../model/api-schema/ProjectSchema'; +import { AbstractResourceInfo } from '../model/api-schema/AbstractResourceInfo'; /** - * A DocumentElement is a name/value pair taken from an Ed-Fi document that expresses part of - * the document identity. + * In extracting DocumentReferences, there is an intermediate step where document values are resolved + * from a JsonPath. JsonPaths return arrays of values when the path goes into an array. + * This is the case for collections of document references. + * + * This means that each path resolves to one document value in *each* document reference in the collection. + * For each DocumentObjectKey of a reference, IntermediateDocumentIdentities holds the array of resolved document values + * for a path. + * + * For example, given a document with a collection of ClassPeriod references: + * + * classPeriods: [ + * { + * classPeriodReference: { + * schoolId: '24', + * classPeriodName: 'z1', + * }, + * }, + * { + * classPeriodReference: { + * schoolId: '25', + * classPeriodName: 'z2', + * }, + * }, + * ] + * + * With JsonPaths for ClassPeriod references: + * "* $.classPeriods[*].classPeriodReference.schoolId" for schoolId and + * "$.classPeriods[*].classPeriodReference.classPeriodName" for classPeriodName, + * the IntermediateDocumentIdentities would be: * - * For example in a Student document, studentUniqueId is a part of a Student - * document's identity. { "studentUniqueId": "1" } in a specific Student document body - * represents that part of the identity (in relational database terms, it would be part - * of the "natural key"). + * { + * schoolId: ['24', '25'], + * classPeriodName: ['z1', 'z2'] + * } + * + * IntermediateDocumentIdentities here contains information for two DocumentIdentities, but as "slices" in the wrong + * orientation. */ -type DocumentElement = { - /** - * A document path name and value pair. - */ - name: string; - - /** - * The value taken from the document body. - */ - value: string; -}; - -// document paths shaped as an array for ramdajs 'path' function -// return value is arrays of document paths, grouped (with arrays) by path endings to line up with name array -function extractRawDocumentPaths(referenceGroup: ReferenceGroup, document: object): string[][][] { - const result: string[][][] = []; - const { apiMapping }: { apiMapping: ApiPropertyMapping } = referenceGroup.sourceProperty.data.edfiApiSchema; - - const topLevelDocumentField: string = apiMapping.topLevelName; - const { referencedEntity } = referenceGroup.sourceProperty as ReferentialProperty; - - // pathEndings are the property names of all the scalar identity fields - const pathEndings: string[] = ( - referencedEntity.data.edfiApiSchema as EntityApiSchemaData - ).apiMapping.flattenedIdentityProperties.map( - (property) => (property.identityProperty.data.edfiApiSchema as EntityPropertyApiSchemaData).apiMapping.fullName, - ); - - if (apiMapping.isReferenceCollection) { - // pathEndings line up with ReferenceGroup documentDocumentPaths - pathEndings.forEach((pathEnding: string) => { - const pathEndingResult: string[][] = []; - // check for omitted optional collection - if (document[topLevelDocumentField] != null) { - // use the document just to get the count of references in the collection - document[topLevelDocumentField].forEach((_collectionObject, index) => { - pathEndingResult.push([topLevelDocumentField, index, apiMapping.referenceCollectionName, pathEnding]); - // example individual pathEndingResult entry, which is a path to a single value in the document to be extracted: - // ['classPeriods', 0, 'classPeriodReference', 'schoolId'] - }); - } - // example pathEndingResult, multiple paths to same value, differing by array element in the document: - // [ - // ['classPeriods', 0, 'classPeriodReference', 'schoolId'], - // ['classPeriods', 1, 'classPeriodReference', 'schoolId'] - // ] - result.push(pathEndingResult); - }); - } else { - // apiMapping is not a collection - pathEndings.forEach((pathEnding) => { - // check for omitted optional reference - if (R.path([topLevelDocumentField, pathEnding], document) != null) { - result.push([[topLevelDocumentField, pathEnding]]); - } - }); - } - - return result; -} +type IntermediateDocumentIdentities = { [key: DocumentObjectKey]: any[] }; /** - * Zip an arbitrary number of arrays. Used to transpose arrays of extractions of the same path endpoint from - * multiple document locations (such as the repetition of values in a collection in an API document) into document identities. + * All the information in a DocumentIdentity but as an object, meaning the keys are unsorted */ -const multiZip = (...theArrays) => { - const [firstArray, ...restArrays] = theArrays; - return firstArray.map((value, index) => restArrays.reduce((acc, array) => [...acc, array[index]], [value])); -}; +type UnsortedDocumentIdentity = { [key: DocumentObjectKey]: any }; /** - * Recursively collects JSON document paths from sub-ReferenceComponents, which represent identities that are - * references to other entities. In a MetaEd model, there is no limit to the number of entities that reference others - * as a part of their identity. + * Finds the identityPathOrder for the document reference */ -function documentPathsFromSubReferenceComponent( - subReferenceComponent: ReferenceComponent, - referenceComponentTopLevelName: string, -): string[] { - const propertyMeadowlarkData: EntityPropertyApiSchemaData = subReferenceComponent.sourceProperty.data.edfiApiSchema; - - if (isReferenceElement(subReferenceComponent)) { - return [`${referenceComponentTopLevelName}.${propertyMeadowlarkData.apiMapping.fullName}`]; - } - - const result: string[] = []; - (subReferenceComponent as ReferenceGroup).referenceComponents.forEach((childSubReferenceComponent: ReferenceComponent) => { - result.push(...documentPathsFromSubReferenceComponent(childSubReferenceComponent, referenceComponentTopLevelName)); - }); - - return result; -} +function identityPathOrderForReference( + apiSchema: ApiSchema, + projectName: MetaEdProjectName, + resourceName: MetaEdResourceName, +): DocumentObjectKey[] { + const projectSchema: ProjectSchema | undefined = Object.values(apiSchema.projectSchemas).find( + (ps) => ps.projectName === projectName, + ); + invariant(projectSchema != null, `Project schema with projectName ${projectName} was not found`); -/** - * Takes the list of ReferenceComponents in a ReferenceGroup and the specific entity this is on, and returns a list - * of dot-separated JSON document paths for each ReferenceComponent. - * - * Note that a ReferenceComponent can resolve to multiple document paths. - */ -function documentPathsFromReferenceComponents(referenceComponents: ReferenceComponent[], entity: TopLevelEntity): string[] { - const result: string[] = []; + // Get the resource schema for the resource + const resourceSchema: ResourceSchema | undefined = Object.values(projectSchema.resourceSchemas).find( + (rs) => rs.resourceName === resourceName, + ); - referenceComponents.forEach((referenceComponent) => { - if (isReferenceElement(referenceComponent)) { - if (referenceComponent.sourceProperty.type === 'schoolYearEnumeration') { - const { roleName } = referenceComponent.sourceProperty; - if (roleName !== '') { - result.push(`${decapitalize(roleName)}SchoolYearTypeReference.schoolYear`); - } else { - result.push('schoolYearTypeReference.schoolYear'); - } - } else { - const propertyMeadowlarkData: EntityPropertyApiSchemaData = referenceComponent.sourceProperty.data.edfiApiSchema; - result.push(propertyMeadowlarkData.apiMapping.fullName); - } - } else { - const referenceComponentTopLevelName = topLevelApiNameOnEntity(entity, referenceComponent.sourceProperty); - result.push(...documentPathsFromSubReferenceComponent(referenceComponent, referenceComponentTopLevelName)); - } - }); + if (resourceSchema != null) { + return resourceSchema.identityPathOrder; + } - return result; -} + // This must be an abstract resource reference then + const abstractResourceInfo: AbstractResourceInfo | undefined = projectSchema.abstractResources[resourceName]; + invariant(abstractResourceInfo != null, `Resource schema with resourceName ${resourceName} was not found`); -/** - * Collapses an array of DocumentElement objects into a single DocumentIdentity. - */ -function documentIdentityFrom(documentElements: DocumentElement[]): DocumentIdentity { - return documentElements.reduce((accumulator: DocumentIdentity, current: DocumentElement) => { - accumulator[current.name] = current.value; - return accumulator; - }, {}); + return abstractResourceInfo.identityPathOrder; } /** - * Takes a ReferenceGroup representing a reference on a MetaEd entity, along with - * an API JSON document matching that entity, and returns a document identity - * for each reference. - * - * Example of document identities, representing a collection of two references to the same entity type - * [ - * ['classPeriodName=z1', 'schoolId=24', 'studentId=333'], - * ['classPeriodName=z2', 'schoolId=25', 'studentId=444'] - * ] + * Takes a resource schema and an API document for that resource and + * extracts the document reference information from the document. */ -function documentIdentitiesFromReferenceGroup( - referenceGroup: ReferenceGroup, - document: object, - entity: TopLevelEntity, -): DocumentIdentity[] { - // The document paths of the reference group, which matches the API document paths to the - // document identity elements of the entity being referenced. - const documentPaths: string[] = documentPathsFromReferenceComponents(referenceGroup.referenceComponents, entity); - - const documentPathSets: string[][][] = extractRawDocumentPaths(referenceGroup, document); - // if lengths are different, something optional was not present, so we are done - if (documentPaths.length !== documentPathSets.length) return []; +export function extractDocumentReferences( + apiSchema: ApiSchema, + resourceSchema: ResourceSchema, + documentBody: object, +): DocumentReference[] { + const result: DocumentReference[] = []; - const orderedAndGroupedByEnding: DocumentElement[][] = R.zipWith( - (name: string, documentPathSet: string[][]) => - documentPathSet.map((documentPath) => ({ name, value: R.path(documentPath, document) as string })), - documentPaths, - documentPathSets, - ); - // example result for orderedAndGroupedByEnding after R.zipWith(): - // [ - // [{name: 'classPeriodName', value: 'z1'}, {name: 'classPeriodName', value: 'z2'}], - // [{name: 'schoolId', value: '24'}, {name: 'schoolId', value: '25'}], - // [{name: 'studentId', value: '333'}, {name: 'studentId', value: '444'}] - // ] + Object.values(resourceSchema.documentPathsMapping).forEach((documentPaths: DocumentPaths) => { + // Only applies to paths to document references + if (!documentPaths.isReference) return; - if (orderedAndGroupedByEnding.length === 0) return []; + // Only applies to non-descriptor references + if (documentPaths.isDescriptor) return; - const documentIdentitiesAsElements: DocumentElement[][] = multiZip(...orderedAndGroupedByEnding); - // example result for documentIdentitiesAsElements after multiZip(): - // [ - // [{name: 'classPeriodName', value: 'z1'}, {name: 'schoolId', value: '24'}, {name: 'studentId', value: '333'}], - // [{name: 'classPeriodName', value: 'z2'}, {name: 'schoolId', value: '25'}, {name: 'studentId', value: '444'}], - // ] + // Build up intermediateDocumentReferences + const intermediateDocumentReferences: IntermediateDocumentIdentities = {}; + Object.entries(documentPaths.paths).forEach(([documentKey, documentJsonPath]) => { + const documentValuesSlice: any[] = jsonPath({ + path: documentJsonPath, + json: documentBody, + flatten: true, + }); - const documentIdentities: DocumentIdentity[] = documentIdentitiesAsElements.map((documentElements: DocumentElement[]) => - documentIdentityFrom(documentElements), - ); - // example result for documentIdentities after map() using documentIdentityFrom(): - // [ - // { classPeriodName: 'z1', schoolId: '24', studentId: '333'}, - // { classPeriodName: 'z2', schoolId: '25', studentId: '444'}, - // ] + invariant( + Array.isArray(documentValuesSlice), + `JsonPath ${documentJsonPath} should have returned an array but instead was ${documentValuesSlice}`, + ); - return documentIdentities; -} + // Path can be empty if reference is optional + if (documentValuesSlice.length === 0) return; -/** - * Takes a ReferenceGroup representing a reference on a MetaEd entity, along with - * an API document matching that entity, and returns an array of DocumentReferences - * for all of the portions of the reference. - */ -function documentReferencesFromReferenceGroup( - referenceGroup: ReferenceGroup, - document: object, - entity: TopLevelEntity, -): DocumentReference[] { - const documentIdentities: DocumentIdentity[] = documentIdentitiesFromReferenceGroup(referenceGroup, document, entity); - // Example of DocumentIdentities representing a collection of references to the same entity type - // [ - // [{name: 'classPeriodName', value: 'z1'}, {name: 'schoolId', value: '24'}, {name: 'studentId', value: '333'}], - // [{name: 'classPeriodName', value: 'z2'}, {name: 'schoolId', value: '25'}, {name: 'studentId', value: '444'}], - // ] - - const result: DocumentReference[] = []; + intermediateDocumentReferences[documentKey] = documentValuesSlice; + }); - documentIdentities.forEach((documentIdentity) => { - let resourceName = referenceGroup.sourceProperty.metaEdName; - if (referenceGroup.sourceProperty.type === 'descriptor') { - resourceName = normalizeDescriptorSuffix(resourceName); + const documentValuesSlices = Object.values(intermediateDocumentReferences); + + // Empty if reference is optional and no values + if (documentValuesSlices.length === 0) return; + + // Number of document values from resolved JsonPaths should all be the same, otherwise something is very wrong + invariant( + documentValuesSlices.every( + (documentValuesSlice) => documentValuesSlice.length === documentValuesSlices[0].length, + `Length of document value slices are not equal`, + ), + ); + + // Look up identityPathOrder for this reference + const identityPathOrder: DocumentObjectKey[] = identityPathOrderForReference( + apiSchema, + documentPaths.projectName, + documentPaths.resourceName, + ); + + // Reorient intermediateDocumentReferences into actual references + for (let index = 0; index < documentValuesSlices[0].length; index += 1) { + const unsortedDocumentIdentity: UnsortedDocumentIdentity = {}; + + // Build the document identity in the correct path order + documentPaths.pathOrder.forEach((documentKey: DocumentObjectKey) => { + unsortedDocumentIdentity[documentKey] = intermediateDocumentReferences[documentKey][index]; + }); + + const documentIdentity: DocumentIdentity = []; + + // Put the unsorted documentIdentity fields into an ordered DocumentIdentity + identityPathOrder.forEach((documentKey: DocumentObjectKey) => { + documentIdentity.push({ [documentKey]: unsortedDocumentIdentity[documentKey] }); + }); + + result.push({ + documentIdentity, + isDescriptor: documentPaths.isDescriptor, + projectName: documentPaths.projectName, + resourceName: documentPaths.resourceName, + }); } - - result.push({ - projectName: referenceGroup.sourceProperty.namespace.projectName, - resourceName, - documentIdentity, - isDescriptor: false, - }); }); - return result; -} -/** - * Takes a MetaEd entity object and an API document for the resource mapped to that MetaEd entity and - * extracts the document reference information from the document. - */ -export function extractDocumentReferences(entity: TopLevelEntity, document: object): DocumentReference[] { - const result: DocumentReference[] = []; - - (entity.data.edfiApiSchema as EntityApiSchemaData).apiMapping.referenceGroups.forEach((referenceGroup: ReferenceGroup) => { - result.push(...documentReferencesFromReferenceGroup(referenceGroup, document, entity)); - }); return result; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/extraction/SuperclassInfoExtractor.ts b/Meadowlark-js/packages/meadowlark-core/src/extraction/SuperclassInfoExtractor.ts new file mode 100644 index 00000000..2c3641e4 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/extraction/SuperclassInfoExtractor.ts @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import invariant from 'ts-invariant'; +import { DocumentIdentity, DocumentIdentityElement } from '../model/DocumentIdentity'; +import { SuperclassInfo } from '../model/SuperclassInfo'; +import type { ResourceSchema } from '../model/api-schema/ResourceSchema'; + +/** + * Create a SuperclassInfo from an already constructed DocumentIdentity, if the entity should have one. + * If the entity is a subclass with an identity rename, replace the renamed identity property with the + * original superclass identity property name, thereby putting it in superclass form. + * + * For example, School is a subclass of EducationOrganization which renames educationOrganizationId + * to schoolId. An example document identity for a School is { name: schoolId, value: 123 }. The + * equivalent superclass identity for this School would be { name: educationOrganizationId, value: 123 }. + * + */ +export function deriveSuperclassInfoFrom( + resourceSchema: ResourceSchema, + documentIdentity: DocumentIdentity, +): SuperclassInfo | null { + if (!resourceSchema.isSubclass) return null; + + // Associations do not rename the identity fields in MetaEd, so the DocumentIdentity portion is the same + if (resourceSchema.subclassType === 'association') { + return { + resourceName: resourceSchema.superclassResourceName, + projectName: resourceSchema.superclassProjectName, + documentIdentity, + }; + } + + // Copy the DocumentIdentity so the original is not affected + const superclassIdentity: DocumentIdentity = [...documentIdentity]; + + // Find location of element for rename + const indexForRename = superclassIdentity.findIndex( + (element: DocumentIdentityElement) => element[resourceSchema.subclassIdentityDocumentKey] != null, + ); + invariant( + indexForRename !== -1, + `deriveSuperclassInfoFrom found no identity element with name ${resourceSchema.subclassIdentityDocumentKey}`, + ); + + // Get value for renamed element + const valueForRename: any = superclassIdentity[indexForRename][resourceSchema.subclassIdentityDocumentKey]; + invariant( + valueForRename != null, + `deriveSuperclassInfoFrom found no value for ${resourceSchema.subclassIdentityDocumentKey}`, + ); + + // Create renamed element + const renamedIdentityElement: DocumentIdentityElement = { + [resourceSchema.superclassIdentityDocumentKey]: valueForRename, + }; + + // Overwrite renamed element (array was cloned, so this is ok) + superclassIdentity[indexForRename] = renamedIdentityElement; + + return { + resourceName: resourceSchema.superclassResourceName, + projectName: resourceSchema.superclassProjectName, + documentIdentity: superclassIdentity, + }; +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/handler/Delete.ts b/Meadowlark-js/packages/meadowlark-core/src/handler/Delete.ts index d83739b3..3ae267cc 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/handler/Delete.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/handler/Delete.ts @@ -3,7 +3,6 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import R from 'ramda'; import { isDebugEnabled, writeErrorToLog } from '@edfi/meadowlark-utilities'; import { writeDebugStatusToLog, writeRequestToLog } from '../Logger'; import { getDocumentStore } from '../plugin/PluginLoader'; @@ -29,7 +28,7 @@ export async function deleteIt(frontendRequest: FrontendRequest): Promise Promise; @@ -44,12 +44,12 @@ function postStack(): MiddlewareStack { return R.once( R.pipe( timestampRequest, + R.andThen(loadApiSchema), R.andThen(authorize), R.andThen(parsePath), R.andThen(parseBody), R.andThen(logRequestBody), - R.andThen(resourceValidation), - R.andThen(metaEdModelFinding), + R.andThen(endpointValidation), R.andThen(documentValidation), R.andThen(equalityConstraintValidation), R.andThen(documentInfoExtraction), @@ -64,12 +64,12 @@ function putStack(): MiddlewareStack { return R.once( R.pipe( timestampRequest, + R.andThen(loadApiSchema), R.andThen(authorize), R.andThen(parsePath), R.andThen(parseBody), R.andThen(logRequestBody), - R.andThen(resourceValidation), - R.andThen(metaEdModelFinding), + R.andThen(endpointValidation), R.andThen(documentValidation), R.andThen(equalityConstraintValidation), R.andThen(documentInfoExtraction), @@ -83,9 +83,10 @@ function putStack(): MiddlewareStack { function deleteStack(): MiddlewareStack { return R.once( R.pipe( - authorize, + loadApiSchema, + R.andThen(authorize), R.andThen(parsePath), - R.andThen(resourceValidation), + R.andThen(endpointValidation), R.andThen(getDocumentStore().securityMiddleware), R.andThen(logTheResponse), ), @@ -96,8 +97,9 @@ function deleteStack(): MiddlewareStack { function getByIdStack(): MiddlewareStack { return R.once( R.pipe( - authorize, - R.andThen(resourceValidation), + loadApiSchema, + R.andThen(authorize), + R.andThen(endpointValidation), R.andThen(getDocumentStore().securityMiddleware), R.andThen(logTheResponse), ), @@ -108,9 +110,9 @@ function getByIdStack(): MiddlewareStack { function queryStack(): MiddlewareStack { return R.once( R.pipe( - authorize, - R.andThen(resourceValidation), - R.andThen(metaEdModelFinding), + loadApiSchema, + R.andThen(authorize), + R.andThen(endpointValidation), R.andThen(queryValidation), R.andThen(logTheResponse), ), diff --git a/Meadowlark-js/packages/meadowlark-core/src/handler/FrontendRequest.ts b/Meadowlark-js/packages/meadowlark-core/src/handler/FrontendRequest.ts index 46b32c1a..e0bf8052 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/handler/FrontendRequest.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/handler/FrontendRequest.ts @@ -4,13 +4,14 @@ // See the LICENSE and NOTICES files in the project root for more information. import R from 'ramda'; -import { NoTopLevelEntity, TopLevelEntity } from '@edfi/metaed-core'; import { DocumentInfo, NoDocumentInfo } from '../model/DocumentInfo'; import { PathComponents, NoPathComponents } from '../model/PathComponents'; import { NoResourceInfo, ResourceInfo } from '../model/ResourceInfo'; import { Security, UndefinedSecurity } from '../security/Security'; import type { Action } from './Action'; import { TraceId } from '../model/IdTypes'; +import { NoResourceSchema, ResourceSchema } from '../model/api-schema/ResourceSchema'; +import { ApiSchema, NoApiSchema } from '../model/api-schema/ApiSchema'; export interface Headers { [header: string]: string | undefined; @@ -22,6 +23,10 @@ export interface FrontendQueryParameters { export interface FrontendRequestMiddleware { security: Security; + + /** + * The important parts of the request URL in object form + */ pathComponents: PathComponents; /** @@ -29,14 +34,34 @@ export interface FrontendRequestMiddleware { */ parsedBody: object; + /** + * Base API resource information for passing along to backends + */ resourceInfo: ResourceInfo; - // Note that TopLevelEntities are usually not JSON serializable - matchingMetaEdModel: TopLevelEntity; + /** + * Full API schema information describing all resources and resource extensions + */ + apiSchema: ApiSchema; + + /** + * Full API resource schema information describing the shape of this resource + */ + resourceSchema: ResourceSchema; + + /** + * Complete information on a validated API document + */ documentInfo: DocumentInfo; + + /** + * Additional header information to provide in the response + */ headerMetadata: { [header: string]: string }; - // Whether to validate resources or not, currently pulled from role type 'assessment' from JWT + /** + * Whether to validate resources or not, currently pulled from role type 'assessment' from JWT + */ validateResources: boolean; /** @@ -90,7 +115,8 @@ export function newFrontendRequestMiddleware(): FrontendRequestMiddleware { pathComponents: NoPathComponents, parsedBody: {}, resourceInfo: NoResourceInfo, - matchingMetaEdModel: NoTopLevelEntity, + apiSchema: NoApiSchema, + resourceSchema: NoResourceSchema, documentInfo: NoDocumentInfo, headerMetadata: {}, validateResources: true, @@ -112,12 +138,13 @@ export function newFrontendRequest(): FrontendRequest { } /** - * Returns a copy of a FrontendRequest with the non-serializable 'matchingMetaEdModel' field removed + * Returns a copy of a FrontendRequest with JsonSchemas removed from the ResourceSchema */ -const removeMatchingMetaEdModel: (f: FrontendRequest) => FrontendRequest = R.dissocPath([ - 'middleware', - 'matchingMetaEdModel', -]); +const removeJsonSchemas: (f: FrontendRequest) => FrontendRequest = R.pipe( + R.dissocPath(['middleware', 'resourceSchema', 'jsonSchemaForInsert']), + R.dissocPath(['middleware', 'resourceSchema', 'jsonSchemaForQuery']), + R.dissocPath(['middleware', 'resourceSchema', 'jsonSchemaForUpdate']), +); /** * Returns a copy of a FrontendRequest with the sensitive data 'body' field removed @@ -154,7 +181,7 @@ export const removeReferencesDocumentIdentity: (f: FrontendRequest) => FrontendR * Returns a copy of a FrontendRequest suitable for logging, such as with non-serializable fields or sensitive data removed */ export const frontendRequestForLogging: (f: FrontendRequest) => FrontendRequest = R.pipe( - removeMatchingMetaEdModel, + removeJsonSchemas, removeBody, removeParsedBody, removeDocumentIdentity, diff --git a/Meadowlark-js/packages/meadowlark-core/src/handler/GetById.ts b/Meadowlark-js/packages/meadowlark-core/src/handler/GetById.ts index 074250d9..609a4b59 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/handler/GetById.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/handler/GetById.ts @@ -20,7 +20,7 @@ const moduleName = 'core.handler.GetById'; */ export async function getById(frontendRequest: FrontendRequest): Promise { if (frontendRequest.middleware.pathComponents.documentUuid == null) { - writeDebugStatusToLog(moduleName, frontendRequest, 'getById', 404); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'getById', 404); return { statusCode: 404 }; } const request: GetRequest = { @@ -37,12 +37,12 @@ export async function getById(frontendRequest: FrontendRequest): Promise { - const modelNpmPackage = modelPackageFor(Constants.uriVersion33b); - const { metaEd, metaEdConfiguration } = await loadMetaEdState(modelNpmPackage); - - const { entity, projectName, projectVersion } = metaEd.namespace.get('EdFi') as Namespace; - const common: string[] = Array.from(entity.common.values()).map((x) => x.metaEdName); - const descriptor: string[] = Array.from(entity.descriptor.values()).map((x) => x.metaEdName); - const domainEntity: string[] = Array.from(entity.domainEntity.values()).map((x) => x.metaEdName); - return { - body: { projectName, projectVersion, common, descriptor, domainEntity }, - statusCode: 200, - headers: { - 'X-MetaEd-Project-Name': metaEdConfiguration.projects[0].projectName, - 'X-MetaEd-Project-Version': metaEdConfiguration.projects[0].projectVersion, - 'X-MetaEd-Project-Package-Name': modelNpmPackage, - 'Access-Control-Allow-Origin': '*', - }, - }; -} - /** * Base endpoint that returns the DS version and supported extensions */ export async function apiVersion(frontendRequest: FrontendRequest): Promise { const baseUrl = buildBaseUrlFromRequest(frontendRequest); return { - body: CreateApiVersionObject(baseUrl), + body: createApiVersionObject(baseUrl), statusCode: 200, headers: { 'Access-Control-Allow-Origin': '*', @@ -69,7 +42,7 @@ function useTemplate(data: string, host: string, stage: string): string { // the schemes with quotation marks that won't be encoded, but when // we do so, handlebars ends up escaping every quotation mark. // Just use a straight string replacement without handlebars. - const basePath = `/${stage}/${Constants.uriVersion33b}/`; + const basePath = `/${stage}/v3.3b/`; const basePathToken = /{{ basePath }}/g; const tokenUrlToken = /{{ tokenUrl }}/g; @@ -99,7 +72,7 @@ async function getFileFromBlobStorage( const resource: ExternalResource = url in resourceCache ? resourceCache[url] : { body: '', etag: '' }; try { - writeDebugStatusToLog(moduleName, frontendRequest, 'getFileFromBlobStorage', undefined, `getting ${url}`); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'getFileFromBlobStorage', undefined, `getting ${url}`); const response = await axios.get(url, { headers: { 'If-None-Match': resource.etag }, validateStatus(status) { @@ -108,13 +81,13 @@ async function getFileFromBlobStorage( }); if (response.status === 200) { - writeDebugStatusToLog(moduleName, frontendRequest, 'getFileFromBlobStorage', undefined, '200 from AWS'); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'getFileFromBlobStorage', undefined, '200 from AWS'); resource.etag = response.headers.etag; resource.body = transformer(response.data); resourceCache[url] = resource; } else { - writeDebugStatusToLog(moduleName, frontendRequest, 'getFileFromBlobStorage', undefined, '304 from AWS'); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'getFileFromBlobStorage', undefined, '304 from AWS'); } return { @@ -165,7 +138,7 @@ export async function openApiUrlList(frontendRequest: FrontendRequest): Promise< const baseUrl = buildBaseUrlFromRequest(frontendRequest); return { - body: OpenApiListTemplate(baseUrl), + body: openApiListTemplate(baseUrl), statusCode: 200, }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/handler/MetadataResources.ts b/Meadowlark-js/packages/meadowlark-core/src/handler/MetadataResources.ts index e137582c..90a4698d 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/handler/MetadataResources.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/handler/MetadataResources.ts @@ -5,7 +5,7 @@ import { Config } from '@edfi/meadowlark-utilities'; -export const CreateApiVersionObject = (serverBaseUrl: string) => ({ +export const createApiVersionObject = (serverBaseUrl: string) => ({ version: '1.0.0', apiMode: 'SharedInstance', dataModels: [ @@ -23,7 +23,7 @@ export const CreateApiVersionObject = (serverBaseUrl: string) => ({ }, }); -export const OpenApiListTemplate = (serverBaseUrl: string) => [ +export const openApiListTemplate = (serverBaseUrl: string) => [ { name: 'Descriptors', endpointUri: `${serverBaseUrl}/metadata/descriptors/swagger.json`, diff --git a/Meadowlark-js/packages/meadowlark-core/src/handler/Query.ts b/Meadowlark-js/packages/meadowlark-core/src/handler/Query.ts index 88ca2d45..e18d2a27 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/handler/Query.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/handler/Query.ts @@ -27,7 +27,7 @@ const onlyPaginationParameters = R.pick(['offset', 'limit']); export async function query(frontendRequest: FrontendRequest): Promise { writeDebugStatusToLog( moduleName, - frontendRequest, + frontendRequest.traceId, 'query', undefined, `query string: ${JSON.stringify(frontendRequest.queryParameters)}`, @@ -37,7 +37,7 @@ export async function query(frontendRequest: FrontendRequest): Promise { + const projectNamespace: ProjectNamespace | undefined = apiSchema.projectNameMapping[document.projectName]; + invariant( + projectNamespace != null, + `Project name '${document.projectName}' on document resource ${document.resourceName} with documentUuid ${document.documentUuid} does not match any known ProjectNamespace. Mismatch between database data and loaded ApiSchema?`, + ); + + const endpointName: EndpointName | undefined = + apiSchema.projectSchemas[projectNamespace].resourceNameMapping[document.resourceName]; + invariant( + endpointName != null, + `Resource name '${document.resourceName}' on document with documentUuid ${document.documentUuid} does not match any known EndpointName. Mismatch between database data and loaded ApiSchema?`, + ); + let uri = resourceUriFrom( { - version: versionAbbreviationFor(document.resourceVersion), - namespace: document.projectName.toLowerCase(), // Lower casing is correct for Ed-Fi models, not sure about alternatives - resourceName: uncapitalize(pluralize(document.resourceName)), + projectShortVersion: versionAbbreviationFor(document.resourceVersion), + projectNamespace, + endpointName, }, document.documentUuid, ); diff --git a/Meadowlark-js/packages/meadowlark-core/src/index.ts b/Meadowlark-js/packages/meadowlark-core/src/index.ts index a809621f..109549f6 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/index.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/index.ts @@ -3,13 +3,15 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -export type { DocumentUuid, MeadowlarkId, TraceId } from './model/IdTypes'; +// Plugins export type { DocumentStorePlugin } from './plugin/backend/DocumentStorePlugin'; export { NoDocumentStorePlugin } from './plugin/backend/NoDocumentStorePlugin'; export type { QueryHandlerPlugin } from './plugin/backend/QueryHandlerPlugin'; export { NoQueryHandlerPlugin } from './plugin/backend/NoQueryHandlerPlugin'; export type { SystemTestClient, SystemTestablePlugin } from './plugin/backend/SystemTestablePlugin'; export { Subscribe } from './plugin/listener/Subscribe'; + +// Messages export type { GetResult } from './message/GetResult'; export type { DeleteResult } from './message/DeleteResult'; export type { UpdateResult } from './message/UpdateResult'; @@ -22,17 +24,19 @@ export type { UpsertRequest } from './message/UpsertRequest'; export type { QueryRequest } from './message/QueryRequest'; export type { ReferringDocumentInfo } from './message/ReferringDocumentInfo'; export type { PaginationParameters } from './message/PaginationParameters'; + +// Security export type { Security } from './security/Security'; export { newSecurity } from './security/Security'; export { AuthorizationStrategy } from './security/AuthorizationStrategy'; + +// Models +export type { DocumentUuid, MeadowlarkId, TraceId } from './model/IdTypes'; export type { DocumentReference } from './model/DocumentReference'; export type { DocumentIdentity } from './model/DocumentIdentity'; export type { MissingIdentity } from './model/DocumentIdentity'; -export type { FrontendRequest, Headers } from './handler/FrontendRequest'; -export { newFrontendRequest, newFrontendRequestMiddleware } from './handler/FrontendRequest'; -export type { FrontendResponse } from './handler/FrontendResponse'; -export { newFrontendResponse, newFrontendResponseSuccess } from './handler/FrontendResponse'; -export { meadowlarkIdForDocumentIdentity, generateDocumentUuid, NoDocumentIdentity } from './model/DocumentIdentity'; +export { newPathComponents } from './model/PathComponents'; +export { meadowlarkIdForDocumentIdentity, generateDocumentUuid } from './model/DocumentIdentity'; export { getMeadowlarkIdForDocumentReference } from './model/DocumentReference'; export type { DocumentInfo } from './model/DocumentInfo'; export { newDocumentInfo, NoDocumentInfo } from './model/DocumentInfo'; @@ -40,20 +44,28 @@ export type { ResourceInfo } from './model/ResourceInfo'; export { newResourceInfo, NoResourceInfo } from './model/ResourceInfo'; export type { SuperclassInfo } from './model/SuperclassInfo'; export { newSuperclassInfo, getMeadowlarkIdForSuperclassInfo } from './model/SuperclassInfo'; -export * as PluginLoader from './plugin/PluginLoader'; -export type { MiddlewareModel } from './middleware/MiddlewareModel'; -export { doNothingMiddleware } from './middleware/DoNothingMiddleware'; -export { writeRequestToLog } from './Logger'; +export type { MetaEdProjectName } from './model/api-schema/MetaEdProjectName'; +export type { MetaEdResourceName } from './model/api-schema/MetaEdResourceName'; +export type { DocumentObjectKey } from './model/api-schema/DocumentObjectKey'; +export type { SemVer } from './model/api-schema/SemVer'; // Handlers export { upsert, deleteIt, get, update, closeConnection } from './handler/FrontendFacade'; export { loadDescriptors } from './handler/DescriptorLoader'; export { apiVersion, - metaed, openApiUrlList, swaggerForDescriptorsAPI, swaggerForResourcesAPI, dependencies, xsdMetadata, } from './handler/MetadataHandler'; +export type { FrontendRequest, Headers } from './handler/FrontendRequest'; +export { newFrontendRequest, newFrontendRequestMiddleware } from './handler/FrontendRequest'; +export type { FrontendResponse } from './handler/FrontendResponse'; +export { newFrontendResponse, newFrontendResponseSuccess } from './handler/FrontendResponse'; + +// Other +export type { MiddlewareModel } from './middleware/MiddlewareModel'; +export { doNothingMiddleware } from './middleware/DoNothingMiddleware'; +export { writeRequestToLog } from './Logger'; diff --git a/Meadowlark-js/packages/meadowlark-core/src/message/ReferringDocumentInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/message/ReferringDocumentInfo.ts index 4d288ec7..29b14097 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/message/ReferringDocumentInfo.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/message/ReferringDocumentInfo.ts @@ -4,14 +4,17 @@ // See the LICENSE and NOTICES files in the project root for more information. import { DocumentUuid, MeadowlarkId } from '../model/IdTypes'; +import { MetaEdProjectName } from '../model/api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from '../model/api-schema/MetaEdResourceName'; +import { SemVer } from '../model/api-schema/SemVer'; /** * Information on a document that is referring another document for referential integrity reasons */ export type ReferringDocumentInfo = { - projectName: string; - resourceVersion: string; - resourceName: string; + projectName: MetaEdProjectName; + resourceVersion: SemVer; + resourceName: MetaEdResourceName; documentUuid: DocumentUuid; meadowlarkId: MeadowlarkId; }; diff --git a/Meadowlark-js/packages/meadowlark-core/src/metaed/LoadMetaEd.ts b/Meadowlark-js/packages/meadowlark-core/src/metaed/LoadMetaEd.ts deleted file mode 100644 index 38a13b86..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/metaed/LoadMetaEd.ts +++ /dev/null @@ -1,101 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import path from 'path'; -import fs from 'fs-extra'; -import { - executePipeline, - newMetaEdConfiguration, - newPipelineOptions, - newState, - State, - MetaEdConfiguration, -} from '@edfi/metaed-core'; -import { initialize as edfiApiSchema } from '@edfi/metaed-plugin-edfi-api-schema'; -import { initialize as edfiUnified } from '@edfi/metaed-plugin-edfi-unified'; - -import { findMetaEdProjectMetadata, MetaEdProjectMetadata } from './MetaEdProjectMetadata'; - -/** - * Determine whether we are in a deployed Lambda environment or in a development monorepo environment, - * where a 'packages' directory exists. - */ -const isDevEnvironment = () => fs.existsSync(path.resolve(__dirname, '../../../../packages')); - -/** - * Get the correct node_modules path, whether we are in a deployed Lambda environment - * or in a development monorepo environment - */ - -function nodeModulesPath(): string { - const directory = isDevEnvironment() ? '../../../../node_modules' : '../../node_modules'; - return path.resolve(__dirname, directory); -} - -/** - * Creates a MetaEdConfiguration object from MetaEdProjectMetadata - */ -function metaEdConfigurationFrom(metaEdProjectMetadata: MetaEdProjectMetadata[]): MetaEdConfiguration { - const metaEdConfiguration: MetaEdConfiguration = { - ...newMetaEdConfiguration(), - defaultPluginTechVersion: '3.4.0', - }; - - metaEdProjectMetadata.forEach((pm) => { - metaEdConfiguration.projects.push({ - namespaceName: pm.projectNamespace, - projectName: pm.projectName, - projectVersion: pm.projectVersion, - projectExtension: pm.projectExtension, - description: '', - }); - metaEdConfiguration.projectPaths.push(pm.projectPath); - }); - - return metaEdConfiguration; -} - -// TODO in RND-260: should probably include project version in key -/** - * This is a simple cache implementation that works in Lambdas, see: https://rewind.io/blog/simple-caching-in-aws-lambda-functions/ - */ -const stateCache = {}; - -function setStateCache(packageName: string, state: State) { - stateCache[packageName] = state; -} - -function getStateCache(packageName: string): State | undefined { - return stateCache[packageName]; -} - -/** - * Entry point for loading a MetaEd project, building a MetaEd internal model and running enhancers. - */ -export async function loadMetaEdState(projectNpmPackageName: string): Promise { - const cachedState: State | undefined = getStateCache(projectNpmPackageName); - if (cachedState != null) return cachedState; - - const nodeModules = nodeModulesPath(); - const projectPath = path.resolve(nodeModules, projectNpmPackageName); - const metaEdProjectMetadata: MetaEdProjectMetadata[] = await findMetaEdProjectMetadata([projectPath]); - const metaEdConfiguration = metaEdConfigurationFrom(metaEdProjectMetadata); - - let state: State = { - ...newState(), - metaEdConfiguration, - pipelineOptions: Object.assign(newPipelineOptions(), { - runValidators: true, - runEnhancers: true, - }), - metaEdPlugins: [edfiUnified(), edfiApiSchema()], - }; - - // run MetaEd with downloaded packages - state = (await executePipeline(state)).state; - - setStateCache(projectNpmPackageName, state); - return state; -} diff --git a/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdModelFinder.ts b/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdModelFinder.ts deleted file mode 100644 index 8cd5e310..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdModelFinder.ts +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { TopLevelEntity } from '@edfi/metaed-core'; -import { PathComponents } from '../model/PathComponents'; -import { decapitalize } from '../Utility'; -import { loadMetaEdState } from './LoadMetaEd'; -import { modelPackageFor } from './MetaEdProjectMetadata'; -import { getMetaEdModelForResourceName } from './ResourceNameMapping'; - -/** - * Finds the MetaEd internal model that represents the given REST resource path. - */ -export async function findMetaEdModel(pathComponents: PathComponents): Promise { - const lowerResourceName = decapitalize(pathComponents.resourceName); - const modelNpmPackage = modelPackageFor(pathComponents.version); - const { metaEd } = await loadMetaEdState(modelNpmPackage); - - return getMetaEdModelForResourceName(lowerResourceName, metaEd, pathComponents.namespace); -} diff --git a/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdProjectMetadata.ts b/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdProjectMetadata.ts deleted file mode 100644 index c2522dc7..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdProjectMetadata.ts +++ /dev/null @@ -1,138 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import fs from 'fs-extra'; -import path from 'path'; -import semver from 'semver'; -import { deriveNamespaceFromProjectName } from '@edfi/metaed-core'; -import { Constants } from '../Constants'; - -const PROJECT_SETTINGS_FILE_NAME = 'package.json'; - -/** - * The metadata information from a MetaEd project's package.json - */ -interface ProjectFileData { - projectName: string; - projectVersion: string; -} - -/** - * A full set of metadata information for a MetaEd project, including whether the project - * itself is valid. - */ -export interface MetaEdProjectMetadata { - projectPath: string; - invalidProject: boolean; - invalidProjectReason: string; - projectName: string; - projectVersion: string; - projectNamespace: string; - isExtensionProject: boolean; - projectExtension: string; -} - -/** - * A hardcoded mapping of URI version abbreviations to Ed-Fi Model npm package names - */ -export function modelPackageFor(versionAbbreviation: string): string { - if (versionAbbreviation === Constants.uriVersion31) return '@edfi/ed-fi-model-3.1'; - if (versionAbbreviation === Constants.uriVersion33b) return '@edfi/ed-fi-model-3.3b'; - return 'ed-fi-model-undefined'; -} - -/** - * A hardcoded mapping of Ed-Fi Model project versions to URI abbreviations - */ -export function versionAbbreviationFor(projectVersion: string): string { - if (projectVersion === Constants.projectVersion31) return Constants.uriVersion31; - if (projectVersion === Constants.projectVersion33b) return Constants.uriVersion33b; - return 'v0.0'; -} - -/** - * Default initialization of a MetaEdProjectMetadata object - */ -function newMetaEdProjectMetadata(projectPath: string): MetaEdProjectMetadata { - return { - projectPath, - invalidProject: false, - invalidProjectReason: '', - projectName: '', - projectVersion: '', - projectNamespace: '', - isExtensionProject: false, - projectExtension: '', - }; -} - -/** - * Read the package.json file for a MetaEd project and extract the project name and version. - */ -async function projectValuesFromProjectJson(verifiedPathToProjectJson: string): Promise { - const projectJson = await fs.readJson(verifiedPathToProjectJson); - if (projectJson.metaEdProject && projectJson.metaEdProject.projectName && projectJson.metaEdProject.projectVersion) - return projectJson.metaEdProject; - return null; -} - -/** - * Entry point for finding and validating MetaEd projects given file system paths. - * - * Similar to the behavior of the atom-metaed package for the Atom editor. - */ -export async function findMetaEdProjectMetadata(projectPaths: string[]): Promise { - const result: MetaEdProjectMetadata[] = await Promise.all( - projectPaths.map(async (projectPath: string) => { - const projectJsonFilePath = path.join(projectPath, PROJECT_SETTINGS_FILE_NAME); - if (!fs.existsSync(projectJsonFilePath)) { - return { - ...newMetaEdProjectMetadata(projectPath), - invalidProject: true, - invalidProjectReason: `does not exist at ${projectPath}`, - }; - } - - const projectFileData: ProjectFileData | null = await projectValuesFromProjectJson(projectJsonFilePath); - if (projectFileData == null) { - return { - ...newMetaEdProjectMetadata(projectPath), - invalidProject: true, - invalidProjectReason: 'must have both metaEdProject.projectName and metaEdProject.projectVersion definitions', - }; - } - - const projectNamespace: string | null = deriveNamespaceFromProjectName(projectFileData.projectName); - if (projectNamespace == null) { - return { - ...newMetaEdProjectMetadata(projectPath), - invalidProject: true, - invalidProjectReason: - 'metaEdProject.projectName definition must begin with an uppercase character. All other characters must be alphanumeric only.', - }; - } - - const projectVersion = projectFileData.projectVersion || ''; - if (!semver.valid(projectVersion)) { - return { - ...newMetaEdProjectMetadata(projectPath), - invalidProject: true, - invalidProjectReason: - 'metaEdProject.projectVersion is not a valid version declaration. Version declarations must follow the semver.org standard.', - }; - } - - return { - ...newMetaEdProjectMetadata(projectPath), - projectName: projectFileData.projectName, - projectVersion, - projectNamespace, - isExtensionProject: projectNamespace !== 'EdFi', - projectExtension: projectNamespace === 'EdFi' ? '' : 'EXTENSION', - }; - }), - ); - return result; -} diff --git a/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdValidation.ts b/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdValidation.ts deleted file mode 100644 index 2aeb61a7..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/metaed/MetaEdValidation.ts +++ /dev/null @@ -1,186 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import Ajv from 'ajv/dist/2020'; -import addFormatsTo from 'ajv-formats'; -import type { ErrorObject, ValidateFunction } from 'ajv'; -import { betterAjvErrors, ValidationError } from '@apideck/better-ajv-errors'; -import didYouMean from 'didyoumean2'; -import { MetaEdEnvironment, TopLevelEntity, NoTopLevelEntity } from '@edfi/metaed-core'; -import { getBooleanFromEnvironment } from '@edfi/meadowlark-utilities'; -import type { ResourceMatchResult } from '../model/ResourceMatchResult'; -import { getMetaEdModelForResourceName, getResourceNamesForProject } from './ResourceNameMapping'; -import type { FrontendQueryParameters } from '../handler/FrontendRequest'; - -/** - * Compiled ajv JSON Schema validator functions for the API resource - */ -export type ResourceSchemaValidators = { - insertValidator: ValidateFunction; - updateValidator: ValidateFunction; - queryValidator: ValidateFunction; -}; - -function initializeAjv(): Ajv { - const removeAdditional = getBooleanFromEnvironment('ALLOW_OVERPOSTING', false); - const coerceTypes = getBooleanFromEnvironment('ALLOW_TYPE_COERCION', false); - - const ajv = new Ajv({ allErrors: true, coerceTypes, removeAdditional }); - addFormatsTo(ajv); - - return ajv; -} - -let ajv; - -// simple cache implementation, see: https://rewind.io/blog/simple-caching-in-aws-lambda-functions/ -/** This is a cache mapping MetaEd model objects to compiled ajv JSON Schema validators for the API resource */ -const validatorCache: Map = new Map(); - -/** - * Returns the API resource JSON Schema validator functions for the given MetaEd model. Caches results. - */ -function getSchemaValidatorsFor(metaEdModel: TopLevelEntity): ResourceSchemaValidators { - const cachedValidators: ResourceSchemaValidators | undefined = validatorCache.get(metaEdModel); - if (cachedValidators != null) return cachedValidators; - ajv = initializeAjv(); - const resourceValidators: ResourceSchemaValidators = { - insertValidator: ajv.compile(metaEdModel.data.edfiApiSchema.jsonSchemaForInsert), - updateValidator: ajv.compile(metaEdModel.data.edfiApiSchema.jsonSchemaForUpdate), - queryValidator: ajv.compile({ - ...metaEdModel.data.edfiApiSchema.jsonSchemaForInsert, - // Need to relax the validation such that no fields are "required" - required: [], - }), - }; - validatorCache.set(metaEdModel, resourceValidators); - return resourceValidators; -} - -/** - * Function to delete all item from validatorCache for testing purposes. - */ -export function clearAllValidatorCache(): void { - validatorCache.clear(); -} -/** - * Creates a new empty ResourceMatchResult object - */ -export function newResourceMatchResult(): ResourceMatchResult { - return { - resourceName: '', - isDescriptor: false, - exact: false, - suggestion: false, - matchingMetaEdModel: NoTopLevelEntity, - }; -} - -/** - * Finds the MetaEd entity name that matches the endpoint of the API request, or provides a suggestion - * if no match is found. - */ -export function matchResourceNameToMetaEd( - resourceName: string, - metaEd: MetaEdEnvironment, - namespace: string, -): ResourceMatchResult { - const matchingMetaEdModel: TopLevelEntity | undefined = getMetaEdModelForResourceName(resourceName, metaEd, namespace); - if (matchingMetaEdModel != null) { - return { - ...newResourceMatchResult(), - resourceName, - isDescriptor: matchingMetaEdModel.type === 'descriptor', - exact: true, - matchingMetaEdModel, - }; - } - - const suggestion = didYouMean(resourceName, getResourceNamesForProject(metaEd, namespace)); - if (suggestion == null) return newResourceMatchResult(); - - const suggestedName = Array.isArray(suggestion) ? suggestion[0] : suggestion; - return { ...newResourceMatchResult(), resourceName: suggestedName, suggestion: true }; -} - -/** - * Validate the JSON body of the request against the Joi schema for the MetaEd entity corresponding - * to the API endpoint. - */ -export function validateEntityBodyAgainstSchema( - metaEdModel: TopLevelEntity, - body: object, - isUpdate: boolean = false, -): ValidationError[] | null { - const resourceValidators: ResourceSchemaValidators = getSchemaValidatorsFor(metaEdModel); - const validator: ValidateFunction = isUpdate ? resourceValidators.updateValidator : resourceValidators.insertValidator; - - const isValid: boolean = validator(body); - - if (isValid) return null; - - return betterAjvErrors({ - data: body, - schema: isUpdate - ? metaEdModel.data.edfiApiSchema.jsonSchemaForUpdate - : metaEdModel.data.edfiApiSchema.jsonSchemaForInsert, - errors: validator.errors, - basePath: '{requestBody}', - }); -} - -/** - * Validates that those queryParameters which are present actually belong in the MetaEd entity. - */ -export function validateQueryParametersAgainstSchema( - metaEdModel: TopLevelEntity, - queryParameters: FrontendQueryParameters, -): string[] { - const { queryValidator } = getSchemaValidatorsFor(metaEdModel); - - let errors: string[] = []; - - /** - * Number and boolean are come through as strings, which causes ajv to fail validation of parameters - * This loops through all query parameters and checks the type against the schema, if the type is numeric or boolean - * it will attempt convert the value. If the conversion is good, we set the value back and ajv will validate the schema - * If the value can't be converted (i.e. a word is provided for a numeric value, we leave it and let ajv invalidate - * the schema). - */ - Object.keys(queryParameters).forEach((keyValue) => { - const property = metaEdModel.data.edfiApiSchema.jsonSchemaForInsert.properties[keyValue]; - - if (property != null && property.type != null) { - if ((property && property?.type === 'integer') || property.type === 'number') { - const value = Number(queryParameters[keyValue]); - if (!Number.isNaN(value)) { - queryParameters[keyValue] = value; - } - } - if (property.type === 'boolean' && (queryParameters[keyValue] === 'true' || queryParameters[keyValue] === 'false')) { - queryParameters[keyValue] = Boolean(queryParameters[keyValue]); - } - } - }); - - const isValid: boolean = queryValidator(queryParameters); - - if (isValid) return []; - - if (queryValidator.errors) { - const ajvErrors = queryValidator.errors.map((error: ErrorObject) => { - // When a parameter name is invalid instancePath is null thus only - // shows the error message which looks like the following: ' must NOT have additional properties' - if (error.instancePath === '' && error.keyword === 'additionalProperties') { - return `${metaEdModel.metaEdName} does not include property '${error.params.additionalProperty}'`; - } - return `${error.instancePath} ${error.message}` ?? ''; - }); - - errors = [...errors, ...ajvErrors]; - } - - return errors; -} diff --git a/Meadowlark-js/packages/meadowlark-core/src/metaed/ResourceNameMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/metaed/ResourceNameMapping.ts deleted file mode 100644 index 7cf8fdfe..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/metaed/ResourceNameMapping.ts +++ /dev/null @@ -1,136 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -/* eslint-disable no-restricted-syntax */ -import { - Association, - AssociationSubclass, - Descriptor, - DomainEntity, - DomainEntitySubclass, - MetaEdEnvironment, - normalizeDescriptorSuffix, - TopLevelEntity, -} from '@edfi/metaed-core'; -import { pluralize } from '@edfi/metaed-plugin-edfi-api-schema'; -import { decapitalize } from '../Utility'; - -/** - * A mapping of resource names to MetaEd models - */ -type ResourceNameToMetaEdModelMap = Map; - -/** - * A MetaEd project (AKA namespace) name - */ -type ProjectName = string; - -// simple cache implementation, see: https://rewind.io/blog/simple-caching-in-aws-lambda-functions/ -/** This is a cache of project names to a mapping of resource names to MetaEd model objects */ -let resourceMappingCache: Map = new Map(); - -/** - * For tests only - resets the resource mapping cache - */ -export function resetCache(): void { - resourceMappingCache = new Map(); -} - -/** - * Converts a MetaEd model name to its resource name - */ -function resourceNameFrom(metaEdName: string): string { - return pluralize(decapitalize(metaEdName)); -} - -/** - * Creates a mapping between resource names and the MetaEd model object that the resource - * refers to, for all model objects in the given MetaEd project. Caches the results for future calls. - * - * In the MetaEd internal model, each model object type in a project (namespace) is stored in a separate collection. - * For example, all core Domain Entities are in the collection "metaEd.namespace('EdFi').entity.domainEntity". - * We iterate through each model type that is expressed as an API resource. - */ -function getResourceNameMappingForNamespace(metaEd: MetaEdEnvironment, projectName: string): ResourceNameToMetaEdModelMap { - let resourceNameMapping: ResourceNameToMetaEdModelMap | undefined = resourceMappingCache.get(projectName); - if (resourceNameMapping != null) return resourceNameMapping; - - resourceNameMapping = new Map(); - - const domainEntities: IterableIterator | undefined = metaEd.namespace - .get(projectName) - ?.entity.domainEntity.values(); - if (domainEntities != null) { - for (const domainEntity of domainEntities) { - // Abstract entities are not resources (e.g. EducationOrganization) - if (!domainEntity.isAbstract) { - resourceNameMapping.set(resourceNameFrom(domainEntity.metaEdName), domainEntity); - } - } - } - - const associations: IterableIterator | undefined = metaEd.namespace - .get(projectName) - ?.entity.association.values(); - if (associations != null) { - for (const association of associations) { - // This is a workaround for the fact that the ODS/API required GeneralStudentProgramAssociation to - // be abstract although there is no MetaEd language annotation to make an Association abstract. - if (association.metaEdName !== 'GeneralStudentProgramAssociation') - resourceNameMapping.set(resourceNameFrom(association.metaEdName), association); - } - } - - const domainEntitySubclasses: IterableIterator | undefined = metaEd.namespace - .get(projectName) - ?.entity.domainEntitySubclass.values(); - if (domainEntitySubclasses != null) { - for (const domainEntitySubclass of domainEntitySubclasses) { - resourceNameMapping.set(resourceNameFrom(domainEntitySubclass.metaEdName), domainEntitySubclass); - } - } - - const associationSubclasses: IterableIterator | undefined = metaEd.namespace - .get(projectName) - ?.entity.associationSubclass.values(); - if (associationSubclasses != null) { - for (const associationSubclass of associationSubclasses) { - resourceNameMapping.set(resourceNameFrom(associationSubclass.metaEdName), associationSubclass); - } - } - - const descriptors: IterableIterator | undefined = metaEd.namespace - .get(projectName) - ?.entity.descriptor.values(); - if (descriptors != null) { - for (const descriptor of descriptors) { - resourceNameMapping.set(pluralize(normalizeDescriptorSuffix(decapitalize(descriptor.metaEdName))), descriptor); - } - } - - resourceMappingCache.set(projectName, resourceNameMapping); - return resourceNameMapping; -} - -/** - * Looks up the MetaEd model that a given resource name refers to, for a given MetaEd project. - * Returns top-level MetaEd entity matching the given resourceName, if it exists - */ -export function getMetaEdModelForResourceName( - resourceName: string, - metaEd: MetaEdEnvironment, - projectName: string, -): TopLevelEntity | undefined { - const localNamespace = projectName === 'ed-fi' ? 'EdFi' : projectName; - return getResourceNameMappingForNamespace(metaEd, localNamespace).get(resourceName); -} - -/** - * Returns all resource names for a given project name - */ -export function getResourceNamesForProject(metaEd: MetaEdEnvironment, projectName: string): string[] { - const adjustedProjectName = projectName === 'ed-fi' ? 'EdFi' : projectName; - return [...getResourceNameMappingForNamespace(metaEd, adjustedProjectName).keys()]; -} diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ApiSchemaLoadingMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ApiSchemaLoadingMiddleware.ts new file mode 100644 index 00000000..8bafa2de --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ApiSchemaLoadingMiddleware.ts @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { writeRequestToLog } from '../Logger'; +import { findApiSchema } from '../api-schema/ApiSchemaLoader'; +import type { MiddlewareModel } from './MiddlewareModel'; + +const moduleName = 'core.middleware.TimestampRequestMiddleware'; + +/** + * Creates a timestamp for the request. Can be used to total order inserts/updates when used in conjunction with the + * backend rejection of inserts/updates that do not provide an increasing timestamp. + */ +export async function loadApiSchema({ frontendRequest, frontendResponse }: MiddlewareModel): Promise { + // if there is a response already posted, we are done + if (frontendResponse != null) return { frontendRequest, frontendResponse }; + writeRequestToLog(moduleName, frontendRequest, 'loadApiSchema'); + + frontendRequest.middleware.apiSchema = await findApiSchema(frontendRequest.traceId); + return { frontendRequest, frontendResponse: null }; +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/AuthorizationMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/AuthorizationMiddleware.ts index b873b23a..ea6ebdf3 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/AuthorizationMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/AuthorizationMiddleware.ts @@ -59,7 +59,7 @@ type RequestOwnAccessTokenResult = { success: true; token: string } | { success: * or a FrontEndResponse with an error. */ async function requestOwnAccessToken(frontendRequest: FrontendRequest): Promise { - writeDebugStatusToLog(moduleName, frontendRequest, 'requestOwnAccessToken'); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'requestOwnAccessToken'); try { // Request a token for Meadowlark using configured OAuth server and configured Meadowlark credentials @@ -106,13 +106,13 @@ async function requestOwnAccessToken(frontendRequest: FrontendRequest): Promise< export async function authorize({ frontendRequest, frontendResponse }: MiddlewareModel): Promise { // if there is a response already posted, we are done if (frontendResponse != null) return { frontendRequest, frontendResponse }; - writeDebugStatusToLog(moduleName, frontendRequest, 'authorize'); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'authorize'); // if upstream has already provided security information, we are done if (frontendRequest.middleware.security !== UndefinedSecurity) { writeDebugStatusToLog( moduleName, - frontendRequest, + frontendRequest.traceId, 'authorize', undefined, 'credentials provided upstream, skipping OAuth server requests', @@ -125,7 +125,7 @@ export async function authorize({ frontendRequest, frontendResponse }: Middlewar if (clientBearerToken == null) { const statusCode = 400; - writeDebugStatusToLog(moduleName, frontendRequest, 'authorize', statusCode); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'authorize', statusCode); return { frontendRequest, frontendResponse: { @@ -143,7 +143,7 @@ export async function authorize({ frontendRequest, frontendResponse }: Middlewar if (isDebugEnabled()) { writeDebugStatusToLog( moduleName, - frontendRequest, + frontendRequest.traceId, 'authorize', undefined, `Client token authorized. Found ${clientBearerToken} in cache with remaining TTL ${getCachedClientsTokenInfo().getRemainingTTL( @@ -180,7 +180,7 @@ export async function authorize({ frontendRequest, frontendResponse }: Middlewar // Meadowlark own token is no longer valid -- most likely expired writeDebugStatusToLog( moduleName, - frontendRequest, + frontendRequest.traceId, 'authorize', undefined, `OAuth server responded that Meadowlark own token is not valid`, @@ -204,7 +204,7 @@ export async function authorize({ frontendRequest, frontendResponse }: Middlewar // Client-provided token is not a well-formed JWT writeDebugStatusToLog( moduleName, - frontendRequest, + frontendRequest.traceId, 'authorize', 400, 'verification response returned 400 - Client-provided token is not a JWT', @@ -219,7 +219,7 @@ export async function authorize({ frontendRequest, frontendResponse }: Middlewar if (!verificationResponse.data?.active) { // Client-provided token accepted by OAuth server but not active - writeDebugStatusToLog(moduleName, frontendRequest, 'authorize', 401, 'Client-provided token is inactive'); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'authorize', 401, 'Client-provided token is inactive'); return { frontendRequest, frontendResponse: { statusCode: 401 } }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ExtractDocumentInfoMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ExtractDocumentInfoMiddleware.ts index 1a26ef2b..c80de416 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ExtractDocumentInfoMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ExtractDocumentInfoMiddleware.ts @@ -6,7 +6,7 @@ import { writeDebugStatusToLog, writeRequestToLog } from '../Logger'; import { MiddlewareModel } from './MiddlewareModel'; import { DocumentInfo, NoDocumentInfo } from '../model/DocumentInfo'; -import { extractDocumentInfo } from '../extraction/DocumentInfoExtractor'; +import { buildDocumentInfo } from '../extraction/BuildDocumentInfo'; const moduleName = 'core.middleware.ExtractDocumentInfoMiddleware'; @@ -21,16 +21,16 @@ export async function documentInfoExtraction({ if (frontendResponse != null) return { frontendRequest, frontendResponse }; writeRequestToLog(moduleName, frontendRequest, 'documentInfoExtraction'); - const documentInfo: DocumentInfo = await extractDocumentInfo( - frontendRequest.middleware.resourceInfo, + const documentInfo: DocumentInfo = buildDocumentInfo( + frontendRequest.middleware.apiSchema, + frontendRequest.middleware.resourceSchema, frontendRequest.middleware.parsedBody, - frontendRequest.middleware.matchingMetaEdModel, frontendRequest.middleware.timestamp, ); if (documentInfo === NoDocumentInfo) { const statusCode = 404; - writeDebugStatusToLog(moduleName, frontendRequest, 'documentInfoExtraction', statusCode); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'documentInfoExtraction', statusCode); return { frontendRequest, frontendResponse: { statusCode, headers: frontendRequest.middleware.headerMetadata }, diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/FindMetaEdModelMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/FindMetaEdModelMiddleware.ts deleted file mode 100644 index e617d1d9..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/FindMetaEdModelMiddleware.ts +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { Logger } from '@edfi/meadowlark-utilities'; -import { writeDebugStatusToLog, writeRequestToLog } from '../Logger'; -import { MiddlewareModel } from './MiddlewareModel'; -import { findMetaEdModel } from '../metaed/MetaEdModelFinder'; - -const moduleName = 'core.middleware.FindMetaEdModelMiddleware'; - -/** - * Finds the matching MetaEd model from the path components - */ -export async function metaEdModelFinding({ frontendRequest, frontendResponse }: MiddlewareModel): Promise { - // if there is a response already posted, we are done - if (frontendResponse != null) return { frontendRequest, frontendResponse }; - writeRequestToLog(moduleName, frontendRequest, 'metaEdModelFinding'); - - const matchingMetaEdModel = await findMetaEdModel(frontendRequest.middleware.pathComponents); - if (matchingMetaEdModel == null) { - const errorMessage = `${moduleName}.metaEdModelFinding Fatal error - matchingMetaEdModel not found`; - Logger.error(errorMessage, frontendRequest.traceId); - const statusCode = 500; - writeDebugStatusToLog(moduleName, frontendRequest, 'metaEdModelFinding', statusCode, errorMessage); - return { - frontendRequest, - frontendResponse: { statusCode, headers: frontendRequest.middleware.headerMetadata }, - }; - } - Logger.debug( - `${moduleName}.metaEdModelMatching Found model ${matchingMetaEdModel.namespace.namespaceName}.${matchingMetaEdModel.metaEdName}`, - frontendRequest.traceId, - ); - - frontendRequest.middleware.matchingMetaEdModel = matchingMetaEdModel; - return { frontendRequest, frontendResponse: null }; -} diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ParseBodyMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ParseBodyMiddleware.ts index fb1273fa..2c47b41b 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ParseBodyMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ParseBodyMiddleware.ts @@ -18,7 +18,7 @@ export async function parseBody({ frontendRequest, frontendResponse }: Middlewar if (frontendRequest.body == null) { const error = 'Missing body'; - writeDebugStatusToLog(moduleName, frontendRequest, 'parseBody', 400, error); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'parseBody', 400, error); return { frontendRequest, frontendResponse: { body: { error }, statusCode: 400 } }; } @@ -27,7 +27,7 @@ export async function parseBody({ frontendRequest, frontendResponse }: Middlewar body = JSON.parse(frontendRequest.body); } catch (e) { const error = `Malformed body: ${e.message}`; - writeDebugStatusToLog(moduleName, frontendRequest, 'parseBody', 400, error); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'parseBody', 400, error); return { frontendRequest, frontendResponse: { body: { error }, statusCode: 400 } }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ParsePathMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ParsePathMiddleware.ts index ca8c0f53..31872661 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ParsePathMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ParsePathMiddleware.ts @@ -8,6 +8,10 @@ import { isDocumentUuidWellFormed } from '../model/DocumentIdentity'; import type { PathComponents } from '../model/PathComponents'; import type { DocumentUuid } from '../model/IdTypes'; import type { MiddlewareModel } from './MiddlewareModel'; +import { decapitalize } from '../Utility'; +import { EndpointName } from '../model/api-schema/EndpointName'; +import { ProjectNamespace } from '../model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../model/ProjectShortVersion'; const moduleName = 'core.middleware.ParsePathMiddleware'; @@ -16,7 +20,8 @@ export function pathComponentsFrom(path: string): PathComponents | null { // /v3.3b/ed-fi/Sections // /v3.3b/ed-fi/Sections/ // /v3.3b/ed-fi/Sections/idValue - const pathExpression = /\/(?[^/]+)\/(?[^/]+)\/(?[^/]+)(\/|$)((?[^/]*$))?/gm; + const pathExpression = + /\/(?[^/]+)\/(?[^/]+)\/(?[^/]+)(\/|$)((?[^/]*$))?/gm; const match = pathExpression.exec(path); if (match?.groups == null) { @@ -26,9 +31,9 @@ export function pathComponentsFrom(path: string): PathComponents | null { const { documentUuid } = match.groups ?? null; return { - version: match.groups.version, - namespace: match.groups.namespace, - resourceName: match.groups.resource, + projectShortVersion: match.groups.projectShortVersion as ProjectShortVersion, + projectNamespace: match.groups.projectNamespace.toLowerCase() as ProjectNamespace, + endpointName: decapitalize(match.groups.endpointName) as EndpointName, documentUuid: documentUuid as DocumentUuid, }; } @@ -44,13 +49,13 @@ export async function parsePath({ frontendRequest, frontendResponse }: Middlewar const pathComponents: PathComponents | null = pathComponentsFrom(frontendRequest.path); if (pathComponents === null) { - writeDebugStatusToLog(moduleName, frontendRequest, 'parsePath', 404); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'parsePath', 404); return { frontendRequest, frontendResponse: { statusCode: 404 } }; } const { documentUuid } = pathComponents; if (documentUuid != null && !isDocumentUuidWellFormed(documentUuid)) { - writeDebugStatusToLog(moduleName, frontendRequest, 'parsePath', 404, `Malformed resource id ${documentUuid}`); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'parsePath', 404, `Malformed resource id ${documentUuid}`); return { frontendRequest, frontendResponse: { statusCode: 404 } }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ResponseLoggingMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ResponseLoggingMiddleware.ts index b3271978..02760095 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ResponseLoggingMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ResponseLoggingMiddleware.ts @@ -5,7 +5,7 @@ import { Config } from '@edfi/meadowlark-utilities'; import * as R from 'ramda'; -import { writeDebugObject } from '../Logger'; +import { writeDebugStatusToLog } from '../Logger'; import { MissingIdentity } from '../model/DocumentIdentity'; import { MiddlewareModel } from './MiddlewareModel'; @@ -51,12 +51,13 @@ export async function logTheResponse({ frontendRequest, frontendResponse }: Midd } } - writeDebugObject( + writeDebugStatusToLog( moduleName, - frontendRequest, + frontendRequest.traceId, 'logTheResponse', frontendResponse?.statusCode, - R.is(String, responseBody) ? { error: responseBody } : responseBody, + typeof responseBody === 'string' ? responseBody : '', + typeof responseBody === 'object' ? responseBody : undefined, ); } diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/TimestampRequestMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/TimestampRequestMiddleware.ts index 8e2eb60e..e54d045e 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/TimestampRequestMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/TimestampRequestMiddleware.ts @@ -18,6 +18,11 @@ export async function timestampRequest({ frontendRequest, frontendResponse }: Mi writeRequestToLog(moduleName, frontendRequest, 'timestampRequest'); frontendRequest.middleware.timestamp = Date.now(); - writeDebugMessage(moduleName, frontendRequest, 'timestampRequest', `Timestamp: ${frontendRequest.middleware.timestamp}`); + writeDebugMessage( + moduleName, + 'timestampRequest', + frontendRequest.traceId, + `Timestamp: ${frontendRequest.middleware.timestamp}`, + ); return { frontendRequest, frontendResponse: null }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateDocumentMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateDocumentMiddleware.ts index a04639fc..fe5bfdb6 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateDocumentMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateDocumentMiddleware.ts @@ -4,7 +4,7 @@ // See the LICENSE and NOTICES files in the project root for more information. import { validateDocument } from '../validation/DocumentValidator'; -import { writeDebugObject, writeRequestToLog } from '../Logger'; +import { writeDebugStatusToLog, writeRequestToLog } from '../Logger'; import { MiddlewareModel } from './MiddlewareModel'; const moduleName = 'core.middleware.ValidateDocumentMiddleware'; @@ -17,15 +17,15 @@ export async function documentValidation({ frontendRequest, frontendResponse }: // if there is a response already posted, we are done if (frontendResponse != null) return { frontendRequest, frontendResponse }; writeRequestToLog(moduleName, frontendRequest, 'documentValidation'); - const error: object | null = await validateDocument( + const error: object | null = validateDocument( + frontendRequest.middleware.resourceSchema, frontendRequest.middleware.parsedBody, - frontendRequest.middleware.matchingMetaEdModel, isUpdate, ); if (error != null) { const statusCode = 400; - writeDebugObject(moduleName, frontendRequest, 'documentValidation', statusCode, error); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'documentValidation', statusCode, '', error); return { frontendRequest, frontendResponse: { body: error, statusCode, headers: frontendRequest.middleware.headerMetadata }, diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateResourceMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEndpointMiddleware.ts similarity index 61% rename from Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateResourceMiddleware.ts rename to Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEndpointMiddleware.ts index 698bb563..6ba0ee5a 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateResourceMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEndpointMiddleware.ts @@ -3,7 +3,7 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { validateResource } from '../validation/ResourceValidator'; +import { validateEndpoint } from '../validation/EndpointValidator'; import { writeDebugStatusToLog, writeRequestToLog } from '../Logger'; import { MiddlewareModel } from './MiddlewareModel'; import { NoResourceInfo } from '../model/ResourceInfo'; @@ -13,23 +13,24 @@ const moduleName = 'core.middleware.ValidateResourceMiddleware'; /** * Validates resource */ -export async function resourceValidation({ frontendRequest, frontendResponse }: MiddlewareModel): Promise { +export async function endpointValidation({ frontendRequest, frontendResponse }: MiddlewareModel): Promise { // if there is a response already posted, we are done if (frontendResponse != null) return { frontendRequest, frontendResponse }; writeRequestToLog(moduleName, frontendRequest, 'resourceValidation'); - const { - resourceInfo, - errorBody: error, - headerMetadata, - } = await validateResource(frontendRequest.middleware.pathComponents); + const { resourceSchema, resourceInfo, errorBody, headerMetadata } = await validateEndpoint( + frontendRequest.middleware.apiSchema, + frontendRequest.middleware.pathComponents, + frontendRequest.traceId, + ); - if (error != null) { + if (errorBody != null) { const statusCode = resourceInfo === NoResourceInfo ? 404 : 400; - writeDebugStatusToLog(moduleName, frontendRequest, 'resourceValidation', statusCode, undefined, error); - return { frontendRequest, frontendResponse: { body: error, statusCode, headers: headerMetadata } }; + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'resourceValidation', statusCode, undefined, errorBody); + return { frontendRequest, frontendResponse: { body: errorBody, statusCode, headers: headerMetadata } }; } + frontendRequest.middleware.resourceSchema = resourceSchema; frontendRequest.middleware.resourceInfo = resourceInfo; frontendRequest.middleware.headerMetadata = headerMetadata; return { frontendRequest, frontendResponse: null }; diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEqualityConstraintMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEqualityConstraintMiddleware.ts index 5a993727..6a05a18f 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEqualityConstraintMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateEqualityConstraintMiddleware.ts @@ -3,7 +3,7 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { writeDebugObject, writeRequestToLog } from '../Logger'; +import { writeDebugStatusToLog, writeRequestToLog } from '../Logger'; import { validateEqualityConstraints } from '../validation/EqualityConstraintValidator'; import { MiddlewareModel } from './MiddlewareModel'; @@ -22,14 +22,14 @@ export async function equalityConstraintValidation({ writeRequestToLog(moduleName, frontendRequest, 'equalityConstraintValidation'); const validationFailures: string[] = validateEqualityConstraints( - frontendRequest.middleware.matchingMetaEdModel, + frontendRequest.middleware.resourceSchema, frontendRequest.middleware.parsedBody, ); if (validationFailures.length > 0) { const error = { error: validationFailures }; const statusCode = 400; - writeDebugObject(moduleName, frontendRequest, 'documentValidation', statusCode, error); + writeDebugStatusToLog(moduleName, frontendRequest.traceId, 'documentValidation', statusCode, '', error); return { frontendRequest, frontendResponse: { body: error, statusCode, headers: frontendRequest.middleware.headerMetadata }, diff --git a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateQueryMiddleware.ts b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateQueryMiddleware.ts index 1e0bf672..899fc345 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateQueryMiddleware.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/middleware/ValidateQueryMiddleware.ts @@ -40,7 +40,7 @@ export async function queryValidation({ frontendRequest, frontendResponse }: Mid const removeDisallowedQueryParameters = R.omit(['offset', 'limit', 'totalCount']); const queryParameters = removeDisallowedQueryParameters(frontendRequest.queryParameters); - const { errorBody } = await validateQueryString(queryParameters, frontendRequest.middleware.matchingMetaEdModel); + const { errorBody } = validateQueryString(queryParameters, frontendRequest.middleware.resourceSchema); if (errorBody != null) { const statusCode = 400; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/BrandType.ts b/Meadowlark-js/packages/meadowlark-core/src/model/BrandType.ts new file mode 100644 index 00000000..194ad721 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/BrandType.ts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +// This is a generic "brand" type used to create branded types from strings +// Note this is a pure Typescript construct. The __brand property and usage of +// string literals for T do not exist after transpile. +export type Brand = K & { __brand: T }; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/DescriptorDocumentInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/model/DescriptorDocumentInfo.ts index c6546665..a62ec330 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/DescriptorDocumentInfo.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/DescriptorDocumentInfo.ts @@ -6,14 +6,19 @@ import { DescriptorDocument } from './DescriptorDocument'; import { DocumentIdentity } from './DocumentIdentity'; import { DocumentInfo, newDocumentInfo } from './DocumentInfo'; +import { DocumentObjectKey } from './api-schema/DocumentObjectKey'; + +const descriptorKey = 'descriptor' as DocumentObjectKey; /** * Creates a new DocumentIdentity from the given DescriptorDocument */ export function descriptorDocumentIdentityFrom(descriptorDocument: DescriptorDocument): DocumentIdentity { - return { - descriptor: `${descriptorDocument.namespace}#${descriptorDocument.codeValue}`, - }; + return [ + { + [descriptorKey]: `${descriptorDocument.namespace}#${descriptorDocument.codeValue}`, + }, + ]; } /** diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/DocumentIdentity.ts b/Meadowlark-js/packages/meadowlark-core/src/model/DocumentIdentity.ts index c529e1ba..57569184 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/DocumentIdentity.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/DocumentIdentity.ts @@ -3,24 +3,25 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { normalizeDescriptorSuffix } from '@edfi/metaed-core'; import crypto from 'node:crypto'; +import invariant from 'ts-invariant'; import { DocumentUuid, MeadowlarkId } from './IdTypes'; import type { BaseResourceInfo } from './ResourceInfo'; /** - * A DocumentIdentity is an object with key-value pairs that represents the complete identity of an Ed-Fi document. - * In Ed-Fi documents, these are always a list of document elements from the top level of the document - * (never nested in sub-objects, and never collections). The keys are the document path (dot-separated). - * - * This can be a series of key-value pairs because many documents have multiple values as part of their identity. + * A simple tuple containing the DocumentObjectKey and corresponding document value that makes up part of a document identity. */ -export type DocumentIdentity = { [key: string]: string }; +export type DocumentIdentityElement = { [documentObjectKey: string]: any }; /** - * The null object for DocumentIdentity + * A DocumentIdentity is an array of key-value pairs that represents the complete identity of an Ed-Fi document. + * In Ed-Fi documents, these are always a list of document elements from the top level of the document + * (never nested in sub-objects, and never collections). The keys are DocumentObjectKeys. A DocumentIdentity + * must maintain a strict ordering. + * + * This can be an array of key-value pairs because many documents have multiple values as part of their identity. */ -export const NoDocumentIdentity: DocumentIdentity = {}; +export type DocumentIdentity = DocumentIdentityElement[]; /* * For use in error messages @@ -40,7 +41,7 @@ function toBase64Url(base64: string): string { } /** - * Hashes a string with the SHAKE256, returning a Base64Url hash with the specified length given in bytes + * Hashes a string with SHAKE256, returning a Base64Url hash with the specified length given in bytes */ function toHash(data: string, lengthInBytes: number): string { return toBase64Url(crypto.createHash('shake256', { outputLength: lengthInBytes }).update(data).digest('base64')); @@ -49,20 +50,28 @@ function toHash(data: string, lengthInBytes: number): string { /** * Returns the 12 byte SHAKE256 Base64Url encoded hash form of a ResourceInfo. */ -export function resourceInfoHashFrom({ projectName, resourceName, isDescriptor }: BaseResourceInfo) { - const normalizedResourceName = isDescriptor ? normalizeDescriptorSuffix(resourceName) : resourceName; - const resourceInfoString = `${projectName}#${normalizedResourceName}`; - return toHash(resourceInfoString, 12); +export function resourceInfoHashFrom({ projectName, resourceName }: BaseResourceInfo) { + return toHash(`${projectName}#${resourceName}`, 12); } /** * Returns the 16 byte SHAKE256 Base64Url encoded hash form of a DocumentIdentity. */ function documentIdentityHashFrom(documentIdentity: DocumentIdentity): string { - const documentIdentityString = Object.keys(documentIdentity) - .sort() - .map((key) => `${key}=${documentIdentity[key]}`) + const documentIdentityString: string = documentIdentity + .map((element: DocumentIdentityElement) => { + const documentIdentityElementEntries: [string, any][] = Object.entries(element); + + invariant( + documentIdentityElementEntries.length === 1, + `DocumentIdentityElement for ${JSON.stringify(documentIdentity)} is invalid, must only have a single entry`, + ); + + const [documentKey, documentValue] = documentIdentityElementEntries[0]; + return `${documentKey}=${documentValue}`; + }) .join('#'); + return toHash(documentIdentityString, 16); } diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/DocumentInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/model/DocumentInfo.ts index da13e41b..2008b757 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/DocumentInfo.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/DocumentInfo.ts @@ -4,7 +4,6 @@ // See the LICENSE and NOTICES files in the project root for more information. import type { SuperclassInfo } from './SuperclassInfo'; -import { NoDocumentIdentity } from './DocumentIdentity'; import type { DocumentIdentity } from './DocumentIdentity'; import type { DocumentReference } from './DocumentReference'; @@ -43,7 +42,7 @@ export interface DocumentInfo { */ export function newDocumentInfo(): DocumentInfo { return { - documentIdentity: NoDocumentIdentity, + documentIdentity: [], superclassInfo: null, documentReferences: [], descriptorReferences: [], diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/DocumentReference.ts b/Meadowlark-js/packages/meadowlark-core/src/model/DocumentReference.ts index bdb5b457..3ff020ce 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/DocumentReference.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/DocumentReference.ts @@ -6,18 +6,20 @@ import { MeadowlarkId } from './IdTypes'; import { meadowlarkIdForDocumentIdentity } from './DocumentIdentity'; import type { DocumentIdentity } from './DocumentIdentity'; +import { MetaEdProjectName } from './api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from './api-schema/MetaEdResourceName'; export type DocumentReference = { /** * The MetaEd project name the API document resource is defined in e.g. "EdFi" for a data standard entity. */ - projectName: string; + projectName: MetaEdProjectName; /** * The name of the resource. Typically, this is the same as the corresponding MetaEd entity name. However, * there are exceptions, for example descriptors have a "Descriptor" suffix on their resource name. */ - resourceName: string; + resourceName: MetaEdResourceName; /** * Whether this document is a descriptor. Descriptors are treated differently from other documents diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/IdTypes.ts b/Meadowlark-js/packages/meadowlark-core/src/model/IdTypes.ts index ebe8d17a..c9954a71 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/IdTypes.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/IdTypes.ts @@ -3,10 +3,7 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -// This is a generic "brand" type used to create branded types from strings -// Note this is a pure Typescript construct. The __brand property and usage of -// string literals for T do not exist after transpile. -type Brand = K & { __brand: T }; +import { Brand } from './BrandType'; // A string type branded as a documentUuid export type DocumentUuid = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/PathComponents.ts b/Meadowlark-js/packages/meadowlark-core/src/model/PathComponents.ts index 1a7c42a4..58523ed7 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/PathComponents.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/PathComponents.ts @@ -4,32 +4,47 @@ // See the LICENSE and NOTICES files in the project root for more information. import { DocumentUuid } from './IdTypes'; +import { ProjectShortVersion } from './ProjectShortVersion'; +import { EndpointName } from './api-schema/EndpointName'; +import { ProjectNamespace } from './api-schema/ProjectNamespace'; +/** + * The important parts of the request URL in object form + */ export type PathComponents = { /** - * Data standard version number + * Shortened project version number e.g. "v3.3b" */ - version: string; + projectShortVersion: ProjectShortVersion; + /** - * Data standard namespace + * Project namespace, all lowercased */ - namespace: string; + projectNamespace: ProjectNamespace; + /** - * Endpoint name (resource) + * Endpoint name, which has been decapitalized */ - resourceName: string; + endpointName: EndpointName; + /** * The resource identifier, which is a document uuid */ documentUuid?: DocumentUuid; }; -export function newPathComponents() { +/** + * Create a new PathComponents + */ +export function newPathComponents(): PathComponents { return { - version: '', - namespace: '', - resourceName: '', + projectShortVersion: '' as ProjectShortVersion, + projectNamespace: '' as ProjectNamespace, + endpointName: '' as EndpointName, }; } -export const NoPathComponents = Object.freeze(newPathComponents()); +/** + * The null object for PathComponents + */ +export const NoPathComponents: PathComponents = Object.freeze(newPathComponents()); diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/ProjectShortVersion.ts b/Meadowlark-js/packages/meadowlark-core/src/model/ProjectShortVersion.ts new file mode 100644 index 00000000..d66fd4d7 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/ProjectShortVersion.ts @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. +import { Brand } from './BrandType'; + +/** + * A string type branded as a ProjectShortVersion, which is a shortened form of a project version + * e.g. "v3.3b" for the Ed-Fi data standard version "3.3.1-b". + */ + +export type ProjectShortVersion = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/ResourceInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/model/ResourceInfo.ts index 9ce12ee0..ca1b5efa 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/ResourceInfo.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/ResourceInfo.ts @@ -3,20 +3,25 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. +import { SemVer } from './api-schema/SemVer'; +import { MetaEdProjectName } from './api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from './api-schema/MetaEdResourceName'; + /** - * Base API resource information + * Base API resource information for passing along to backends */ export interface BaseResourceInfo { /** - * The MetaEd project name the API document resource is defined in e.g. "EdFi" for a data standard entity. + * The project name the API document resource is defined in e.g. "EdFi" for a data standard entity. */ - projectName: string; + projectName: MetaEdProjectName; /** * The name of the resource. Typically, this is the same as the corresponding MetaEd entity name. However, * there are exceptions, for example descriptors have a "Descriptor" suffix on their resource name. */ - resourceName: string; + resourceName: MetaEdResourceName; + /** * Whether this resource is a descriptor. Descriptors are treated differently from other documents */ @@ -28,9 +33,9 @@ export interface BaseResourceInfo { */ export interface ResourceInfo extends BaseResourceInfo { /** - * The MetaEd project version the entity belongs to. + * The project version the resource belongs to. */ - resourceVersion: string; + resourceVersion: SemVer; allowIdentityUpdates: boolean; } @@ -40,10 +45,10 @@ export interface ResourceInfo extends BaseResourceInfo { */ export function newResourceInfo(): ResourceInfo { return { - resourceName: '', + resourceName: '' as MetaEdResourceName, isDescriptor: false, - projectName: '', - resourceVersion: '', + projectName: '' as MetaEdProjectName, + resourceVersion: '' as SemVer, allowIdentityUpdates: false, }; } @@ -51,10 +56,10 @@ export function newResourceInfo(): ResourceInfo { /** * The null object for ResourceInfo */ -export const NoResourceInfo = Object.freeze({ - ...newResourceInfo(), - resourceName: 'NoResourceName', - projectName: 'NoProjectName', - namespace: 'NoNamespace', - resourceVersion: '0.0.0', +export const NoResourceInfo: ResourceInfo = Object.freeze({ + resourceName: 'NoResourceName' as MetaEdResourceName, + projectName: 'NoProjectName' as MetaEdProjectName, + resourceVersion: '0.0.0' as SemVer, + allowIdentityUpdates: false, + isDescriptor: false, }); diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/ResourceMatchResult.ts b/Meadowlark-js/packages/meadowlark-core/src/model/ResourceMatchResult.ts deleted file mode 100644 index 27594771..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/model/ResourceMatchResult.ts +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { TopLevelEntity } from '@edfi/metaed-core'; - -/** The result of an attempt to match a resource name to a MetaEd model object */ -export type ResourceMatchResult = { - /** - * The resource name resulting from the match attempt. Either an exact match, a suggestion, - * or the empty string - */ - resourceName: string; - - /** - * Whether this match is with a descriptor - */ - isDescriptor: boolean; - - /** - * True if the resourceName is an exact match - */ - exact: boolean; - - /** - * True if the resourceName is a suggestion - */ - suggestion: boolean; - - /** - * If resourceName is an exact match, this is the matching MetaEd model object. - * Otherwise, it's a null object. - */ - matchingMetaEdModel: TopLevelEntity; -}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/SchoolYearEnumerationDocumentInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/model/SchoolYearEnumerationDocumentInfo.ts index 15500024..9c485d5a 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/SchoolYearEnumerationDocumentInfo.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/SchoolYearEnumerationDocumentInfo.ts @@ -6,6 +6,9 @@ import { SchoolYearEnumerationDocument } from './SchoolYearEnumerationDocument'; import { DocumentIdentity } from './DocumentIdentity'; import { DocumentInfo, newDocumentInfo } from './DocumentInfo'; +import { DocumentObjectKey } from './api-schema/DocumentObjectKey'; + +const schoolYearKey = 'schoolYear' as DocumentObjectKey; /** * Creates a new DocumentIdentity from the given SchoolYearEnumerationDocument @@ -13,9 +16,7 @@ import { DocumentInfo, newDocumentInfo } from './DocumentInfo'; export function schoolYearEnumerationDocumentIdentityFrom( schoolYearEnumerationDocument: SchoolYearEnumerationDocument, ): DocumentIdentity { - return { - schoolYear: schoolYearEnumerationDocument.schoolYear.toString(), - }; + return [{ [schoolYearKey]: schoolYearEnumerationDocument.schoolYear.toString() }]; } /** diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/SuperclassInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/model/SuperclassInfo.ts index 0b0abcd6..1e40b578 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/model/SuperclassInfo.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/model/SuperclassInfo.ts @@ -4,9 +4,11 @@ // See the LICENSE and NOTICES files in the project root for more information. import { MeadowlarkId } from './IdTypes'; -import { meadowlarkIdForDocumentIdentity, NoDocumentIdentity } from './DocumentIdentity'; +import { meadowlarkIdForDocumentIdentity } from './DocumentIdentity'; import type { DocumentIdentity } from './DocumentIdentity'; import type { BaseResourceInfo } from './ResourceInfo'; +import { MetaEdProjectName } from './api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from './api-schema/MetaEdResourceName'; /** * The optional superclass information for a DocumentInfo. Applies only to documents that are subclasses, @@ -31,7 +33,7 @@ export type SuperclassInfo = { * and it subclasses GeneralStudentProgramAssociation from the data standard. * The project name would be 'Ed-Fi'. */ - projectName: string; + projectName: MetaEdProjectName; /** * This is the resource name of the superclass. @@ -39,7 +41,7 @@ export type SuperclassInfo = { * Example: If the entity for this mapping is School (subclass of EducationOrganization), * then the resourceName would be EducationOrganization. */ - resourceName: string; + resourceName: MetaEdResourceName; }; /** @@ -47,9 +49,9 @@ export type SuperclassInfo = { */ export function newSuperclassInfo(): SuperclassInfo { return { - documentIdentity: NoDocumentIdentity, - projectName: '', - resourceName: '', + documentIdentity: [], + projectName: '' as MetaEdProjectName, + resourceName: '' as MetaEdResourceName, }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceInfo.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceInfo.ts new file mode 100644 index 00000000..c8b740a6 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceInfo.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { DocumentObjectKey } from './DocumentObjectKey'; + +export type AbstractResourceInfo = { + /** + * A list of the DocumentObjectKey paths that are part of the identity for this resource, in lexical order. + * Duplicates due to key unification are removed. + */ + identityPathOrder: DocumentObjectKey[]; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceMapping.ts new file mode 100644 index 00000000..1f9a9e5a --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/AbstractResourceMapping.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { AbstractResourceInfo } from './AbstractResourceInfo'; +import { MetaEdResourceName } from './MetaEdResourceName'; + +/** + * A collection of ResourceNames mapped to AbstractResourceInfo + */ +export type AbstractResourceMapping = { + [key: MetaEdResourceName]: AbstractResourceInfo; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ApiSchema.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ApiSchema.ts new file mode 100644 index 00000000..437636e4 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ApiSchema.ts @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { ProjectNameMapping } from './ProjectNameMapping'; +import { ProjectSchemaMapping } from './ProjectSchemaMapping'; + +/** + * API information + */ +export type ApiSchema = { + /** + * A collection of ProjectNamespaces mapped to ProjectSchema objects + */ + projectSchemas: ProjectSchemaMapping; + + /** + * A collection of MetaEdProjectNames mapped to ProjectNamespaces. + */ + projectNameMapping: ProjectNameMapping; +}; + +export function newApiSchema(): ApiSchema { + return { projectSchemas: {}, projectNameMapping: {} }; +} + +export const NoApiSchema: ApiSchema = Object.freeze(newApiSchema()); diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentObjectKey.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentObjectKey.ts new file mode 100644 index 00000000..497db03e --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentObjectKey.ts @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Brand } from '../BrandType'; + +/** + * A string type branded as a DocumentObjectKey, which is standard JSON document object key + */ +export type DocumentObjectKey = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPaths.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPaths.ts new file mode 100644 index 00000000..ba8462bc --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPaths.ts @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { DocumentObjectKey } from './DocumentObjectKey'; +import { JsonPath } from './JsonPath'; +import { MetaEdProjectName } from './MetaEdProjectName'; +import { MetaEdResourceName } from './MetaEdResourceName'; + +type BaseDocumentPaths = { + /** + * A mapping of unique DocumentObjectKeys to JsonPaths. This is used as a building block for document identities + * and document references, where the JsonPaths can later be turned into the values in a document, and the keys + * indicate what the value represents. + * + * As an example, these are the JsonPaths for CourseOffering on Section, a reference with four fields: + * + * { + * localCourseCode: '$.courseOfferingReference.localCourseCode', + * schoolId: '$.courseOfferingReference.schoolId', + * schoolYear: '$.courseOfferingReference.schoolYear', + * sessionName: '$.courseOfferingReference.sessionName', + * } + */ + paths: { [key: DocumentObjectKey]: JsonPath }; + + /** + * An ordering of the paths by DocumentObjectKey, used to ensure consistent ordering downstream. + */ + pathOrder: DocumentObjectKey[]; +}; + +/** + * JsonPath information for a reference MetaEd property + */ +export type ReferencePaths = BaseDocumentPaths & { + /** + * Discriminator between reference and scalar path types + */ + isReference: true; + + /** + * The MetaEd project name the referenced API resource is defined in e.g. "EdFi" for a data standard entity. + */ + projectName: MetaEdProjectName; + + /** + * The name of the referenced API resource. Typically, this is the same as the corresponding MetaEd entity name. However, + * there are exceptions, for example descriptors have a "Descriptor" suffix on their resource name. + */ + resourceName: MetaEdResourceName; + + /** + * Whether this reference is a descriptor. Descriptors are treated differently from other documents + */ + isDescriptor: boolean; +}; + +/** + * A JsonPath for a scalar MetaEd property + */ +export type ScalarPath = BaseDocumentPaths & { + /** + * Discriminator between reference and scalar path types + */ + isReference: false; +}; + +/** + * DocumentPaths provides JsonPaths to values corresponding to reference and scalar MetaEd properties in a resource document. + */ +export type DocumentPaths = ReferencePaths | ScalarPath; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPathsMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPathsMapping.ts new file mode 100644 index 00000000..11aba79a --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/DocumentPathsMapping.ts @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { DocumentPaths } from './DocumentPaths'; +import { MetaEdPropertyFullName } from './MetaEdPropertyFullName'; + +/** + */ +export type DocumentPathsMapping = { [key: MetaEdPropertyFullName]: DocumentPaths }; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EndpointName.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EndpointName.ts new file mode 100644 index 00000000..28cd19a8 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EndpointName.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Brand } from '../BrandType'; + +/** + * A string type branded as an EndpointName, which is the name of an API resource endpoint. Typically, this is the same + * as a decapitalized MetaEd entity name. However, there are exceptions, for example descriptors have a + * "Descriptor" suffix on their endpoint name. + */ + +export type EndpointName = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EqualityConstraint.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EqualityConstraint.ts new file mode 100644 index 00000000..d1f2ab3a --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/EqualityConstraint.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { JsonPath } from './JsonPath'; + +/** + * A pair of JsonPaths, the value of which must be equal in an Ed-Fi API JSON document. + */ +export type EqualityConstraint = { + sourceJsonPath: JsonPath; + targetJsonPath: JsonPath; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonPath.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonPath.ts new file mode 100644 index 00000000..8e8101e8 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonPath.ts @@ -0,0 +1,8 @@ +import { Brand } from '../BrandType'; + +/** + * A string type branded as a JsonPath, which is a standard JSONPath expression. + * See https://goessner.net/articles/JsonPath/index.html + */ + +export type JsonPath = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonSchema.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonSchema.ts new file mode 100644 index 00000000..e2f2790c --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/JsonSchema.ts @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +/* eslint-disable no-use-before-define */ // Due to recursive references + +/** + * SchemaProperty is either an object, array, or simple type + */ +export type SchemaProperty = + | SchemaObject + | SchemaArray + | { type: 'string'; description: string; format?: 'date' | 'date-time' | 'time'; minLength?: number; maxLength?: number } + | { type: 'integer'; description: string; minimum?: number; maximum?: number } + | { type: 'number'; description: string; minimum?: number; maximum?: number } + | { type: 'boolean'; description: string }; + +/** + * The set of properties on a SchemaObject. + */ +export type SchemaProperties = { [propertyName: string]: SchemaProperty }; + +/** + * SchemaObject is the SchemaProperty representing an object, which has properties + */ +export type SchemaObject = { + type: 'object'; + description?: string; + properties: SchemaProperties; + additionalProperties: boolean; + required?: string[]; +}; + +/** + * SchemaArray is the SchemaProperty representing an array, which has items + */ +export type SchemaArray = { + type: 'array'; + description?: string; + items: SchemaProperty; + minItems: number; + uniqueItems: false; +}; + +/** + * A SchemaRoot is a SchemaObject with additional header fields + */ +export type SchemaRoot = SchemaObject & { + $schema: string; + title: string; +}; + +/** + * The SchemaRoot null object + */ +export const NoSchemaRoot: SchemaRoot = Object.freeze({ + type: 'object', + properties: {}, + additionalProperties: false, + $schema: '', + title: 'NoSchemaRoot', +}); diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdProjectName.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdProjectName.ts new file mode 100644 index 00000000..e15e33b6 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdProjectName.ts @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. +import { Brand } from '../BrandType'; + +/** + * A string type branded as a MetaEdProjectName, which is the MetaEd project name for a collection of + * API resources, e.g. "EdFi" for an Ed-Fi data standard version. + */ + +export type MetaEdProjectName = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyFullName.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyFullName.ts new file mode 100644 index 00000000..048aa607 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyFullName.ts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Brand } from '../BrandType'; + +/** + * A string type branded as a MetaEdPropertyFullName, which is the full property name of a MetaEd + * property on a MetaEd entity. Role names on a property are expressed by prefix on the property name. + */ + +export type MetaEdPropertyFullName = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyPath.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyPath.ts new file mode 100644 index 00000000..9a57c308 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdPropertyPath.ts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Brand } from '../BrandType'; + +/** + * A string type branded as a MetaEdPropertyPath, which is a dot-separated MetaEd property name list + * denoting a path from a starting entity through other entities. Role names on a property + * are expressed by prefix on the property name. Most commonly used as a merge directive path. + */ +export type MetaEdPropertyPath = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdResourceName.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdResourceName.ts new file mode 100644 index 00000000..1e41f747 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/MetaEdResourceName.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Brand } from '../BrandType'; + +/** + * A string type branded as a MetaEdResourceName, which is the name of an API resource. Typically, this is the same + * as the corresponding MetaEd entity name. However, there are exceptions, for example descriptors have a + * "Descriptor" suffix on their resource name. + */ + +export type MetaEdResourceName = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNameMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNameMapping.ts new file mode 100644 index 00000000..8366fd9d --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNameMapping.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { MetaEdProjectName } from './MetaEdProjectName'; +import { ProjectNamespace } from './ProjectNamespace'; + +/** + * A collection of MetaEdProjectNames mapped to ProjectNamespaces. + */ +export type ProjectNameMapping = { + [key: MetaEdProjectName]: ProjectNamespace; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNamespace.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNamespace.ts new file mode 100644 index 00000000..56f62978 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectNamespace.ts @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. +import { Brand } from '../BrandType'; + +/** + * A string type branded as a ProjectNamespace, which is the URI path component referring to a ProjectSchema + * e.g. "ed-fi" for an Ed-Fi data standard version. + */ + +export type ProjectNamespace = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchema.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchema.ts new file mode 100644 index 00000000..52ea5d5a --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchema.ts @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { AbstractResourceMapping } from './AbstractResourceMapping'; +import { MetaEdProjectName } from './MetaEdProjectName'; +import { ResourceNameMapping } from './ResourceNameMapping'; +import { ResourceSchema } from './ResourceSchema'; +import { ResourceSchemaMapping } from './ResourceSchemaMapping'; +import { SemVer } from './SemVer'; + +/** + * API project information + */ +export type ProjectSchema = { + /** + * The MetaEd project name the referenced API resource is defined in e.g. "EdFi" for a data standard entity. + */ + projectName: MetaEdProjectName; + projectVersion: SemVer; + isExtensionProject: boolean; + description: string; + + /** + * A collection of EndpointNames mapped to ResourceSchema objects. + */ + resourceSchemas: ResourceSchemaMapping; + + /** + * A collection of ResourceNames mapped to EndpointNames + */ + resourceNameMapping: ResourceNameMapping; + + /** + * SchoolYearEnumeration is not a resource but has a ResourceSchema + */ + schoolYearEnumeration?: ResourceSchema; + + /** + * A collection of ResourceNames of abstract resources (that don't materialize to endpoints) mapped to + * AbstractResourceInfos + */ + abstractResources: AbstractResourceMapping; +}; + +export const NoProjectSchema: ProjectSchema = { + projectName: 'NoProjectName' as MetaEdProjectName, + projectVersion: '0.0.0' as SemVer, + isExtensionProject: false, + description: 'NoProjectSchema', + resourceSchemas: {}, + resourceNameMapping: {}, + abstractResources: {}, +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchemaMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchemaMapping.ts new file mode 100644 index 00000000..74075aae --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ProjectSchemaMapping.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { ProjectNamespace } from './ProjectNamespace'; +import { ProjectSchema } from './ProjectSchema'; + +/** + * A collection of ProjectNamespaces mapped to ProjectSchema objects. + */ +export type ProjectSchemaMapping = { + [key: ProjectNamespace]: ProjectSchema; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceNameMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceNameMapping.ts new file mode 100644 index 00000000..ad65dfb3 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceNameMapping.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { EndpointName } from './EndpointName'; +import { MetaEdResourceName } from './MetaEdResourceName'; + +/** + * A collection of ResourceNames mapped to EndpointNames + */ +export type ResourceNameMapping = { + [key: MetaEdResourceName]: EndpointName; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchema.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchema.ts new file mode 100644 index 00000000..555f014b --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchema.ts @@ -0,0 +1,145 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { EqualityConstraint } from './EqualityConstraint'; +import { DocumentPaths } from './DocumentPaths'; +import { NoSchemaRoot, SchemaRoot } from './JsonSchema'; +import { MetaEdPropertyFullName } from './MetaEdPropertyFullName'; +import { MetaEdResourceName } from './MetaEdResourceName'; +import { MetaEdProjectName } from './MetaEdProjectName'; +import { DocumentObjectKey } from './DocumentObjectKey'; + +/** + * API resource schema information common between regular and subclass resources + */ +export type BaseResourceSchema = { + /** + * The resource name. Typically, this is the entity metaEdName. + */ + resourceName: MetaEdResourceName; + + /** + * Whether this resource is a descriptor. Descriptors are treated differently from other resources + */ + isDescriptor: boolean; + + /** + * Whether this resource is a schoolYearEnumeration. They are treated differently from other resources + */ + isSchoolYearEnumeration: boolean; + + /** + * Whether API clients are permitted to modify the identity of an existing resource document. + */ + allowIdentityUpdates: boolean; + + /** + * The API document JSON schema that corresponds to this resource on insert. + */ + jsonSchemaForInsert: SchemaRoot; + + /** + * The API document JSON schema that corresponds to this resource on update. + */ + jsonSchemaForUpdate: SchemaRoot; + + /** + * The API document JSON schema that corresponds to this resource on query. + */ + jsonSchemaForQuery: SchemaRoot; + + /** + * A list of EqualityConstraints to be applied to a resource document. An EqualityConstraint + * is a source/target JsonPath pair. + */ + equalityConstraints: EqualityConstraint[]; + + /** + * A list of the MetaEd property fullnames for each property that is part of the identity + * for this resource, in lexical order + */ + identityFullnames: MetaEdPropertyFullName[]; + + /** + * A list of the DocumentObjectKey paths that are part of the identity for this resource, in lexical order. + * Duplicates due to key unification are removed. + */ + identityPathOrder: DocumentObjectKey[]; + + /** + * A collection of MetaEd property fullnames mapped to DocumentPaths objects, + * which provide JsonPaths to the corresponding values in a resource document. + */ + documentPathsMapping: { [key: MetaEdPropertyFullName]: DocumentPaths }; +}; + +/** + * The additional ResourceSchema fields for an Association subclass + */ +export type AssociationSubclassResourceSchema = BaseResourceSchema & { + /** + * The project name and resource name for the superclass + */ + superclassProjectName: MetaEdProjectName; + superclassResourceName: MetaEdResourceName; +}; + +/** + * The additional ResourceSchema fields for a DomainEntity subclass + */ +export type DomainEntitySubclassResourceSchema = AssociationSubclassResourceSchema & { + /** + * The superclass identity field and the matching subclass identity field name. + * This is found in MetaEd as an "identity rename". MetaEd only allows the super/subclass + * relationship of Domain Entities to have a single common identity field. + */ + superclassIdentityDocumentKey: DocumentObjectKey; + subclassIdentityDocumentKey: DocumentObjectKey; +}; + +/** + * API resource schema information as a whole, with "isSubclass" as a differentiator between + * regular and subclass resources. + */ +export type ResourceSchema = + | (BaseResourceSchema & { + isSubclass: false; + }) + | (AssociationSubclassResourceSchema & { + isSubclass: true; + subclassType: 'association'; + }) + | (DomainEntitySubclassResourceSchema & { + isSubclass: true; + subclassType: 'domainEntity'; + }); + +/** + * Creates an empty ResourceSchema + */ +export function newResourceSchema(): ResourceSchema { + return { + resourceName: '' as MetaEdResourceName, + isDescriptor: false, + isSchoolYearEnumeration: false, + allowIdentityUpdates: false, + jsonSchemaForInsert: NoSchemaRoot, + jsonSchemaForUpdate: NoSchemaRoot, + jsonSchemaForQuery: NoSchemaRoot, + equalityConstraints: [], + identityFullnames: [], + identityPathOrder: [], + documentPathsMapping: {}, + isSubclass: false, + }; +} + +/** + * The ResourceSchema null object + */ +export const NoResourceSchema: ResourceSchema = Object.freeze({ + ...newResourceSchema(), + resourceName: 'NoResourceSchema' as MetaEdResourceName, +}); diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchemaMapping.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchemaMapping.ts new file mode 100644 index 00000000..67a8ab4e --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/ResourceSchemaMapping.ts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { EndpointName } from './EndpointName'; +import { ResourceSchema } from './ResourceSchema'; + +/** + * A collection of EndpointNames mapped to ResourceSchema objects. + */ +export type ResourceSchemaMapping = { + [key: EndpointName]: ResourceSchema; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/SemVer.ts b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/SemVer.ts new file mode 100644 index 00000000..f50062d1 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/model/api-schema/SemVer.ts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Brand } from '../BrandType'; + +/** + * A string type branded as a SemVer, which is a semantic version string. + * See https://semver.org/spec/v2.0.0.html + */ + +export type SemVer = Brand; diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/DocumentValidator.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/DocumentValidator.ts index 8ec8ed68..fd85b967 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/validation/DocumentValidator.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/validation/DocumentValidator.ts @@ -2,22 +2,34 @@ // Licensed to the Ed-Fi Alliance under one or more agreements. // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { TopLevelEntity } from '@edfi/metaed-core'; -import type { ValidationError } from '@apideck/better-ajv-errors'; -import { validateEntityBodyAgainstSchema } from '../metaed/MetaEdValidation'; +import { betterAjvErrors, type ValidationError } from '@apideck/better-ajv-errors'; +import { ValidateFunction } from 'ajv'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; +import { ResourceSchemaValidators, getSchemaValidatorsFor } from './ResourceSchemaValidation'; export type ValidationFailure = { error: ValidationError[] | null }; /** - * Performs validation of a document against a resource. - * - * Validates the request body for the resource. If invalid, returns an error message. + * Validate the JSON body of the request against the JSON schema for the corresponding API resource */ -export async function validateDocument( +export function validateDocument( + resourceSchema: ResourceSchema, body: object, - matchingMetaEdModel: TopLevelEntity, isUpdate: boolean = false, -): Promise { - const validationErrors: ValidationError[] | null = validateEntityBodyAgainstSchema(matchingMetaEdModel, body, isUpdate); +): ValidationFailure | null { + const resourceValidators: ResourceSchemaValidators = getSchemaValidatorsFor(resourceSchema); + const validator: ValidateFunction = isUpdate ? resourceValidators.updateValidator : resourceValidators.insertValidator; + + const isValid: boolean = validator(body); + + if (isValid) return null; + + const validationErrors: ValidationError[] | null = betterAjvErrors({ + data: body, + schema: isUpdate ? resourceSchema.jsonSchemaForUpdate : resourceSchema.jsonSchemaForInsert, + errors: validator.errors, + basePath: '{requestBody}', + }); + return validationErrors == null ? null : { error: validationErrors }; } diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidationResult.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidationResult.ts new file mode 100644 index 00000000..225345f4 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidationResult.ts @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { ResourceInfo } from '../model/ResourceInfo'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; + +export type EndpointValidationResult = { + /** + * Metadata for the MetaEd project loaded + */ + headerMetadata?: any; + /** + * Error message for validation failure + */ + errorBody?: {}; + /** + * Information on the validated MetaEd entity matching the API request + */ + resourceInfo: ResourceInfo; + + /** + * The ResourceSchema for the endpoint + */ + resourceSchema: ResourceSchema; +}; diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidator.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidator.ts new file mode 100644 index 00000000..2b8e3502 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/validation/EndpointValidator.ts @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import didYouMean from 'didyoumean2'; +import { PathComponents } from '../model/PathComponents'; +import { NoResourceInfo } from '../model/ResourceInfo'; +import { TraceId } from '../model/IdTypes'; +import { NoResourceSchema, ResourceSchema } from '../model/api-schema/ResourceSchema'; +import { findResourceSchema } from '../api-schema/ResourceSchemaFinder'; +import { EndpointName } from '../model/api-schema/EndpointName'; +import { ProjectSchema } from '../model/api-schema/ProjectSchema'; +import { EndpointValidationResult } from './EndpointValidationResult'; +import { ApiSchema } from '../model/api-schema/ApiSchema'; +import { ProjectNamespace } from '../model/api-schema/ProjectNamespace'; +import { findProjectSchema } from '../api-schema/ProjectSchemaFinder'; + +/** The result of an attempt to match an EndpointName with a ResourceSchema */ +type MatchResourceSchemaResult = { + /** + * If the endpointName is not a match but a suggestion was available, this is the suggested EndpointName + */ + suggestedEndpointName?: EndpointName; + + /** + * If endpointName is an exact match this is the matching ResourceSchema. + */ + matchingResourceSchema?: ResourceSchema; +}; + +/** + * Returns a list of the valid endpoint names for a ProjectNamespace. + */ +function validEndpointNamesFor(apiSchema: ApiSchema, projectNamespace: ProjectNamespace): EndpointName[] { + return Object.keys(apiSchema.projectSchemas[projectNamespace].resourceSchemas) as EndpointName[]; +} + +/** + * Finds the ResourceSchema that matches the EndpointName of the API request, or provides a suggestion + * if no match is found. + */ +async function matchResourceSchema( + apiSchema: ApiSchema, + pathComponents: PathComponents, + traceId: TraceId, +): Promise { + const matchingResourceSchema: ResourceSchema | undefined = await findResourceSchema(apiSchema, pathComponents, traceId); + if (matchingResourceSchema != null) { + return { matchingResourceSchema }; + } + + const suggestion = didYouMean( + pathComponents.endpointName, + validEndpointNamesFor(apiSchema, pathComponents.projectNamespace), + ); + if (suggestion == null) return {}; + + const suggestedEndpointName = Array.isArray(suggestion) ? suggestion[0] : suggestion; + return { suggestedEndpointName }; +} + +/** + * Validates that an endpoint maps to a ResourceSchema + */ +export async function validateEndpoint( + apiSchema: ApiSchema, + pathComponents: PathComponents, + traceId: TraceId, +): Promise { + const { matchingResourceSchema, suggestedEndpointName } = await matchResourceSchema(apiSchema, pathComponents, traceId); + + if (suggestedEndpointName != null) { + const invalidResourceMessage = `Invalid resource '${pathComponents.endpointName}'. The most similar resource is '${suggestedEndpointName}'.`; + + return { + resourceSchema: NoResourceSchema, + resourceInfo: NoResourceInfo, + errorBody: { + error: invalidResourceMessage, + }, + }; + } + + if (matchingResourceSchema == null) { + return { + resourceSchema: NoResourceSchema, + resourceInfo: NoResourceInfo, + errorBody: { error: `Invalid resource '${pathComponents.endpointName}'.` }, + }; + } + + const projectSchema: ProjectSchema = await findProjectSchema(apiSchema, pathComponents.projectNamespace, traceId); + + return { + resourceSchema: matchingResourceSchema, + resourceInfo: { + projectName: projectSchema.projectName, + resourceVersion: projectSchema.projectVersion, + resourceName: matchingResourceSchema.resourceName, + isDescriptor: matchingResourceSchema.isDescriptor, + allowIdentityUpdates: matchingResourceSchema.allowIdentityUpdates, + }, + headerMetadata: { + 'X-Project-Name': projectSchema.projectName, + 'X-Project-Version': projectSchema.projectVersion, + }, + }; +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/EqualityConstraintValidator.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/EqualityConstraintValidator.ts index cfcbcda5..c6229c4e 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/validation/EqualityConstraintValidator.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/validation/EqualityConstraintValidator.ts @@ -3,8 +3,8 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. import { JSONPath as jsonPath } from 'jsonpath-plus'; -import { TopLevelEntity } from '@edfi/metaed-core'; -import type { EntityApiSchemaData, EqualityConstraint } from '@edfi/metaed-plugin-edfi-api-schema'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; +import { EqualityConstraint } from '../model/api-schema/EqualityConstraint'; // By using the jsonpath library's "flatten" flag, we should only get back primitive types in the array type PrimitiveType = number | string | boolean; @@ -24,12 +24,10 @@ function allEqual(array: PrimitiveType[]): boolean { * * Returns a list of validation failure messages. */ -export function validateEqualityConstraints(matchingMetaEdModel: TopLevelEntity, parsedBody: any): string[] { +export function validateEqualityConstraints(resourceSchema: ResourceSchema, parsedBody: any): string[] { const validationFailures: string[] = []; - const { equalityConstraints } = matchingMetaEdModel.data.edfiApiSchema as EntityApiSchemaData; - - equalityConstraints.forEach((equalityConstraint: EqualityConstraint) => { + resourceSchema.equalityConstraints.forEach((equalityConstraint: EqualityConstraint) => { const sourceValues: PrimitiveType[] = jsonPath({ path: equalityConstraint.sourceJsonPath, json: parsedBody, diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/QueryStringValidator.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/QueryStringValidator.ts index 284182f8..ad7af770 100644 --- a/Meadowlark-js/packages/meadowlark-core/src/validation/QueryStringValidator.ts +++ b/Meadowlark-js/packages/meadowlark-core/src/validation/QueryStringValidator.ts @@ -2,10 +2,11 @@ // Licensed to the Ed-Fi Alliance under one or more agreements. // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { TopLevelEntity } from '@edfi/metaed-core'; +import { ErrorObject } from 'ajv'; import { FrontendQueryParameters } from '../handler/FrontendRequest'; -import { validateQueryParametersAgainstSchema } from '../metaed/MetaEdValidation'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; import { createInvalidRequestResponse } from '../Utility'; +import { getSchemaValidatorsFor } from './ResourceSchemaValidation'; export type QueryStringValidationResult = { /** @@ -15,13 +16,64 @@ export type QueryStringValidationResult = { }; /** - * Validates that the provided query string belongs with the MetaEd resource specified by the PathComponents. + * Validates that those queryParameters which are present are actually fields on the API resource */ -export async function validateQueryString( +export function validateQueryParameters(resourceSchema: ResourceSchema, queryParameters: FrontendQueryParameters): string[] { + const { queryValidator } = getSchemaValidatorsFor(resourceSchema); + + let errors: string[] = []; + + /** + * Number and boolean are come through as strings, which causes ajv to fail validation of parameters + * This loops through all query parameters and checks the type against the schema, if the type is numeric or boolean + * it will attempt convert the value. If the conversion is good, we set the value back and ajv will validate the schema + * If the value can't be converted (i.e. a word is provided for a numeric value, we leave it and let ajv invalidate + * the schema). + */ + Object.keys(queryParameters).forEach((keyValue) => { + const property = resourceSchema.jsonSchemaForQuery.properties[keyValue]; + + if (property != null && property.type != null) { + if ((property && property?.type === 'integer') || property.type === 'number') { + const value = Number(queryParameters[keyValue]); + if (!Number.isNaN(value)) { + queryParameters[keyValue] = value; + } + } + if (property.type === 'boolean' && (queryParameters[keyValue] === 'true' || queryParameters[keyValue] === 'false')) { + queryParameters[keyValue] = Boolean(queryParameters[keyValue]); + } + } + }); + + const isValid: boolean = queryValidator(queryParameters); + + if (isValid) return []; + + if (queryValidator.errors) { + const ajvErrors = queryValidator.errors.map((error: ErrorObject) => { + // When a parameter name is invalid instancePath is null thus only + // shows the error message which looks like the following: ' must NOT have additional properties' + if (error.instancePath === '' && error.keyword === 'additionalProperties') { + return `${resourceSchema.resourceName} does not include property '${error.params.additionalProperty}'`; + } + return `${error.instancePath} ${error.message}` ?? ''; + }); + + errors = [...errors, ...ajvErrors]; + } + + return errors; +} + +/** + * Validates that the query string keys are actually fields on the API resource. + */ +export function validateQueryString( queryStrings: FrontendQueryParameters, - matchingMetaEdModel: TopLevelEntity, -): Promise { - const bodyValidation: string[] = validateQueryParametersAgainstSchema(matchingMetaEdModel, queryStrings); + resourceSchema: ResourceSchema, +): QueryStringValidationResult { + const bodyValidation: string[] = validateQueryParameters(resourceSchema, queryStrings); if (bodyValidation.length > 0) { const modelState = Object.assign({}, ...bodyValidation.map((x) => ({ [x]: 'Invalid property' }))); return { diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/ResourceSchemaValidation.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/ResourceSchemaValidation.ts new file mode 100644 index 00000000..c2b6457b --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/src/validation/ResourceSchemaValidation.ts @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import Ajv from 'ajv/dist/2020'; +import addFormatsTo from 'ajv-formats'; +import type { ValidateFunction } from 'ajv'; +import { getBooleanFromEnvironment } from '@edfi/meadowlark-utilities'; +import { ResourceSchema } from '../model/api-schema/ResourceSchema'; + +/** + * Compiled ajv JSON Schema validator functions for the API resource + */ +export type ResourceSchemaValidators = { + insertValidator: ValidateFunction; + queryValidator: ValidateFunction; + updateValidator: ValidateFunction; +}; + +function initializeAjv(): Ajv { + const removeAdditional = false; // TODO: replace on merge with RND-651 + const coerceTypes = getBooleanFromEnvironment('ALLOW_TYPE_COERCION', false); + + const ajv = new Ajv({ allErrors: true, coerceTypes, removeAdditional }); + addFormatsTo(ajv); + + return ajv; +} + +// Simple cache of a configured Ajv +let ajv: Ajv | null = null; + +// simple cache implementation, see: https://rewind.io/blog/simple-caching-in-aws-lambda-functions/ +/** This is a cache mapping ResourceSchema objects to compiled ajv JSON Schema validators for the API resource */ +const validatorCache: Map = new Map(); + +/** + * Returns the API resource JSON Schema validator functions for the given ResourceSchema. Caches results. + */ +export function getSchemaValidatorsFor(resourceSchema: ResourceSchema): ResourceSchemaValidators { + if (ajv == null) ajv = initializeAjv(); + + const cachedValidators: ResourceSchemaValidators | undefined = validatorCache.get(resourceSchema); + if (cachedValidators != null) return cachedValidators; + + const resourceValidators: ResourceSchemaValidators = { + insertValidator: ajv.compile(resourceSchema.jsonSchemaForInsert), + queryValidator: ajv.compile(resourceSchema.jsonSchemaForQuery), + updateValidator: ajv.compile(resourceSchema.jsonSchemaForUpdate), + }; + validatorCache.set(resourceSchema, resourceValidators); + return resourceValidators; +} + +/** + * Function to remove all validators from validatorCache for testing purposes. + */ +export function clearAllValidatorCache(): void { + validatorCache.clear(); +} diff --git a/Meadowlark-js/packages/meadowlark-core/src/validation/ResourceValidator.ts b/Meadowlark-js/packages/meadowlark-core/src/validation/ResourceValidator.ts deleted file mode 100644 index 757eef02..00000000 --- a/Meadowlark-js/packages/meadowlark-core/src/validation/ResourceValidator.ts +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { normalizeDescriptorSuffix } from '@edfi/metaed-core'; -import { loadMetaEdState } from '../metaed/LoadMetaEd'; -import { modelPackageFor } from '../metaed/MetaEdProjectMetadata'; -import { matchResourceNameToMetaEd } from '../metaed/MetaEdValidation'; -import { decapitalize } from '../Utility'; -import { PathComponents } from '../model/PathComponents'; -import { NoResourceInfo, ResourceInfo } from '../model/ResourceInfo'; - -export type ResourceValidationResult = { - /** - * The name of the validated endpoint, corresponding to the name of the resource requested - */ - resourceName: string; - /** - * Metadata for the MetaEd project loaded - */ - headerMetadata?: any; - /** - * Error message for validation failure - */ - errorBody?: {}; - /** - * Information on the validated MetaEd entity matching the API request - */ - resourceInfo: ResourceInfo; -}; - -/** - * Dynamically performs validation of a request against a resource. - * - * Starts by loading the MetaEd project specified in the endpoint path. Then uses the MetaEd internal - * model, enriched by Meadowlark-specific enhancers, to validate the complete resource endpoint path. - */ -export async function validateResource(pathComponents: PathComponents): Promise { - // Equally supporting resources with either upper or lower case names - const lowerResourceName = decapitalize(pathComponents.resourceName); - - const modelNpmPackage = modelPackageFor(pathComponents.version); - const { metaEd, metaEdConfiguration } = await loadMetaEdState(modelNpmPackage); - - const { resourceName, isDescriptor, exact, suggestion, matchingMetaEdModel } = matchResourceNameToMetaEd( - lowerResourceName, - metaEd, - pathComponents.namespace, - ); - const headerMetadata: object = { - 'X-MetaEd-Project-Name': metaEdConfiguration.projects[0].projectName, - 'X-MetaEd-Project-Version': metaEdConfiguration.projects[0].projectVersion, - 'X-MetaEd-Project-Package-Name': modelNpmPackage, - }; - - if (exact === false && suggestion === true) { - const invalidResourceMessage = `Invalid resource '${pathComponents.resourceName}'. The most similar resource is '${resourceName}'.`; - - return { - headerMetadata, - resourceName: pathComponents.resourceName, - resourceInfo: NoResourceInfo, - errorBody: { - error: invalidResourceMessage, - }, - }; - } - - if (exact === false && suggestion === false) { - return { - headerMetadata, - resourceName: pathComponents.resourceName, - resourceInfo: NoResourceInfo, - errorBody: { error: `Invalid resource '${pathComponents.resourceName}'.` }, - }; - } - - return { - headerMetadata, - resourceName: pathComponents.resourceName, - resourceInfo: { - projectName: metaEdConfiguration.projects[0].projectName, - resourceVersion: metaEdConfiguration.projects[0].projectVersion, - resourceName: isDescriptor - ? normalizeDescriptorSuffix(matchingMetaEdModel.metaEdName) - : matchingMetaEdModel.metaEdName, - isDescriptor, - allowIdentityUpdates: matchingMetaEdModel.allowPrimaryKeyUpdates, - }, - }; -} diff --git a/Meadowlark-js/packages/meadowlark-core/test/TestHelper.ts b/Meadowlark-js/packages/meadowlark-core/test/TestHelper.ts new file mode 100644 index 00000000..4e0b2ff1 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/test/TestHelper.ts @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import type { Enhancer, MetaEdEnvironment, PluginEnvironment } from '@edfi/metaed-core'; +import { initialize as edfiApiSchema } from '@edfi/metaed-plugin-edfi-api-schema'; +import type { ApiSchema } from '../src/model/api-schema/ApiSchema'; + +type PluginEnvironmentEdfiApiSchema = { + apiSchema: ApiSchema; +}; + +export function apiSchemaFrom(metaEd: MetaEdEnvironment): ApiSchema { + metaEd.plugin.set('edfiApiSchema', {} as PluginEnvironment); + + edfiApiSchema().enhancer.forEach((enhancer: Enhancer) => { + enhancer(metaEd); + }); + + const pluginEnvironment = metaEd.plugin.get('edfiApiSchema') as PluginEnvironment; + return (pluginEnvironment.data as PluginEnvironmentEdfiApiSchema).apiSchema; +} diff --git a/Meadowlark-js/packages/meadowlark-core/test/extraction/DescriptorValueExtractor.test.ts b/Meadowlark-js/packages/meadowlark-core/test/extraction/DescriptorValueExtractor.test.ts index 82ab10ea..59f04150 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/extraction/DescriptorValueExtractor.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/extraction/DescriptorValueExtractor.test.ts @@ -3,6 +3,8 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. +/* eslint-disable dot-notation */ + import { newMetaEdEnvironment, MetaEdEnvironment, @@ -18,24 +20,15 @@ import { descriptorReferenceEnhancer, domainEntitySubclassBaseClassEnhancer, } from '@edfi/metaed-plugin-edfi-unified'; -import { - entityPropertyApiSchemaDataSetupEnhancer, - apiEntityMappingEnhancer, - entityApiSchemaDataSetupEnhancer, - referenceComponentEnhancer, - apiPropertyMappingEnhancer, - propertyCollectingEnhancer, - subclassPropertyNamingCollisionEnhancer, - subclassPropertyCollectingEnhancer, - subclassApiEntityMappingEnhancer, -} from '@edfi/metaed-plugin-edfi-api-schema'; import { extractDescriptorValues } from '../../src/extraction/DescriptorValueExtractor'; import { DocumentReference } from '../../src/model/DocumentReference'; +import { apiSchemaFrom } from '../TestHelper'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { ResourceSchema } from '../../src/model/api-schema/ResourceSchema'; describe('when extracting single descriptor value from domain entity', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const descriptorValue = 'uri://ed-fi.org/grade'; @@ -63,26 +56,21 @@ describe('when extracting single descriptor value from domain entity', () => { .sendToListener(new DescriptorBuilder(metaEd, [])); descriptorReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - subclassPropertyNamingCollisionEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const entity = namespace.entity.domainEntity.get('EntityName'); - result = extractDescriptorValues(entity, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['entityNames']; + + result = extractDescriptorValues(resourceSchema, body); }); it('should have the descriptor value for a GradingPeriod', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/grade", - }, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/grade", + }, + ], "isDescriptor": true, "projectName": "EdFi", "resourceName": "GradingPeriodDescriptor", @@ -94,7 +82,6 @@ describe('when extracting single descriptor value from domain entity', () => { describe('when extracting single descriptor value from common with role name', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const descriptorValue = 'uri://ed-fi.org/grade'; @@ -110,6 +97,7 @@ describe('when extracting single descriptor value from common with role name', ( .withStartDescriptor('CreditType') .withDocumentation('Documentation') .withEndDescriptor() + .withStartInlineCommon('Credits') .withDocumentation('Documentation') .withDescriptorProperty('CreditType', 'Documentation', false, false) @@ -129,26 +117,21 @@ describe('when extracting single descriptor value from common with role name', ( inlineCommonReferenceEnhancer(metaEd); descriptorReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - subclassPropertyNamingCollisionEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const entity = namespace.entity.domainEntity.get('Section'); - result = extractDescriptorValues(entity, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + + result = extractDescriptorValues(resourceSchema, body); }); it('should have the descriptor value', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/grade", - }, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/grade", + }, + ], "isDescriptor": true, "projectName": "EdFi", "resourceName": "CreditTypeDescriptor", @@ -160,7 +143,6 @@ describe('when extracting single descriptor value from common with role name', ( describe('when extracting descriptor values from domain entity with the same names', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const gradingPeriod = 'GradingPeriod'; @@ -189,26 +171,21 @@ describe('when extracting descriptor values from domain entity with the same nam .sendToListener(new DescriptorBuilder(metaEd, [])); descriptorReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - subclassPropertyNamingCollisionEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const entity = namespace.entity.domainEntity.get(gradingPeriod); - result = extractDescriptorValues(entity, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['gradingPeriods']; + + result = extractDescriptorValues(resourceSchema, body); }); it('should have the descriptor value for a GradingPeriod', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/grade", - }, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/grade", + }, + ], "isDescriptor": true, "projectName": "EdFi", "resourceName": "GradingPeriodDescriptor", @@ -220,7 +197,6 @@ describe('when extracting descriptor values from domain entity with the same nam describe('when extracting array of descriptor values from domain entity', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const descriptorValue = 'uri://ed-fi.org/grade'; @@ -258,51 +234,30 @@ describe('when extracting array of descriptor values from domain entity', () => .sendToListener(new DescriptorBuilder(metaEd, [])); descriptorReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - subclassPropertyNamingCollisionEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const entity = namespace.entity.domainEntity.get('EntityName'); - result = extractDescriptorValues(entity, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['entityNames']; + + result = extractDescriptorValues(resourceSchema, body); }); it('should have the descriptor values for the GradingPeriods', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/grade1", - }, - "isAssignableFrom": false, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/grade1", + }, + { + "descriptor": "uri://ed-fi.org/grade2", + }, + { + "descriptor": "uri://ed-fi.org/grade3", + }, + ], "isDescriptor": true, "projectName": "EdFi", - "resourceName": "GradingPeriod", - "resourceVersion": "", - }, - { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/grade2", - }, - "isAssignableFrom": false, - "isDescriptor": true, - "projectName": "EdFi", - "resourceName": "GradingPeriod", - "resourceVersion": "", - }, - { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/grade3", - }, - "isAssignableFrom": false, - "isDescriptor": true, - "projectName": "EdFi", - "resourceName": "GradingPeriod", - "resourceVersion": "", + "resourceName": "GradingPeriodDescriptor", }, ] `); @@ -311,7 +266,6 @@ describe('when extracting array of descriptor values from domain entity', () => describe('when extracting collection from domain entity subclass with naming collision issue', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -339,6 +293,7 @@ describe('when extracting collection from domain entity subclass with naming col .withStartDomainEntitySubclass('School', 'EducationOrganization') .withDocumentation('doc') + .withIdentityRenameProperty('integer', 'SchoolId', 'Identity', 'doc') .withDescriptorProperty('SchoolCategory', 'doc', true, true) .withEndDomainEntity() @@ -357,43 +312,34 @@ describe('when extracting collection from domain entity subclass with naming col descriptorReferenceEnhancer(metaEd); domainEntitySubclassBaseClassEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - subclassPropertyNamingCollisionEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - subclassPropertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - subclassApiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const entity = namespace.entity.domainEntitySubclass.get('School'); - result = extractDescriptorValues(entity, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['schools']; + + result = extractDescriptorValues(resourceSchema, body); }); it('should have values for body without collection prefix removal', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/schoolValue", - }, - "isAssignableFrom": false, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/schoolValue", + }, + ], "isDescriptor": true, "projectName": "EdFi", - "resourceName": "SchoolCategory", - "resourceVersion": "", + "resourceName": "SchoolCategoryDescriptor", }, { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/edOrgValue", - }, - "isAssignableFrom": false, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/edOrgValue", + }, + ], "isDescriptor": true, "projectName": "EdFi", - "resourceName": "EducationOrganizationCategory", - "resourceVersion": "", + "resourceName": "EducationOrganizationCategoryDescriptor", }, ] `); @@ -402,7 +348,6 @@ describe('when extracting collection from domain entity subclass with naming col describe('when extracting collection from domain entity subclass with no naming collision issue due to one being a non-collection', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -426,6 +371,7 @@ describe('when extracting collection from domain entity subclass with no naming .withStartDomainEntitySubclass('School', 'EducationOrganization') .withDocumentation('doc') + .withIdentityRenameProperty('integer', 'SchoolId', 'Identity', 'doc') .withDescriptorProperty('SchoolCategory', 'doc', true, false) .withEndDomainEntity() @@ -444,41 +390,34 @@ describe('when extracting collection from domain entity subclass with no naming descriptorReferenceEnhancer(metaEd); domainEntitySubclassBaseClassEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - subclassPropertyNamingCollisionEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - subclassPropertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - subclassApiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const entity = namespace.entity.domainEntitySubclass.get('School'); - result = extractDescriptorValues(entity, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['schools']; + + result = extractDescriptorValues(resourceSchema, body); }); it('should have values for body with collection prefix removal and without collection', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/schoolValue", - }, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/schoolValue", + }, + ], "isDescriptor": true, "projectName": "EdFi", "resourceName": "SchoolCategoryDescriptor", }, { - "documentIdentity": { - "descriptor": "uri://ed-fi.org/edOrgValue", - }, - "isAssignableFrom": false, + "documentIdentity": [ + { + "descriptor": "uri://ed-fi.org/edOrgValue", + }, + ], "isDescriptor": true, "projectName": "EdFi", - "resourceName": "EducationOrganizationCategory", - "resourceVersion": "", + "resourceName": "EducationOrganizationCategoryDescriptor", }, ] `); diff --git a/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentIdentityExtractor.test.ts b/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentIdentityExtractor.test.ts index 25609378..ebf013ee 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentIdentityExtractor.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentIdentityExtractor.test.ts @@ -3,6 +3,8 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. +/* eslint-disable dot-notation */ + import { newMetaEdEnvironment, MetaEdEnvironment, @@ -12,21 +14,15 @@ import { EnumerationBuilder, } from '@edfi/metaed-core'; import { domainEntityReferenceEnhancer, enumerationReferenceEnhancer } from '@edfi/metaed-plugin-edfi-unified'; -import { - entityPropertyApiSchemaDataSetupEnhancer, - apiEntityMappingEnhancer, - entityApiSchemaDataSetupEnhancer, - referenceComponentEnhancer, - apiPropertyMappingEnhancer, - propertyCollectingEnhancer, -} from '@edfi/metaed-plugin-edfi-api-schema'; import { extractDocumentIdentity } from '../../src/extraction/DocumentIdentityExtractor'; -import { DocumentIdentity, NoDocumentIdentity } from '../../src/model/DocumentIdentity'; +import { DocumentIdentity } from '../../src/model/DocumentIdentity'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { ResourceSchema } from '../../src/model/api-schema/ResourceSchema'; +import { apiSchemaFrom } from '../TestHelper'; describe('when extracting natural key from domain entity referencing another referencing another with identity', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; - let result: DocumentIdentity = NoDocumentIdentity; + let result: DocumentIdentity = []; const body = { notImportant: false, @@ -74,35 +70,35 @@ describe('when extracting natural key from domain entity referencing another ref .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentIdentity(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentIdentity(resourceSchema, body); }); it('should be correct', () => { expect(result).toMatchInlineSnapshot(` - { - "classPeriodReference.classPeriodName": "z", - "classPeriodReference.schoolId": "23", - "courseOfferingReference.localCourseCode": "abc", - "courseOfferingReference.schoolId": "23", - "sectionIdentifier": "Bob", - } + [ + { + "classPeriodName": "z", + }, + { + "localCourseCode": "abc", + }, + { + "schoolId": "23", + }, + { + "sectionIdentifier": "Bob", + }, + ] `); }); }); describe('when extracting natural key from domain entity with school year in identity', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; - let result: DocumentIdentity = NoDocumentIdentity; + let result: DocumentIdentity = []; const body = { sessionName: 's', @@ -131,32 +127,28 @@ describe('when extracting natural key from domain entity with school year in ide enumerationReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const session = namespace.entity.domainEntity.get('Session'); - result = extractDocumentIdentity(session, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sessions']; + result = extractDocumentIdentity(resourceSchema, body); }); it('should be correct', () => { expect(result).toMatchInlineSnapshot(` - { - "schoolYearTypeReference.schoolYear": 2022, - "sessionName": "s", - } + [ + { + "schoolYear": 2022, + }, + { + "sessionName": "s", + }, + ] `); }); }); describe('when extracting natural key from domain entity with school year that has a role name', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; - let result: DocumentIdentity = NoDocumentIdentity; + let result: DocumentIdentity = []; const body = { graduationSchoolYearTypeReference: { @@ -183,23 +175,83 @@ describe('when extracting natural key from domain entity with school year that h enumerationReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const session = namespace.entity.domainEntity.get('GraduationPlan'); - result = extractDocumentIdentity(session, body); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['graduationPlans']; + result = extractDocumentIdentity(resourceSchema, body); }); it('should be correct', () => { expect(result).toMatchInlineSnapshot(` - { - "graduationSchoolYearTypeReference.schoolYear": 2022, - } + [ + { + "schoolYear": 2022, + }, + ] + `); + }); +}); + +describe('when extracting document identity with two levels of identities', () => { + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + let result: DocumentIdentity = []; + + const body = { + classPeriodName: 'c1', + sessionReference: { + sessionName: 's1', + schoolId: '23', + }, + schoolReference: { + schoolId: '23', + }, + }; + + beforeAll(() => { + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + + .withStartDomainEntity('ClassPeriod') + .withDocumentation('doc') + .withStringIdentity('ClassPeriodName', 'doc', '30') + .withDomainEntityIdentity('School', 'doc') + .withDomainEntityIdentity('Session', 'doc') + .withEndDomainEntity() + + .withStartDomainEntity('Session') + .withDocumentation('doc') + .withStringIdentity('SessionName', 'doc', '30') + .withDomainEntityIdentity('School', 'doc') + .withEndDomainEntity() + + .withStartDomainEntity('School') + .withDocumentation('doc') + .withStringIdentity('SchoolId', 'doc', '30') + .withEndDomainEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + domainEntityReferenceEnhancer(metaEd); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['classPeriods']; + result = extractDocumentIdentity(resourceSchema, body); + }); + + it('should have two references down to "schoolId"', () => { + expect(result).toMatchInlineSnapshot(` + [ + { + "classPeriodName": "c1", + }, + { + "schoolId": "23", + }, + { + "sessionName": "s1", + }, + ] `); }); }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentInfoExtractor.test.ts b/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentInfoExtractor.test.ts deleted file mode 100644 index 7bf9a5df..00000000 --- a/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentInfoExtractor.test.ts +++ /dev/null @@ -1,259 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. -import { newEntityProperty, newTopLevelEntity, TopLevelEntity } from '@edfi/metaed-core'; -import { ResourceInfo, newResourceInfo } from '../../src/model/ResourceInfo'; -import { DocumentInfo } from '../../src/model/DocumentInfo'; -import { DescriptorDocument } from '../../src/model/DescriptorDocument'; -import { extractDocumentInfo } from '../../src/extraction/DocumentInfoExtractor'; -import { DocumentIdentity } from '../../src/model/DocumentIdentity'; - -const requestTimestamp = 10; - -const testModel = (): TopLevelEntity => ({ - ...newTopLevelEntity(), - metaEdName: 'Student', - properties: [ - { ...newEntityProperty(), metaEdName: 'uniqueId', isPartOfIdentity: true }, - { ...newEntityProperty(), metaEdName: 'someBooleanParameter', isPartOfIdentity: false }, - { ...newEntityProperty(), metaEdName: 'someIntegerParameter', isPartOfIdentity: false }, - { ...newEntityProperty(), metaEdName: 'someDecimalParameter', isPartOfIdentity: false }, - ], - data: { - edfiApiSchema: { - apiMapping: { - identityReferenceComponents: [], - referenceGroups: [], - descriptorCollectedApiProperties: [], - }, - jsonSchemaForInsert: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - description: 'doc', - properties: { - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - someBooleanParameter: { - description: 'doc', - type: 'boolean', - }, - someIntegerParameter: { - description: 'doc', - type: 'integer', - }, - someDecimalParameter: { - description: 'doc', - type: 'number', - }, - }, - required: ['uniqueId'], - title: 'EdFi.Student', - type: 'object', - }, - jsonSchemaForUpdate: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - description: 'doc', - properties: { - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - someBooleanParameter: { - description: 'doc', - type: 'boolean', - }, - someIntegerParameter: { - description: 'doc', - type: 'integer', - }, - someDecimalParameter: { - description: 'doc', - type: 'number', - }, - }, - required: ['uniqueId'], - title: 'EdFi.Student', - type: 'object', - }, - }, - }, -}); - -const testSchoolModel = (): TopLevelEntity => ({ - ...newTopLevelEntity(), - metaEdName: 'Student', - properties: [ - { ...newEntityProperty(), metaEdName: 'uniqueId', isPartOfIdentity: true }, - { ...newEntityProperty(), metaEdName: 'someBooleanParameter', isPartOfIdentity: false }, - { ...newEntityProperty(), metaEdName: 'someIntegerParameter', isPartOfIdentity: false }, - { ...newEntityProperty(), metaEdName: 'someDecimalParameter', isPartOfIdentity: false }, - ], - data: { - edfiApiSchema: { - apiMapping: { - identityReferenceComponents: [], - referenceGroups: [], - descriptorCollectedApiProperties: [], - superclass: { - metaEdName: 'School', - documentIdentity: { schoolYear: '2023' }, - namespace: { - projectName: 'Testing', - }, - resourceName: 'School', - }, - }, - jsonSchemaForInsert: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - description: 'doc', - properties: { - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - someBooleanParameter: { - description: 'doc', - type: 'boolean', - }, - someIntegerParameter: { - description: 'doc', - type: 'integer', - }, - someDecimalParameter: { - description: 'doc', - type: 'number', - }, - }, - required: ['uniqueId'], - title: 'EdFi.Student', - type: 'object', - }, - jsonSchemaForUpdate: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - description: 'doc', - properties: { - id: { - description: 'The item id', - type: 'string', - }, - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - someBooleanParameter: { - description: 'doc', - type: 'boolean', - }, - someIntegerParameter: { - description: 'doc', - type: 'integer', - }, - someDecimalParameter: { - description: 'doc', - type: 'number', - }, - }, - required: ['id', 'uniqueId'], - title: 'EdFi.Student', - type: 'object', - }, - }, - }, -}); - -describe('given IsDescriptor equal true', () => { - const body: DocumentIdentity = { schoolYear: '2023' }; - const matchingMetaEdModel: TopLevelEntity = { - ...testModel(), - }; - let queryResult: DocumentInfo; - const resourceInfoRequest: ResourceInfo = { - ...newResourceInfo(), - isDescriptor: true, - }; - beforeAll(async () => { - queryResult = await extractDocumentInfo(resourceInfoRequest, body, matchingMetaEdModel, requestTimestamp); - }); - it('should return documentInfo.', async () => { - // Assert - expect(queryResult).toEqual({ - descriptorReferences: [], - documentIdentity: {}, - documentReferences: [], - superclassInfo: null, - requestTimestamp, - }); - }); -}); - -describe('given isDescriptor False', () => { - const body: DescriptorDocument = { - namespace: 'namespace', - codeValue: 'codeValue', - shortDescription: 'shortDescription', - }; - const matchingMetaEdModel: TopLevelEntity = { - ...testModel(), - }; - let queryResult: DocumentInfo; - const resourceInfoRequest: ResourceInfo = { - ...newResourceInfo(), - isDescriptor: false, - }; - beforeAll(async () => { - queryResult = await extractDocumentInfo(resourceInfoRequest, body, matchingMetaEdModel, requestTimestamp); - }); - it('should return superclass null.', async () => { - // Assert - expect(queryResult).toEqual({ - descriptorReferences: [], - documentIdentity: {}, - documentReferences: [], - superclassInfo: null, - requestTimestamp, - }); - }); -}); - -describe('given isDescriptor False', () => { - const body: DescriptorDocument = { - namespace: 'namespace', - codeValue: 'codeValue', - shortDescription: 'shortDescription', - }; - const matchingMetaEdModel: TopLevelEntity = { - ...testSchoolModel(), - }; - let queryResult: DocumentInfo; - const resourceInfoRequest: ResourceInfo = { - ...newResourceInfo(), - isDescriptor: false, - }; - beforeAll(async () => { - queryResult = await extractDocumentInfo(resourceInfoRequest, body, matchingMetaEdModel, requestTimestamp); - }); - it('should return superclass.', async () => { - // Assert - expect(queryResult).toEqual({ - descriptorReferences: [], - documentIdentity: {}, - documentReferences: [], - superclassInfo: { - documentIdentity: {}, - projectName: 'Testing', - resourceName: 'School', - }, - requestTimestamp, - }); - }); -}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentReferenceExtractor.test.ts b/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentReferenceExtractor.test.ts index 94a99bcf..487b8d92 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentReferenceExtractor.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/extraction/DocumentReferenceExtractor.test.ts @@ -3,6 +3,8 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. +/* eslint-disable dot-notation */ + import { newMetaEdEnvironment, MetaEdEnvironment, @@ -12,20 +14,14 @@ import { EnumerationBuilder, } from '@edfi/metaed-core'; import { domainEntityReferenceEnhancer, enumerationReferenceEnhancer } from '@edfi/metaed-plugin-edfi-unified'; -import { - entityPropertyApiSchemaDataSetupEnhancer, - apiEntityMappingEnhancer, - entityApiSchemaDataSetupEnhancer, - referenceComponentEnhancer, - apiPropertyMappingEnhancer, - propertyCollectingEnhancer, -} from '@edfi/metaed-plugin-edfi-api-schema'; import { extractDocumentReferences } from '../../src/extraction/DocumentReferenceExtractor'; import { DocumentReference } from '../../src/model/DocumentReference'; +import { apiSchemaFrom } from '../TestHelper'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { ResourceSchema } from '../../src/model/api-schema/ResourceSchema'; describe('when extracting document references from domain entity referencing one as identity and another as collection', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -85,47 +81,53 @@ describe('when extracting document references from domain entity referencing one .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have references', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "classPeriodName": "z1", - "schoolReference.schoolId": "24", - }, + "documentIdentity": [ + { + "localCourseCode": "abc", + }, + { + "schoolId": "23", + }, + ], "isDescriptor": false, "projectName": "EdFi", - "resourceName": "ClassPeriod", + "resourceName": "CourseOffering", }, { - "documentIdentity": { - "classPeriodName": "z2", - "schoolReference.schoolId": "25", - }, + "documentIdentity": [ + { + "classPeriodName": "z1", + }, + { + "schoolId": "24", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", }, { - "documentIdentity": { - "localCourseCode": "abc", - "schoolReference.schoolId": "23", - }, + "documentIdentity": [ + { + "classPeriodName": "z2", + }, + { + "schoolId": "25", + }, + ], "isDescriptor": false, "projectName": "EdFi", - "resourceName": "CourseOffering", + "resourceName": "ClassPeriod", }, ] `); @@ -134,7 +136,6 @@ describe('when extracting document references from domain entity referencing one describe('when extracting with optional reference in body', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -164,25 +165,21 @@ describe('when extracting with optional reference in body', () => { .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have references', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "localCourseCode": "abc", - }, + "documentIdentity": [ + { + "localCourseCode": "abc", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "CourseOffering", @@ -194,7 +191,6 @@ describe('when extracting with optional reference in body', () => { describe('when extracting with optional reference not in body', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -221,16 +217,10 @@ describe('when extracting with optional reference not in body', () => { .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have no references', () => { @@ -238,9 +228,70 @@ describe('when extracting with optional reference not in body', () => { }); }); +describe('when extracting with one optional reference in body and one not', () => { + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + let result: DocumentReference[] = []; + + const body = { + sectionIdentifier: 'Bob', + courseOfferingReference: { + localCourseCode: 'abc', + }, + }; + + beforeAll(() => { + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + .withStartDomainEntity('Section') + .withDocumentation('doc') + .withStringIdentity('SectionIdentifier', 'doc', '30') + .withDomainEntityProperty('CourseOffering', 'doc', false, false) + .withDomainEntityProperty('Course', 'doc', false, false) + .withEndDomainEntity() + + .withStartDomainEntity('CourseOffering') + .withDocumentation('doc') + .withStringIdentity('LocalCourseCode', 'doc', '30') + .withBooleanProperty('AlsoNotImportant', 'doc', true, true) + .withEndDomainEntity() + + .withStartDomainEntity('Course') + .withDocumentation('doc') + .withStringIdentity('LocalCourse', 'doc', '30') + .withBooleanProperty('AlsoNotImportant', 'doc', true, true) + .withEndDomainEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + domainEntityReferenceEnhancer(metaEd); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); + }); + + it('should have no references', () => { + expect(result).toMatchInlineSnapshot(` + [ + { + "documentIdentity": [ + { + "localCourseCode": "abc", + }, + ], + "isDescriptor": false, + "projectName": "EdFi", + "resourceName": "CourseOffering", + }, + ] + `); + }); +}); + describe('when extracting optional collection in body', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -278,33 +329,31 @@ describe('when extracting optional collection in body', () => { .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have references', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "classPeriodName": "z1", - }, + "documentIdentity": [ + { + "classPeriodName": "z1", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", }, { - "documentIdentity": { - "classPeriodName": "z2", - }, + "documentIdentity": [ + { + "classPeriodName": "z2", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", @@ -316,7 +365,6 @@ describe('when extracting optional collection in body', () => { describe('when extracting optional collection not in body', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -342,16 +390,10 @@ describe('when extracting optional collection not in body', () => { .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have no references', () => { @@ -361,7 +403,6 @@ describe('when extracting optional collection not in body', () => { describe('when extracting document references with two levels of identities on a collection reference', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -420,39 +461,43 @@ describe('when extracting document references with two levels of identities on a .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have two references down to "schoolId"', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "classPeriodName": "c1", - "schoolReference.schoolId": "24", - "sessionReference.schoolId": "24", - "sessionReference.sessionName": "s1", - }, + "documentIdentity": [ + { + "classPeriodName": "c1", + }, + { + "schoolId": "24", + }, + { + "sessionName": "s1", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", }, { - "documentIdentity": { - "classPeriodName": "c2", - "schoolReference.schoolId": "25", - "sessionReference.schoolId": "25", - "sessionReference.sessionName": "s2", - }, + "documentIdentity": [ + { + "classPeriodName": "c2", + }, + { + "schoolId": "25", + }, + { + "sessionName": "s2", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", @@ -464,7 +509,6 @@ describe('when extracting document references with two levels of identities on a describe('when extracting document references with three levels of identities on a collection reference', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -534,41 +578,55 @@ describe('when extracting document references with three levels of identities on .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - result = extractDocumentReferences(section, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have ClassPeriod references down to "thirdLevelName"', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "classPeriodName": "c1", - "schoolReference.schoolId": "24", - "sessionReference.secondLevelName": "e1", - "sessionReference.sessionName": "s1", - "sessionReference.thirdLevelName": "t1", - }, + "documentIdentity": [ + { + "classPeriodName": "c1", + }, + { + "schoolId": "24", + }, + { + "secondLevelName": "e1", + }, + { + "sessionName": "s1", + }, + { + "thirdLevelName": "t1", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", }, { - "documentIdentity": { - "classPeriodName": "c2", - "schoolReference.schoolId": "25", - "sessionReference.secondLevelName": "e2", - "sessionReference.sessionName": "s2", - "sessionReference.thirdLevelName": "t2", - }, + "documentIdentity": [ + { + "classPeriodName": "c2", + }, + { + "schoolId": "25", + }, + { + "secondLevelName": "e2", + }, + { + "sessionName": "s2", + }, + { + "thirdLevelName": "t2", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "ClassPeriod", @@ -580,7 +638,6 @@ describe('when extracting document references with three levels of identities on describe('when extracting with school year reference in body', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let result: DocumentReference[] = []; const body = { @@ -620,26 +677,24 @@ describe('when extracting with school year reference in body', () => { domainEntityReferenceEnhancer(metaEd); enumerationReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const courseOffering = namespace.entity.domainEntity.get('CourseOffering'); - result = extractDocumentReferences(courseOffering, body); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['courseOfferings']; + result = extractDocumentReferences(apiSchema, resourceSchema, body); }); it('should have references', () => { expect(result).toMatchInlineSnapshot(` [ { - "documentIdentity": { - "schoolYearTypeReference.schoolYear": 2022, - "sessionName": "def", - }, + "documentIdentity": [ + { + "schoolYear": 2022, + }, + { + "sessionName": "def", + }, + ], "isDescriptor": false, "projectName": "EdFi", "resourceName": "Session", @@ -649,104 +704,129 @@ describe('when extracting with school year reference in body', () => { }); }); -describe('when extracting with school year in a reference document', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; - let result: DocumentReference[] = []; - - const body = { - studentReference: { - studentUniqueId: 's0zf6d1123d3e', - }, - schoolReference: { - schoolId: 123, - }, - entryDate: '2020-01-01', - entryGradeLevelDescriptor: 'uri://ed-fi.org/GradeLevelDescriptor#10', - graduationPlanReference: { - educationOrganizationId: 123, - graduationPlanTypeDescriptor: 'uri://ed-fi.org/GraduationPlanTypeDescriptor#Minimum', - graduationSchoolYear: 2024, - }, - }; - - beforeAll(() => { - MetaEdTextBuilder.build() - .withBeginNamespace('EdFi') - .withStartDomainEntity('StudentSchoolAssociation') - .withDocumentation('doc') - .withDomainEntityIdentity('Student', 'doc') - .withDomainEntityIdentity('School', 'doc') - .withDateIdentity('EntryDate', 'doc') - .withDescriptorIdentity('EntryGradeLevelDescriptor', 'doc') - .withDomainEntityProperty('GraduationPlan', 'doc', false, false) - .withEndDomainEntity() - - .withStartDomainEntity('School') - .withDocumentation('doc') - .withStringIdentity('SchoolId', 'doc', '30') - .withEndDomainEntity() - - .withStartDomainEntity('Student') - .withDocumentation('doc') - .withStringIdentity('StudentUniqueId', 'doc', '60') - .withEndDomainEntity() - - .withStartDomainEntity('GraduationPlan') - .withDocumentation('doc') - .withDescriptorIdentity('GraduationPlanType', 'doc') - .withDomainEntityIdentity('EducationOrganization', 'doc') - .withEnumerationIdentity('SchoolYear', 'doc', 'Graduation') - .withEndDomainEntity() - - .withEndNamespace() - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new EnumerationBuilder(metaEd, [])) - .sendToListener(new DomainEntityBuilder(metaEd, [])); - - domainEntityReferenceEnhancer(metaEd); - enumerationReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const studentSchoolAssociation = namespace.entity.domainEntity.get('StudentSchoolAssociation'); - result = extractDocumentReferences(studentSchoolAssociation, body); - }); - - it('should have references and schoolYear reference should respect the role name', () => { - expect(result).toMatchInlineSnapshot(` - [ - { - "documentIdentity": { - "graduationPlanTypeDescriptor": "uri://ed-fi.org/GraduationPlanTypeDescriptor#Minimum", - "graduationSchoolYearTypeReference.schoolYear": 2024, - }, - "isDescriptor": false, - "projectName": "EdFi", - "resourceName": "GraduationPlan", - }, - { - "documentIdentity": { - "schoolId": 123, - }, - "isDescriptor": false, - "projectName": "EdFi", - "resourceName": "School", - }, - { - "documentIdentity": { - "studentUniqueId": "s0zf6d1123d3e", - }, - "isDescriptor": false, - "projectName": "EdFi", - "resourceName": "Student", - }, - ] - `); - }); -}); +// TODO - This test fails, will be fixed by RND-660 +// describe('when extracting with school year in a reference document', () => { +// const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); +// let result: DocumentReference[] = []; + +// const body = { +// studentReference: { +// studentUniqueId: 's0zf6d1123d3e', +// }, +// schoolReference: { +// schoolId: 123, +// }, +// entryDate: '2020-01-01', +// entryGradeLevelDescriptor: 'uri://ed-fi.org/GradeLevelDescriptor#10', +// graduationPlanReference: { +// educationOrganizationId: 123, +// graduationPlanTypeDescriptor: 'uri://ed-fi.org/GraduationPlanTypeDescriptor#Minimum', +// graduationSchoolYear: 2024, +// }, +// }; + +// beforeAll(() => { +// MetaEdTextBuilder.build() +// .withBeginNamespace('EdFi') + +// .withStartDomainEntity('StudentSchoolAssociation') +// .withDocumentation('doc') +// .withDomainEntityIdentity('Student', 'doc') +// .withDomainEntityIdentity('School', 'doc') +// .withDateIdentity('EntryDate', 'doc') +// .withDescriptorIdentity('EntryGradeLevelDescriptor', 'doc') +// .withDomainEntityProperty('GraduationPlan', 'doc', false, false) +// .withEndDomainEntity() + +// .withStartDomainEntity('EducationOrganization') +// .withDocumentation('doc') +// .withStringIdentity('EducationOrganizationId', 'doc', '30') +// .withEndDomainEntity() + +// .withStartDomainEntity('School') +// .withDocumentation('doc') +// .withStringIdentity('SchoolId', 'doc', '30') +// .withEndDomainEntity() + +// .withStartDomainEntity('Student') +// .withDocumentation('doc') +// .withStringIdentity('StudentUniqueId', 'doc', '60') +// .withEndDomainEntity() + +// .withStartDomainEntity('GraduationPlan') +// .withDocumentation('doc') +// .withDescriptorIdentity('GraduationPlanType', 'doc') +// .withDomainEntityIdentity('EducationOrganization', 'doc') +// .withEnumerationIdentity('SchoolYear', 'doc', 'Graduation') +// .withEndDomainEntity() + +// .withStartEnumeration('SchoolYear') +// .withDocumentation('doc') +// .withEndEnumeration() + +// .withStartDescriptor('EntryGradeLevelDescriptor') +// .withDocumentation('doc') +// .withEndDescriptor() + +// .withStartDescriptor('GraduationPlanType') +// .withDocumentation('doc') +// .withEndDescriptor() + +// .withEndNamespace() +// .sendToListener(new NamespaceBuilder(metaEd, [])) +// .sendToListener(new DescriptorBuilder(metaEd, [])) +// .sendToListener(new EnumerationBuilder(metaEd, [])) +// .sendToListener(new DomainEntityBuilder(metaEd, [])); + +// domainEntityReferenceEnhancer(metaEd); +// enumerationReferenceEnhancer(metaEd); +// descriptorReferenceEnhancer(metaEd); + +// const apiSchema: ApiSchema = apiSchemaFrom(metaEd); +// const resourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['studentSchoolAssociations']; +// result = extractDocumentReferences(apiSchema, resourceSchema, body); +// }); + +// it('should have references and schoolYear reference should respect the role name', () => { +// expect(result).toMatchInlineSnapshot(` +// [ +// { +// "documentIdentity": [ +// { +// "natural": "s0zf6d1123d3e", +// }, +// ], +// "isDescriptor": false, +// "projectName": "EdFi", +// "resourceName": "Student", +// }, +// { +// "documentIdentity": [ +// { +// "schoolId": 123, +// }, +// ], +// "isDescriptor": false, +// "projectName": "EdFi", +// "resourceName": "School", +// }, +// { +// "documentIdentity": [ +// { +// "educationOrganizationId": 123, +// }, +// { +// "graduationPlanTypeDescriptor": "uri://ed-fi.org/GraduationPlanTypeDescriptor#Minimum", +// }, +// { +// "graduationSchoolYear": 2024, +// }, +// ], +// "isDescriptor": false, +// "projectName": "EdFi", +// "resourceName": "GraduationPlan", +// }, +// ] +// `); +// }); +// }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/handler/DeleteIt.test.ts b/Meadowlark-js/packages/meadowlark-core/test/handler/DeleteIt.test.ts index 49a7ca3e..680bf135 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/handler/DeleteIt.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/handler/DeleteIt.test.ts @@ -5,20 +5,27 @@ import { deleteIt } from '../../src/handler/Delete'; import * as PluginLoader from '../../src/plugin/PluginLoader'; +import * as UriBuilder from '../../src/handler/UriBuilder'; import { FrontendResponse } from '../../src/handler/FrontendResponse'; import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } from '../../src/handler/FrontendRequest'; import { NoDocumentStorePlugin } from '../../src/plugin/backend/NoDocumentStorePlugin'; import { ReferringDocumentInfo } from '../../src/message/ReferringDocumentInfo'; import { DocumentUuid, MeadowlarkId } from '../../src/model/IdTypes'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; +import { MetaEdResourceName } from '../../src/model/api-schema/MetaEdResourceName'; +import { MetaEdProjectName } from '../../src/model/api-schema/MetaEdProjectName'; +import { SemVer } from '../../src/model/api-schema/SemVer'; const frontendRequest: FrontendRequest = { ...newFrontendRequest(), middleware: { ...newFrontendRequestMiddleware(), pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', + endpointName: 'academicWeeks' as EndpointName, + projectNamespace: 'ed-fi' as ProjectNamespace, + projectShortVersion: 'v3.3b' as ProjectShortVersion, documentUuid: '2edb604f-eab0-412c-a242-508d6529214d' as DocumentUuid, }, }, @@ -151,12 +158,14 @@ describe('given id does not exist', () => { describe('given the document to be deleted is referenced by other documents ', () => { let mockDocumentStore: any; + let mockUriBuilder: any; + const expectedBlockingDocument: ReferringDocumentInfo = { - resourceName: 'resourceName', + resourceName: 'resourceName' as MetaEdResourceName, documentUuid: 'documentUuid' as DocumentUuid, meadowlarkId: 'meadowlarkId' as MeadowlarkId, - projectName: 'Ed-Fi', - resourceVersion: '3.3.1-b', + projectName: 'Ed-Fi' as MetaEdProjectName, + resourceVersion: '3.3.1-b' as SemVer, }; let response: FrontendResponse; @@ -169,6 +178,7 @@ describe('given the document to be deleted is referenced by other documents ', ( referringDocumentInfo: [expectedBlockingDocument], }), }); + mockUriBuilder = jest.spyOn(UriBuilder, 'blockingDocumentsToUris').mockReturnValue(['blocking/uri']); // Act response = await deleteIt(frontendRequest); @@ -176,6 +186,7 @@ describe('given the document to be deleted is referenced by other documents ', ( afterAll(() => { mockDocumentStore.mockRestore(); + mockUriBuilder.mockRestore(); }); it('returns status 409', () => { @@ -187,7 +198,7 @@ describe('given the document to be deleted is referenced by other documents ', ( { "error": { "blockingUris": [ - "/v3.3b/ed-fi/resourceNames/documentUuid", + "blocking/uri", ], "message": "The resource cannot be deleted because it is a dependency of other documents", }, diff --git a/Meadowlark-js/packages/meadowlark-core/test/handler/FrontendRequest.test.ts b/Meadowlark-js/packages/meadowlark-core/test/handler/FrontendRequest.test.ts index ad55192c..b0c22361 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/handler/FrontendRequest.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/handler/FrontendRequest.test.ts @@ -9,33 +9,35 @@ import { newFrontendRequestMiddleware, removeReferencesDocumentIdentity, } from '../../src/handler/FrontendRequest'; +import { MetaEdProjectName } from '../../src/model/api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from '../../src/model/api-schema/MetaEdResourceName'; const frontendRequest: FrontendRequest = { ...newFrontendRequest(), middleware: { ...newFrontendRequestMiddleware(), documentInfo: { - documentIdentity: { rootIdentity: 'keyRoot' }, + documentIdentity: [{ rootIdentity: 'keyRoot' }], documentReferences: [ { - documentIdentity: { documentReference: 'keySensitiveToBeRemoved' }, + documentIdentity: [{ documentReference: 'keySensitiveToBeRemoved' }], isDescriptor: false, - projectName: 'projectName', - resourceName: 'resourceName', + projectName: 'projectName' as MetaEdProjectName, + resourceName: 'resourceName' as MetaEdResourceName, }, ], descriptorReferences: [ { - documentIdentity: { descriptorReference: 'keyDescriptor' }, + documentIdentity: [{ descriptorReference: 'keyDescriptor' }], isDescriptor: true, - projectName: 'projectName', - resourceName: 'resourceName2', + projectName: 'projectName' as MetaEdProjectName, + resourceName: 'resourceName2' as MetaEdResourceName, }, ], superclassInfo: { - documentIdentity: { superclassInfo: 'keySuperclassInfo' }, - projectName: 'Test', - resourceName: 'resource', + documentIdentity: [{ superclassInfo: 'keySuperclassInfo' }], + projectName: 'Test' as MetaEdProjectName, + resourceName: 'resource' as MetaEdResourceName, }, requestTimestamp: 0, }, diff --git a/Meadowlark-js/packages/meadowlark-core/test/handler/GetById.test.ts b/Meadowlark-js/packages/meadowlark-core/test/handler/GetById.test.ts index 159eaf70..55d7e555 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/handler/GetById.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/handler/GetById.test.ts @@ -11,11 +11,14 @@ import { PathComponents } from '../../src/model/PathComponents'; import * as PluginLoader from '../../src/plugin/PluginLoader'; import { NoDocumentStorePlugin } from '../../src/plugin/backend/NoDocumentStorePlugin'; import { DocumentUuid } from '../../src/model/IdTypes'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; const validPathComponents: PathComponents = { - resourceName: '1', - namespace: '2', - version: '3', + endpointName: '1' as EndpointName, + projectNamespace: '2' as ProjectNamespace, + projectShortVersion: '3' as ProjectShortVersion, documentUuid: '6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7' as DocumentUuid, }; diff --git a/Meadowlark-js/packages/meadowlark-core/test/handler/Query.test.ts b/Meadowlark-js/packages/meadowlark-core/test/handler/Query.test.ts index 74ce13f0..d2b15d65 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/handler/Query.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/handler/Query.test.ts @@ -9,6 +9,9 @@ import * as PluginLoader from '../../src/plugin/PluginLoader'; import { FrontendResponse } from '../../src/handler/FrontendResponse'; import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } from '../../src/handler/FrontendRequest'; import { NoDocumentStorePlugin } from '../../src/plugin/backend/NoDocumentStorePlugin'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; const frontendRequest: FrontendRequest = { ...newFrontendRequest(), @@ -16,9 +19,9 @@ const frontendRequest: FrontendRequest = { middleware: { ...newFrontendRequestMiddleware(), pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', + endpointName: 'academicWeeks' as EndpointName, + projectNamespace: 'ed-fi' as ProjectNamespace, + projectShortVersion: 'v3.3b' as ProjectShortVersion, }, }, }; diff --git a/Meadowlark-js/packages/meadowlark-core/test/handler/Update.test.ts b/Meadowlark-js/packages/meadowlark-core/test/handler/Update.test.ts index fd88ca21..323e295b 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/handler/Update.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/handler/Update.test.ts @@ -5,11 +5,18 @@ import { update } from '../../src/handler/Update'; import * as PluginLoader from '../../src/plugin/PluginLoader'; +import * as UriBuilder from '../../src/handler/UriBuilder'; import { FrontendResponse } from '../../src/handler/FrontendResponse'; import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } from '../../src/handler/FrontendRequest'; import { NoDocumentStorePlugin } from '../../src/plugin/backend/NoDocumentStorePlugin'; import { ReferringDocumentInfo } from '../../src/message/ReferringDocumentInfo'; import { DocumentUuid, MeadowlarkId } from '../../src/model/IdTypes'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; +import { MetaEdResourceName } from '../../src/model/api-schema/MetaEdResourceName'; +import { MetaEdProjectName } from '../../src/model/api-schema/MetaEdProjectName'; +import { SemVer } from '../../src/model/api-schema/SemVer'; const documentUuid = '2edb604f-eab0-412c-a242-508d6529214d' as DocumentUuid; const frontendRequest: FrontendRequest = { @@ -18,9 +25,9 @@ const frontendRequest: FrontendRequest = { middleware: { ...newFrontendRequestMiddleware(), pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', + endpointName: 'academicWeeks' as EndpointName, + projectNamespace: 'ed-fi' as ProjectNamespace, + projectShortVersion: 'v3.3b' as ProjectShortVersion, documentUuid, }, }, @@ -61,12 +68,14 @@ describe('given the requested document does not exist', () => { describe('given the new document has an invalid reference ', () => { let mockDocumentStore: any; + let mockUriBuilder: any; + const expectedBlockingDocument: ReferringDocumentInfo = { - resourceName: 'resourceName', + resourceName: 'resourceName' as MetaEdResourceName, documentUuid: 'documentUuid' as DocumentUuid, meadowlarkId: 'meadowlarkId' as MeadowlarkId, - projectName: 'Ed-Fi', - resourceVersion: '3.3.1-b', + projectName: 'Ed-Fi' as MetaEdProjectName, + resourceVersion: '3.3.1-b' as SemVer, }; const expectedError = 'this is the message'; let response: FrontendResponse; @@ -82,6 +91,8 @@ describe('given the new document has an invalid reference ', () => { }), }); + mockUriBuilder = jest.spyOn(UriBuilder, 'blockingDocumentsToUris').mockReturnValue(['blocking/uri']); + const frontendRequestTest = frontendRequest; frontendRequestTest.middleware.parsedBody = { id: documentUuid }; // Act @@ -90,6 +101,7 @@ describe('given the new document has an invalid reference ', () => { afterAll(() => { mockDocumentStore.mockRestore(); + mockUriBuilder.mockRestore(); }); it('returns status 409', () => { @@ -101,7 +113,7 @@ describe('given the new document has an invalid reference ', () => { expect(response.body).toMatchInlineSnapshot(` { "blockingUris": [ - "/v3.3b/ed-fi/resourceNames/documentUuid", + "blocking/uri", ], "error": "this is the message", } diff --git a/Meadowlark-js/packages/meadowlark-core/test/handler/Upsert.test.ts b/Meadowlark-js/packages/meadowlark-core/test/handler/Upsert.test.ts index 953760db..2d00a383 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/handler/Upsert.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/handler/Upsert.test.ts @@ -6,12 +6,19 @@ import { upsert } from '../../src/handler/Upsert'; import { UpsertResult } from '../../src/message/UpsertResult'; import * as PluginLoader from '../../src/plugin/PluginLoader'; +import * as UriBuilder from '../../src/handler/UriBuilder'; import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } from '../../src/handler/FrontendRequest'; import { FrontendResponse } from '../../src/handler/FrontendResponse'; import { NoDocumentStorePlugin } from '../../src/plugin/backend/NoDocumentStorePlugin'; import { ReferringDocumentInfo } from '../../src/message/ReferringDocumentInfo'; import { isDocumentUuidWellFormed } from '../../src/model/DocumentIdentity'; import { DocumentUuid, MeadowlarkId } from '../../src/model/IdTypes'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; +import { MetaEdResourceName } from '../../src/model/api-schema/MetaEdResourceName'; +import { MetaEdProjectName } from '../../src/model/api-schema/MetaEdProjectName'; +import { SemVer } from '../../src/model/api-schema/SemVer'; const documentUuid = '3218d452-a7b7-4f1c-aa91-26ccc48cf4b8' as DocumentUuid; const frontendRequest: FrontendRequest = { @@ -20,9 +27,9 @@ const frontendRequest: FrontendRequest = { middleware: { ...newFrontendRequestMiddleware(), pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', + endpointName: 'academicWeeks' as EndpointName, + projectNamespace: 'ed-fi' as ProjectNamespace, + projectShortVersion: 'v3.3b' as ProjectShortVersion, }, }, }; @@ -30,13 +37,14 @@ const frontendRequest: FrontendRequest = { describe('given persistence is going to throw a reference error on insert', () => { let response: FrontendResponse; const expectedBlockingDocument: ReferringDocumentInfo = { - resourceName: 'resourceName', + resourceName: 'resourceName' as MetaEdResourceName, documentUuid, meadowlarkId: 'meadowlarkId' as MeadowlarkId, - projectName: 'Ed-Fi', - resourceVersion: '3.3.1-b', + projectName: 'Ed-Fi' as MetaEdProjectName, + resourceVersion: '3.3.1-b' as SemVer, }; let mockDocumentStore: any; + let mockUriBuilder: any; const expectedError = 'Error message'; beforeAll(async () => { @@ -49,6 +57,7 @@ describe('given persistence is going to throw a reference error on insert', () = referringDocumentInfo: [expectedBlockingDocument], }), }); + mockUriBuilder = jest.spyOn(UriBuilder, 'blockingDocumentsToUris').mockReturnValue(['blocking/uri']); // Act response = await upsert(frontendRequest); @@ -56,6 +65,7 @@ describe('given persistence is going to throw a reference error on insert', () = afterAll(() => { mockDocumentStore.mockRestore(); + mockUriBuilder.mockRestore(); }); it('returns status 409', () => { @@ -67,7 +77,7 @@ describe('given persistence is going to throw a reference error on insert', () = expect(response.body).toMatchInlineSnapshot(` { "blockingUris": [ - "/v3.3b/ed-fi/resourceNames/${documentUuid}", + "blocking/uri", ], "error": "Error message", } @@ -114,13 +124,14 @@ describe('given upsert has write conflict failure', () => { describe('given persistence is going to throw a conflict error on insert', () => { let response: FrontendResponse; const expectedBlockingDocument: ReferringDocumentInfo = { - resourceName: 'resourceName', + resourceName: 'resourceName' as MetaEdResourceName, documentUuid, meadowlarkId: 'meadowlarkId' as MeadowlarkId, - projectName: 'Ed-Fi', - resourceVersion: '3.3.1-b', + projectName: 'Ed-Fi' as MetaEdProjectName, + resourceVersion: '3.3.1-b' as SemVer, }; let mockDocumentStore: any; + let mockUriBuilder: any; const expectedError = 'Error message'; beforeAll(async () => { @@ -133,6 +144,7 @@ describe('given persistence is going to throw a conflict error on insert', () => referringDocumentInfo: [expectedBlockingDocument], }), }); + mockUriBuilder = jest.spyOn(UriBuilder, 'blockingDocumentsToUris').mockReturnValue(['blocking/uri']); // Act response = await upsert(frontendRequest); @@ -140,6 +152,7 @@ describe('given persistence is going to throw a conflict error on insert', () => afterAll(() => { mockDocumentStore.mockRestore(); + mockUriBuilder.mockRestore(); }); it('returns status 409', () => { @@ -151,7 +164,7 @@ describe('given persistence is going to throw a conflict error on insert', () => expect(response.body).toMatchInlineSnapshot(` { "blockingUris": [ - "/v3.3b/ed-fi/resourceNames/${documentUuid}", + "blocking/uri", ], "error": "Error message", } @@ -162,13 +175,14 @@ describe('given persistence is going to throw a conflict error on insert', () => describe('given persistence is going to throw a reference error on update though did not on insert attempt', () => { let response: FrontendResponse; const expectedBlockingDocument: ReferringDocumentInfo = { - resourceName: 'resourceName', + resourceName: 'resourceName' as MetaEdResourceName, documentUuid, meadowlarkId: 'meadowlarkId' as MeadowlarkId, - projectName: 'Ed-Fi', - resourceVersion: '3.3.1-b', + projectName: 'Ed-Fi' as MetaEdProjectName, + resourceVersion: '3.3.1-b' as SemVer, }; let mockDocumentStore: any; + let mockUriBuilder: any; beforeAll(async () => { mockDocumentStore = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ @@ -180,6 +194,7 @@ describe('given persistence is going to throw a reference error on update though referringDocumentInfo: [expectedBlockingDocument], }), }); + mockUriBuilder = jest.spyOn(UriBuilder, 'blockingDocumentsToUris').mockReturnValue(['blocking/uri']); // Act response = await upsert(frontendRequest); @@ -187,6 +202,7 @@ describe('given persistence is going to throw a reference error on update though afterAll(() => { mockDocumentStore.mockRestore(); + mockUriBuilder.mockRestore(); }); it('returns status 409', () => { @@ -197,7 +213,7 @@ describe('given persistence is going to throw a reference error on update though expect(response.body).toMatchInlineSnapshot(` { "blockingUris": [ - "/v3.3b/ed-fi/resourceNames/${documentUuid}", + "blocking/uri", ], "error": "Reference failure", } diff --git a/Meadowlark-js/packages/meadowlark-core/test/integration/metaed/MetaEdValidation.test.ts b/Meadowlark-js/packages/meadowlark-core/test/integration/metaed/MetaEdValidation.test.ts deleted file mode 100644 index 2ad8f9bb..00000000 --- a/Meadowlark-js/packages/meadowlark-core/test/integration/metaed/MetaEdValidation.test.ts +++ /dev/null @@ -1,398 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { Config, Environment, initializeLogging, getBooleanFromEnvironment } from '@edfi/meadowlark-utilities'; -import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } from '../../../src/handler/FrontendRequest'; -import { FrontendResponse } from '../../../src/handler/FrontendResponse'; -import { upsert, update } from '../../../src/handler/FrontendFacade'; -import * as Publish from '../../../src/plugin/listener/Publish'; -import { NoDocumentStorePlugin } from '../../../src/plugin/backend/NoDocumentStorePlugin'; -import * as PluginLoader from '../../../src/plugin/PluginLoader'; -import { MiddlewareModel } from '../../../src/middleware/MiddlewareModel'; -import * as AuthorizationMiddleware from '../../../src/middleware/AuthorizationMiddleware'; -import * as ParsePathMiddleware from '../../../src/middleware/ParsePathMiddleware'; -import { setupMockConfiguration } from '../../ConfigHelper'; -import { UpsertResult } from '../../../src/message/UpsertResult'; -import { UpdateResult } from '../../../src/message/UpdateResult'; -import { DocumentUuid } from '../../../src/model/IdTypes'; -import { clearAllValidatorCache } from '../../../src/metaed/MetaEdValidation'; - -let upsertResponse: FrontendResponse; -let updateResponse: FrontendResponse; -let mockUpsert: any; -let mockUpdate: any; - -const originalGetBooleanFromEnvironment = getBooleanFromEnvironment; - -const frontendRequest: FrontendRequest = { - ...newFrontendRequest(), - body: `{ - "weekIdentifier": "123456", - "schoolReference": { - "schoolId": 123 - }, - "beginDate": "2023-10-30", - "endDate": "2023-10-30", - "totalInstructionalDays": 10 - }`, - middleware: { - ...newFrontendRequestMiddleware(), - pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', - }, - }, -}; - -const frontendRequestUpdate: FrontendRequest = { - ...frontendRequest, - body: `{ - "id": "6b48af60-afe7-4df2-b783-dc614ec9bb64", - "weekIdentifier": "123456", - "schoolReference": { - "schoolId": 123 - }, - "beginDate": "2023-10-30", - "endDate": "2023-10-30", - "totalInstructionalDays": 10 - }`, - middleware: { - ...newFrontendRequestMiddleware(), - pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', - documentUuid: '6b48af60-afe7-4df2-b783-dc614ec9bb64' as DocumentUuid, - }, - }, -}; - -const frontendRequestAdditionalProperties: FrontendRequest = { - ...newFrontendRequest(), - body: `{ - "weekIdentifier": "123456", - "schoolReference": { - "schoolId": 123 - }, - "beginDate": "2023-10-30", - "endDate": "2023-10-30", - "extraneousProperty": "LoremIpsum", - "totalInstructionalDays": 10 - }`, - middleware: { - ...newFrontendRequestMiddleware(), - pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', - }, - }, -}; -const frontendRequestUpdateAdditionalProperties: FrontendRequest = { - ...frontendRequestAdditionalProperties, - body: `{ - "id": "6b48af60-afe7-4df2-b783-dc614ec9bb64", - "weekIdentifier": "123456", - "schoolReference": { - "schoolId": 123 - }, - "beginDate": "2023-10-30", - "endDate": "2023-10-30", - "extraneousProperty": "LoremIpsum", - "totalInstructionalDays": 10 - }`, - middleware: { - ...newFrontendRequestMiddleware(), - pathComponents: { - resourceName: 'academicWeeks', - namespace: 'ed-fi', - version: 'v3.3b', - documentUuid: '6b48af60-afe7-4df2-b783-dc614ec9bb64' as DocumentUuid, - }, - }, -}; - -describe('given Allow Overposting equals to false', () => { - beforeAll(async () => { - clearAllValidatorCache(); - setupMockConfiguration(); - initializeLogging(); - jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue(NoDocumentStorePlugin); - jest.spyOn(Environment, 'getBooleanFromEnvironment').mockImplementation((key: Config.ConfigKeys) => { - if (key === 'ALLOW_OVERPOSTING') { - return false; - } - return originalGetBooleanFromEnvironment(key, false); - }); - }); - - afterAll(() => { - jest.restoreAllMocks(); - }); - - describe('when upserting a document without extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpsertDocument').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpdate = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - upsertDocument: async () => - Promise.resolve({ - response: 'INSERT_SUCCESS', - newDocumentUuid: '6b48af60-afe7-4df2-b783-dc614ec9bb64', - failureMessage: null, - } as unknown as UpsertResult), - }); - // Act - upsertResponse = await upsert(frontendRequest); - }); - - afterAll(() => { - mockUpdate.mockRestore(); - }); - - it('returns status 201', () => { - expect(upsertResponse.statusCode).toEqual(201); - }); - }); - - describe('when updating a document without extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest: frontendRequestUpdate, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpdateDocumentById').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpdate = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - updateDocumentById: async () => - Promise.resolve({ - response: 'UPDATE_SUCCESS', - failureMessage: null, - } as unknown as UpdateResult), - }); - // Act - updateResponse = await update(frontendRequestUpdate); - }); - - afterAll(() => { - mockUpdate.mockRestore(); - }); - - it('returns status 204', () => { - expect(updateResponse.statusCode).toEqual(204); - }); - }); - - describe('when upserting a document with extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest: frontendRequestAdditionalProperties, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpsertDocument').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpsert = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - upsertDocument: async () => - Promise.resolve({ - response: 'INSERT_SUCCESS', - newDocumentUuid: '6b48af60-afe7-4df2-b783-dc614ec9bb64', - failureMessage: null, - } as unknown as UpsertResult), - }); - // Act - upsertResponse = await upsert(frontendRequestAdditionalProperties); - }); - - afterAll(() => { - mockUpsert.mockRestore(); - }); - - it('returns status 400', () => { - expect(upsertResponse.statusCode).toEqual(400); - }); - }); - - describe('when updating a document with extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest: frontendRequestUpdateAdditionalProperties, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpdateDocumentById').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpsert = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - updateDocumentById: async () => - Promise.resolve({ - response: 'UPDATE_SUCCESS', - failureMessage: null, - } as unknown as UpdateResult), - }); - // Act - updateResponse = await update(frontendRequestUpdateAdditionalProperties); - }); - - afterAll(() => { - mockUpsert.mockRestore(); - }); - - it('returns status 400', () => { - expect(updateResponse.statusCode).toEqual(400); - }); - }); -}); - -describe('given Allow Overposting equals to true', () => { - beforeAll(async () => { - clearAllValidatorCache(); - setupMockConfiguration(); - initializeLogging(); - jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue(NoDocumentStorePlugin); - jest.spyOn(Environment, 'getBooleanFromEnvironment').mockImplementation((key: Config.ConfigKeys) => { - if (key === 'ALLOW_OVERPOSTING') { - return true; - } - return originalGetBooleanFromEnvironment(key, false); - }); - }); - - afterAll(() => { - jest.restoreAllMocks(); - }); - - describe('when upserting a document without extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpsertDocument').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpdate = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - upsertDocument: async () => - Promise.resolve({ - response: 'INSERT_SUCCESS', - newDocumentUuid: '6b48af60-afe7-4df2-b783-dc614ec9bb64', - failureMessage: null, - } as unknown as UpsertResult), - }); - // Act - upsertResponse = await upsert(frontendRequest); - }); - - afterAll(() => { - mockUpdate.mockRestore(); - }); - - it('returns status 201', () => { - expect(upsertResponse.statusCode).toEqual(201); - }); - }); - - describe('when updating a document without extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest: frontendRequestUpdate, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpdateDocumentById').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpdate = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - updateDocumentById: async () => - Promise.resolve({ - response: 'UPDATE_SUCCESS', - failureMessage: null, - } as unknown as UpdateResult), - }); - // Act - updateResponse = await update(frontendRequestUpdate); - }); - - afterAll(() => { - mockUpdate.mockRestore(); - }); - - it('returns status 204', () => { - expect(updateResponse.statusCode).toEqual(204); - }); - }); - - describe('when upserting a document with extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest: frontendRequestAdditionalProperties, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpsertDocument').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpdate = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - upsertDocument: async () => - Promise.resolve({ - response: 'INSERT_SUCCESS', - newDocumentUuid: '6b48af60-afe7-4df2-b783-dc614ec9bb64', - failureMessage: null, - } as unknown as UpsertResult), - }); - // Act - upsertResponse = await upsert(frontendRequestAdditionalProperties); - }); - - afterAll(() => { - mockUpdate.mockRestore(); - }); - - it('returns status 201', () => { - expect(upsertResponse.statusCode).toEqual(201); - }); - }); - - describe('when updating a document with extraneous properties', () => { - beforeAll(async () => { - const model: MiddlewareModel = { - frontendRequest: frontendRequestUpdateAdditionalProperties, - frontendResponse: null, - }; - jest.spyOn(Publish, 'afterUpdateDocumentById').mockImplementation(async () => Promise.resolve()); - jest.spyOn(AuthorizationMiddleware, 'authorize').mockResolvedValue(model); - jest.spyOn(ParsePathMiddleware, 'parsePath').mockResolvedValue(model); - mockUpdate = jest.spyOn(PluginLoader, 'getDocumentStore').mockReturnValue({ - ...NoDocumentStorePlugin, - updateDocumentById: async () => - Promise.resolve({ - response: 'UPDATE_SUCCESS', - failureMessage: null, - } as unknown as UpdateResult), - }); - // Act - updateResponse = await update(frontendRequestUpdateAdditionalProperties); - }); - - afterAll(() => { - mockUpdate.mockRestore(); - }); - - it('returns status 204', () => { - expect(updateResponse.statusCode).toEqual(204); - }); - }); -}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/metaed/ResourceNameMapping.test.ts b/Meadowlark-js/packages/meadowlark-core/test/metaed/ResourceNameMapping.test.ts deleted file mode 100644 index 10d24aec..00000000 --- a/Meadowlark-js/packages/meadowlark-core/test/metaed/ResourceNameMapping.test.ts +++ /dev/null @@ -1,271 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { - newMetaEdEnvironment, - MetaEdEnvironment, - DomainEntityBuilder, - MetaEdTextBuilder, - NamespaceBuilder, - DomainEntitySubclassBuilder, - AssociationBuilder, - AssociationSubclassBuilder, - DescriptorBuilder, -} from '@edfi/metaed-core'; -import { getMetaEdModelForResourceName, resetCache } from '../../src/metaed/ResourceNameMapping'; - -describe('when looking for a domain entity model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - MetaEdTextBuilder.build() - .withBeginNamespace(namespace) - .withStartDomainEntity('Section') - .withDocumentation('doc') - .withStringIdentity('SectionIdentifier', 'doc', '30') - .withEndDomainEntity() - .withEndNamespace() - - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new DomainEntityBuilder(metaEd, [])); - }); - - describe('and given upper case resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('Sections', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name', () => { - it('returns true', () => { - expect(getMetaEdModelForResourceName('sections', metaEd, namespace)).toBeDefined(); - }); - }); - - describe('and given non-pluralized resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('section', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); - -describe('when looking for a domain entity subclass model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - resetCache(); - MetaEdTextBuilder.build() - .withBeginNamespace(namespace) - .withStartDomainEntity('EducationOrganization') - .withDocumentation('doc') - .withIntegerIdentity('EducationOrganizationId', 'doc') - .withEndDomainEntity() - - .withStartDomainEntitySubclass('School', 'EducationOrganization') - .withIntegerIdentity('SchoolId', 'doc') - .withEndDomainEntitySubclass() - .withEndNamespace() - - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new DomainEntityBuilder(metaEd, [])) - .sendToListener(new DomainEntitySubclassBuilder(metaEd, [])); - }); - - describe('and given upper case resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('Schools', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name', () => { - it('returns true', () => { - expect(getMetaEdModelForResourceName('schools', metaEd, namespace)).toBeDefined(); - }); - }); - - describe('and given non-pluralized resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('school', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); - -describe('when looking for a non-GeneralStudentProgramAssociation association model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - resetCache(); - MetaEdTextBuilder.build() - .withBeginNamespace(namespace) - .withStartAssociation('SectionAssociation') - .withDocumentation('doc') - .withStringIdentity('SectionIdentifier', 'doc', '30') - .withEndAssociation() - - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new AssociationBuilder(metaEd, [])); - }); - - describe('and given upper case resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('SectionAssociations', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name', () => { - it('returns true', () => { - expect(getMetaEdModelForResourceName('sectionAssociations', metaEd, namespace)).toBeDefined(); - }); - }); - - describe('and given non-pluralized resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('sectionAssociation', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); - -describe('when looking for the GeneralStudentProgramAssociation model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - resetCache(); - MetaEdTextBuilder.build() - .withBeginNamespace(namespace) - .withStartAssociation('GeneralStudentProgramAssociation') - .withDocumentation('doc') - .withIntegerIdentity('EducationOrganizationId', 'doc') - .withEndAssociation() - - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new AssociationBuilder(metaEd, [])); - }); - - describe('and given upper case resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('GeneralStudentProgramAssociations', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('generalStudentProgramAssociations', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given non-pluralized resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('generalStudentProgramAssociation', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); - -describe('when looking for an association subclass model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - resetCache(); - MetaEdTextBuilder.build() - .withBeginNamespace(namespace) - .withStartAssociation('GeneralStudentProgramAssociation') - .withDocumentation('doc') - .withIntegerIdentity('EducationOrganizationId', 'doc') - .withEndAssociation() - - .withStartAssociationSubclass('StudentProgramAssociation', 'GeneralStudentProgramAssociation') - .withDocumentation('doc') - .withIntegerIdentity('Service', 'doc') - .withEndAssociationSubclass() - - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new AssociationBuilder(metaEd, [])) - .sendToListener(new AssociationSubclassBuilder(metaEd, [])); - }); - - describe('and given upper case resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('StudentProgramAssociations', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name', () => { - it('returns true', () => { - expect(getMetaEdModelForResourceName('studentProgramAssociations', metaEd, namespace)).toBeDefined(); - }); - }); - - describe('and given non-pluralized resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('studentProgramAssociation', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); - -describe('when looking for a descriptor model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - resetCache(); - MetaEdTextBuilder.build() - .withBeginNamespace(namespace) - .withStartDescriptor('GradeLevel') - .withDocumentation('doc') - .withEndDescriptor() - - .sendToListener(new NamespaceBuilder(metaEd, [])) - .sendToListener(new DescriptorBuilder(metaEd, [])); - }); - - describe('and given upper case resource name without "Descriptor" suffix', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('GradeLevels', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name without "Descriptor" suffix', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('gradeLevels', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given upper case resource name with "Descriptor" suffix', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('GradeLevelDescriptors', metaEd, namespace)).not.toBeDefined(); - }); - }); - - describe('and given lower case resource name with "Descriptor" suffix', () => { - it('returns true', () => { - expect(getMetaEdModelForResourceName('gradeLevelDescriptors', metaEd, namespace)).toBeDefined(); - }); - }); - - describe('and given non-pluralized resource name', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('gradeLevelDescriptor', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); - -describe('when looking for a non-existant model matching a resource name', () => { - const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - const namespace = 'EdFi'; - - beforeAll(() => { - resetCache(); - }); - - describe('given entity does not exist', () => { - it('returns false', () => { - expect(getMetaEdModelForResourceName('DoesNotExist', metaEd, namespace)).not.toBeDefined(); - }); - }); -}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/AuthorizationMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/AuthorizationMiddleware.test.ts index 7f2bc9a0..75eee18b 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/AuthorizationMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/AuthorizationMiddleware.test.ts @@ -11,7 +11,7 @@ import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } fro import { MiddlewareModel } from '../../src/middleware/MiddlewareModel'; import { setupMockConfiguration } from '../ConfigHelper'; -const newAxiosResponse = () => ({ status: 0, data: {}, headers: {}, config: {}, statusText: '' }) as AxiosResponse; +const newAxiosResponse = () => ({ status: 0, data: {}, headers: {}, config: {}, statusText: '' } as AxiosResponse); describe('given a previous middleware has created a response', () => { const frontendRequest: FrontendRequest = newFrontendRequest(); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/ExtractDocumentInfoMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/ExtractDocumentInfoMiddleware.test.ts index bf80b02e..2033b2ef 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/ExtractDocumentInfoMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/ExtractDocumentInfoMiddleware.test.ts @@ -3,28 +3,28 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import * as DocumentInfoExtractor from '../../src/extraction/DocumentInfoExtractor'; +import * as BuildDocumentInfo from '../../src/extraction/BuildDocumentInfo'; import { documentInfoExtraction } from '../../src/middleware/ExtractDocumentInfoMiddleware'; import { FrontendResponse, newFrontendResponse } from '../../src/handler/FrontendResponse'; import { FrontendRequest, newFrontendRequest } from '../../src/handler/FrontendRequest'; -import { DocumentInfo, newDocumentInfo, NoDocumentInfo } from '../../src/model/DocumentInfo'; +import { newDocumentInfo, NoDocumentInfo } from '../../src/model/DocumentInfo'; import { MiddlewareModel } from '../../src/middleware/MiddlewareModel'; describe('given a previous middleware has created a response', () => { const frontendRequest: FrontendRequest = newFrontendRequest(); const frontendResponse: FrontendResponse = newFrontendResponse(); let resultChain: MiddlewareModel; - let mockDocumentValidator: any; + let mockDocumentInfoBuilder: any; beforeAll(async () => { - mockDocumentValidator = jest.spyOn(DocumentInfoExtractor, 'extractDocumentInfo'); + mockDocumentInfoBuilder = jest.spyOn(BuildDocumentInfo, 'buildDocumentInfo'); // Act resultChain = await documentInfoExtraction({ frontendRequest, frontendResponse }); }); afterAll(() => { - mockDocumentValidator.mockRestore(); + mockDocumentInfoBuilder.mockRestore(); }); it('returns the given request', () => { @@ -36,28 +36,24 @@ describe('given a previous middleware has created a response', () => { }); it('never calls documentInfoExtraction', () => { - expect(mockDocumentValidator).not.toHaveBeenCalled(); + expect(mockDocumentInfoBuilder).not.toHaveBeenCalled(); }); }); describe('given a no document info response from extractDocumentInfo', () => { const frontendRequest: FrontendRequest = newFrontendRequest(); let resultChain: MiddlewareModel; - let mockDocumentValidator: any; + let mockDocumentInfoBuilder: any; beforeAll(async () => { - const validationResult: DocumentInfo = NoDocumentInfo; - - mockDocumentValidator = jest - .spyOn(DocumentInfoExtractor, 'extractDocumentInfo') - .mockReturnValue(Promise.resolve(validationResult)); + mockDocumentInfoBuilder = jest.spyOn(BuildDocumentInfo, 'buildDocumentInfo').mockImplementation(() => NoDocumentInfo); // Act resultChain = await documentInfoExtraction({ frontendRequest, frontendResponse: null }); }); afterAll(() => { - mockDocumentValidator.mockRestore(); + mockDocumentInfoBuilder.mockRestore(); }); it('returns the given request', () => { @@ -78,21 +74,17 @@ describe('given a document info response from extractDocumentInfo', () => { const documentInfo = newDocumentInfo(); const headerMetadata = {}; let resultChain: MiddlewareModel; - let mockDocumentValidator: any; + let mockDocumentInfoBuilder: any; beforeAll(async () => { - const validationResult = documentInfo; - - mockDocumentValidator = jest - .spyOn(DocumentInfoExtractor, 'extractDocumentInfo') - .mockReturnValue(Promise.resolve(validationResult)); + mockDocumentInfoBuilder = jest.spyOn(BuildDocumentInfo, 'buildDocumentInfo').mockImplementation(() => documentInfo); // Act resultChain = await documentInfoExtraction({ frontendRequest, frontendResponse: null }); }); afterAll(() => { - mockDocumentValidator.mockRestore(); + mockDocumentInfoBuilder.mockRestore(); }); it('returns the given request', () => { diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/FindMetaEdModelMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/FindMetaEdModelMiddleware.test.ts deleted file mode 100644 index 9d0faea5..00000000 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/FindMetaEdModelMiddleware.test.ts +++ /dev/null @@ -1,107 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { newTopLevelEntity, TopLevelEntity } from '@edfi/metaed-core'; -import * as MetaEdModelFinder from '../../src/metaed/MetaEdModelFinder'; -import { metaEdModelFinding } from '../../src/middleware/FindMetaEdModelMiddleware'; -import { FrontendResponse, newFrontendResponse } from '../../src/handler/FrontendResponse'; -import { FrontendRequest, newFrontendRequest } from '../../src/handler/FrontendRequest'; -import { MiddlewareModel } from '../../src/middleware/MiddlewareModel'; - -describe('given a previous middleware has created a response', () => { - const frontendRequest: FrontendRequest = newFrontendRequest(); - const frontendResponse: FrontendResponse = newFrontendResponse(); - let resultChain: MiddlewareModel; - let mockDocumentValidator: any; - - beforeAll(async () => { - mockDocumentValidator = jest.spyOn(MetaEdModelFinder, 'findMetaEdModel'); - - // Act - resultChain = await metaEdModelFinding({ frontendRequest, frontendResponse }); - }); - - afterAll(() => { - mockDocumentValidator.mockRestore(); - }); - - it('returns the given request', () => { - expect(resultChain.frontendRequest).toBe(frontendRequest); - }); - - it('returns the given response', () => { - expect(resultChain.frontendResponse).toBe(frontendResponse); - }); - - it('never calls metaEdModelFinding', () => { - expect(mockDocumentValidator).not.toHaveBeenCalled(); - }); -}); - -describe('given a no match response from findMetaEdModel', () => { - const frontendRequest: FrontendRequest = newFrontendRequest(); - let resultChain: MiddlewareModel; - let mockDocumentValidator: any; - - beforeAll(async () => { - mockDocumentValidator = jest.spyOn(MetaEdModelFinder, 'findMetaEdModel').mockReturnValue(Promise.resolve(undefined)); - - // Act - resultChain = await metaEdModelFinding({ frontendRequest, frontendResponse: null }); - }); - - afterAll(() => { - mockDocumentValidator.mockRestore(); - }); - - it('returns the given request', () => { - expect(resultChain.frontendRequest).toBe(frontendRequest); - }); - - it('returns status 500', () => { - expect(resultChain.frontendResponse?.statusCode).toEqual(500); - }); - - it('returns an empty body', () => { - expect(resultChain.frontendResponse?.body).toBeUndefined(); - }); -}); - -describe('given a match response from findMetaEdModel', () => { - const frontendRequest: FrontendRequest = newFrontendRequest(); - const topLevelEntity: TopLevelEntity = newTopLevelEntity(); - const headerMetadata = {}; - let resultChain: MiddlewareModel; - let mockDocumentValidator: any; - - beforeAll(async () => { - mockDocumentValidator = jest - .spyOn(MetaEdModelFinder, 'findMetaEdModel') - .mockReturnValue(Promise.resolve(topLevelEntity)); - - // Act - resultChain = await metaEdModelFinding({ frontendRequest, frontendResponse: null }); - }); - - afterAll(() => { - mockDocumentValidator.mockRestore(); - }); - - it('returns the given request', () => { - expect(resultChain.frontendRequest).toBe(frontendRequest); - }); - - it('adds matchingMetaEdModel to frontendRequest', () => { - expect(resultChain.frontendRequest.middleware.matchingMetaEdModel).toBe(topLevelEntity); - }); - - it('adds headerMetadata to frontendRequest', () => { - expect(resultChain.frontendRequest.middleware.headerMetadata).toEqual(headerMetadata); - }); - - it('does not create a response', () => { - expect(resultChain.frontendResponse).toBeNull(); - }); -}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/ParsePathMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/ParsePathMiddleware.test.ts index 1cc147e1..374e5270 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/ParsePathMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/ParsePathMiddleware.test.ts @@ -86,9 +86,9 @@ describe('given a valid path without resourceId', () => { expect(resultChain.frontendRequest.middleware.pathComponents).toMatchInlineSnapshot(` { "documentUuid": undefined, - "namespace": "2", - "resourceName": "3", - "version": "1", + "endpointName": "3", + "projectNamespace": "2", + "projectShortVersion": "1", } `); }); @@ -117,9 +117,9 @@ describe('given a valid path with resourceId', () => { expect(resultChain.frontendRequest.middleware.pathComponents).toMatchInlineSnapshot(` { "documentUuid": "7825fba8-0b3d-4fc9-ae72-5ad8194d3ce2", - "namespace": "2", - "resourceName": "3", - "version": "1", + "endpointName": "3", + "projectNamespace": "2", + "projectShortVersion": "1", } `); }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/ResponseLoggingMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/ResponseLoggingMiddleware.test.ts index 70710443..c0d2721b 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/ResponseLoggingMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/ResponseLoggingMiddleware.test.ts @@ -5,6 +5,7 @@ import * as MeadowlarkUtilities from '@edfi/meadowlark-utilities'; import { Logger } from '@edfi/meadowlark-utilities'; +import * as CoreLogger from '../../src/Logger'; import { logTheResponse } from '../../src/middleware/ResponseLoggingMiddleware'; import { MiddlewareModel } from '../../src/middleware/MiddlewareModel'; import { newFrontendResponse } from '../../src/handler/FrontendResponse'; @@ -45,7 +46,7 @@ describe('when logging the response', () => { let loggerSpy: any; beforeEach(() => { - loggerSpy = jest.spyOn(Logger, 'debug'); + loggerSpy = jest.spyOn(CoreLogger, 'writeDebugStatusToLog'); jest.spyOn(MeadowlarkUtilities, 'isDebugEnabled').mockImplementation(() => true); setupMockConfiguration(); }); @@ -74,7 +75,14 @@ describe('when logging the response', () => { await logTheResponse(model); - expect(loggerSpy).toHaveBeenCalledWith('core.middleware.ResponseLoggingMiddleware.logTheResponse 404', traceId, body); + expect(loggerSpy).toHaveBeenCalledWith( + 'core.middleware.ResponseLoggingMiddleware', + traceId, + 'logTheResponse', + 404, + '', + body, + ); }); }); @@ -112,7 +120,7 @@ describe('when logging the response', () => { let loggerSpy: any; beforeEach(() => { - loggerSpy = jest.spyOn(Logger, 'debug'); + loggerSpy = jest.spyOn(CoreLogger, 'writeDebugStatusToLog'); jest.spyOn(MeadowlarkUtilities, 'isDebugEnabled').mockImplementation(() => true); setupMockConfiguration(); }); @@ -147,9 +155,14 @@ describe('when logging the response', () => { await logTheResponse(model); - expect(loggerSpy).toHaveBeenCalledWith('core.middleware.ResponseLoggingMiddleware.logTheResponse 400', traceId, { - error: body, - }); + expect(loggerSpy).toHaveBeenCalledWith( + 'core.middleware.ResponseLoggingMiddleware', + traceId, + 'logTheResponse', + 400, + '{"error":[{"message":"{requestBody} must have required property \'contentIdentifier\'","path":"{requestBody}","context":{"errorType":"required"}}]}', + undefined, + ); }); }); @@ -158,7 +171,7 @@ describe('when logging the response', () => { let loggerSpy: any; beforeEach(() => { - loggerSpy = jest.spyOn(Logger, 'debug'); + loggerSpy = jest.spyOn(CoreLogger, 'writeDebugStatusToLog'); jest.spyOn(MeadowlarkUtilities, 'isDebugEnabled').mockImplementation(() => true); setupMockConfiguration(); }); @@ -187,16 +200,16 @@ describe('when logging the response', () => { // In the expectedBody, the object values have been anonymized const expectedBody = { error: { - message: 'Reference validation failed', failures: [ { - resourceName: 'Intervention', identity: { 'educationOrganizationReference.educationOrganizationId': '*', interventionIdentificationCode: '*', }, + resourceName: 'Intervention', }, ], + message: 'Reference validation failed', }, }; @@ -215,8 +228,11 @@ describe('when logging the response', () => { await logTheResponse(model); expect(loggerSpy).toHaveBeenCalledWith( - 'core.middleware.ResponseLoggingMiddleware.logTheResponse 400', - traceId, + 'core.middleware.ResponseLoggingMiddleware', + 'traceId', + 'logTheResponse', + 400, + '', expectedBody, ); }); @@ -279,7 +295,7 @@ describe('when logging the response', () => { let loggerSpy: any; beforeEach(() => { - loggerSpy = jest.spyOn(Logger, 'debug'); + loggerSpy = jest.spyOn(CoreLogger, 'writeDebugStatusToLog'); jest.spyOn(MeadowlarkUtilities, 'isDebugEnabled').mockImplementation(() => true); setupMockConfiguration(); }); @@ -292,15 +308,13 @@ describe('when logging the response', () => { const traceId = 'traceId' as TraceId; const body = { error: { - message: 'Reference validation failed', failures: [ { + identity: { descriptor: 'uri://ed-fi.org/ContentClassDescriptor#Presentation' }, resourceName: 'ContentClassDescriptor', - identity: { - descriptor: 'uri://ed-fi.org/ContentClassDescriptor#Presentation', - }, }, ], + message: 'Reference validation failed', }, }; @@ -318,7 +332,14 @@ describe('when logging the response', () => { await logTheResponse(model); - expect(loggerSpy).toHaveBeenCalledWith('core.middleware.ResponseLoggingMiddleware.logTheResponse 400', traceId, body); + expect(loggerSpy).toHaveBeenCalledWith( + 'core.middleware.ResponseLoggingMiddleware', + 'traceId', + 'logTheResponse', + 400, + '', + body, + ); }); }); }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateDocumentMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateDocumentMiddleware.test.ts index 3ff2228d..be84290b 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateDocumentMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateDocumentMiddleware.test.ts @@ -58,9 +58,7 @@ describe('given an error response and document info from documentValidation', () beforeAll(async () => { const validationResult = { error: errorBody }; - mockDocumentValidator = jest - .spyOn(DocumentValidator, 'validateDocument') - .mockReturnValue(Promise.resolve(validationResult)); + mockDocumentValidator = jest.spyOn(DocumentValidator, 'validateDocument').mockReturnValue(validationResult); // Act resultChain = await documentValidation({ frontendRequest, frontendResponse: null }); @@ -102,7 +100,7 @@ describe('given a valid response from documentValidation for Insert', () => { let mockDocumentValidator: any; beforeAll(async () => { - mockDocumentValidator = jest.spyOn(DocumentValidator, 'validateDocument').mockReturnValue(Promise.resolve(null)); + mockDocumentValidator = jest.spyOn(DocumentValidator, 'validateDocument').mockReturnValue(null); // Act resultChain = await documentValidation({ frontendRequest, frontendResponse: null }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateResourceMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateEndpointMiddleware.test.ts similarity index 61% rename from Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateResourceMiddleware.test.ts rename to Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateEndpointMiddleware.test.ts index e636be4e..5e68beac 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateResourceMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateEndpointMiddleware.test.ts @@ -3,13 +3,29 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import * as ResourceValidator from '../../src/validation/ResourceValidator'; -import { resourceValidation } from '../../src/middleware/ValidateResourceMiddleware'; +import { + MetaEdEnvironment, + newMetaEdEnvironment, + MetaEdTextBuilder, + NamespaceBuilder, + DomainEntityBuilder, + AssociationBuilder, +} from '@edfi/metaed-core'; +import { domainEntityReferenceEnhancer } from '@edfi/metaed-plugin-edfi-unified'; +import * as EndpointValidator from '../../src/validation/EndpointValidator'; +import { endpointValidation } from '../../src/middleware/ValidateEndpointMiddleware'; import { FrontendResponse, newFrontendResponse } from '../../src/handler/FrontendResponse'; import { FrontendRequest, newFrontendRequest, newFrontendRequestMiddleware } from '../../src/handler/FrontendRequest'; import { newResourceInfo, NoResourceInfo } from '../../src/model/ResourceInfo'; import { MiddlewareModel } from '../../src/middleware/MiddlewareModel'; import { DocumentUuid } from '../../src/model/IdTypes'; +import { EndpointValidationResult } from '../../src/validation/EndpointValidationResult'; +import { NoResourceSchema } from '../../src/model/api-schema/ResourceSchema'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { apiSchemaFrom } from '../TestHelper'; describe('given a previous middleware has created a response', () => { const frontendRequest: FrontendRequest = newFrontendRequest(); @@ -18,10 +34,10 @@ describe('given a previous middleware has created a response', () => { let mockResourceValidator: any; beforeAll(async () => { - mockResourceValidator = jest.spyOn(ResourceValidator, 'validateResource'); + mockResourceValidator = jest.spyOn(EndpointValidator, 'validateEndpoint'); // Act - resultChain = await resourceValidation({ frontendRequest, frontendResponse }); + resultChain = await endpointValidation({ frontendRequest, frontendResponse }); }); afterAll(() => { @@ -48,18 +64,18 @@ describe('given an error response and no document info from resourceValidation', let mockResourceValidator: any; beforeAll(async () => { - const validationResult: ResourceValidator.ResourceValidationResult = { + const validationResult: EndpointValidationResult = { resourceInfo: NoResourceInfo, errorBody, - resourceName: '', + resourceSchema: NoResourceSchema, }; mockResourceValidator = jest - .spyOn(ResourceValidator, 'validateResource') + .spyOn(EndpointValidator, 'validateEndpoint') .mockReturnValue(Promise.resolve(validationResult)); // Act - resultChain = await resourceValidation({ frontendRequest, frontendResponse: null }); + resultChain = await endpointValidation({ frontendRequest, frontendResponse: null }); }); afterAll(() => { @@ -86,18 +102,18 @@ describe('given an error response and document info from resourceValidation', () let mockResourceValidator: any; beforeAll(async () => { - const validationResult: ResourceValidator.ResourceValidationResult = { + const validationResult: EndpointValidationResult = { resourceInfo: newResourceInfo(), errorBody, - resourceName: '', + resourceSchema: NoResourceSchema, }; mockResourceValidator = jest - .spyOn(ResourceValidator, 'validateResource') + .spyOn(EndpointValidator, 'validateEndpoint') .mockReturnValue(Promise.resolve(validationResult)); // Act - resultChain = await resourceValidation({ frontendRequest, frontendResponse: null }); + resultChain = await endpointValidation({ frontendRequest, frontendResponse: null }); }); afterAll(() => { @@ -125,18 +141,18 @@ describe('given a valid response from resourceValidation', () => { let mockResourceValidator: any; beforeAll(async () => { - const validationResult: ResourceValidator.ResourceValidationResult = { + const validationResult: EndpointValidationResult = { resourceInfo, - resourceName: '', + resourceSchema: NoResourceSchema, headerMetadata, }; mockResourceValidator = jest - .spyOn(ResourceValidator, 'validateResource') + .spyOn(EndpointValidator, 'validateEndpoint') .mockReturnValue(Promise.resolve(validationResult)); // Act - resultChain = await resourceValidation({ frontendRequest, frontendResponse: null }); + resultChain = await endpointValidation({ frontendRequest, frontendResponse: null }); }); afterAll(() => { @@ -164,6 +180,22 @@ describe('given requesting abstract domain entity', () => { let resultChain: MiddlewareModel; beforeAll(async () => { + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + + .withStartAbstractEntity('EducationOrganization') + .withDocumentation('doc') + .withStringIdentity('EducationOrganizationId', 'doc', '30') + .withEndAbstractEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const frontendRequest: FrontendRequest = { ...newFrontendRequest(), body: '{"documentUuid": "db4f71a9-30dd-407a-ace4-07a056f781a3", "body": "a body"}', @@ -171,16 +203,17 @@ describe('given requesting abstract domain entity', () => { middleware: { ...newFrontendRequestMiddleware(), pathComponents: { - resourceName: 'educationOrganizations', - namespace: 'ed-fi', - version: 'v3.3b', + endpointName: 'educationOrganizations' as EndpointName, + projectNamespace: 'edfi' as ProjectNamespace, + projectShortVersion: 'v3.3b' as ProjectShortVersion, documentUuid: 'db4f71a9-30dd-407a-ace4-07a056f781a3' as DocumentUuid, }, + apiSchema, }, }; // Act - resultChain = await resourceValidation({ frontendRequest, frontendResponse: null }); + resultChain = await endpointValidation({ frontendRequest, frontendResponse: null }); }); it('returns status 404', () => { @@ -190,7 +223,7 @@ describe('given requesting abstract domain entity', () => { it('returns the expected message body', () => { expect(resultChain.frontendResponse?.body).toMatchInlineSnapshot(` { - "error": "Invalid resource 'educationOrganizations'. The most similar resource is 'educationOrganizationNetworks'.", + "error": "Invalid resource 'educationOrganizations'.", } `); }); @@ -199,7 +232,36 @@ describe('given requesting abstract domain entity', () => { describe('given requesting abstract association', () => { let resultChain: MiddlewareModel; + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + beforeAll(async () => { + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + + .withStartAssociation('GeneralStudentProgramAssociation') + .withDocumentation('doc') + .withAssociationDomainEntityProperty('Student', 'doc') + .withAssociationDomainEntityProperty('Program', 'doc') + .withEndAssociation() + + .withStartDomainEntity('Student') + .withDocumentation('doc') + .withStringIdentity('StudentId', 'doc', '30') + .withEndDomainEntity() + + .withStartDomainEntity('Program') + .withDocumentation('doc') + .withStringIdentity('ProgramId', 'doc', '30') + .withEndDomainEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new AssociationBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + domainEntityReferenceEnhancer(metaEd); + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const frontendRequest: FrontendRequest = { ...newFrontendRequest(), body: '{"documentUuid": "df4f71a9-30dd-407a-ace4-07a056f781a3", "body": "a body"}', @@ -207,16 +269,17 @@ describe('given requesting abstract association', () => { middleware: { ...newFrontendRequestMiddleware(), pathComponents: { - resourceName: 'generalStudentProgramAssociations', - namespace: 'ed-fi', - version: 'v3.3b', + endpointName: 'generalStudentProgramAssociations' as EndpointName, + projectNamespace: 'edfi' as ProjectNamespace, + projectShortVersion: 'v3.3b' as ProjectShortVersion, documentUuid: 'df4f71a9-30dd-407a-ace4-07a056f781a3' as DocumentUuid, }, + apiSchema, }, }; // Act - resultChain = await resourceValidation({ frontendRequest, frontendResponse: null }); + resultChain = await endpointValidation({ frontendRequest, frontendResponse: null }); }); it('returns status 404', () => { @@ -226,7 +289,7 @@ describe('given requesting abstract association', () => { it('returns the expected message body', () => { expect(resultChain.frontendResponse?.body).toMatchInlineSnapshot(` { - "error": "Invalid resource 'generalStudentProgramAssociations'. The most similar resource is 'studentProgramAssociations'.", + "error": "Invalid resource 'generalStudentProgramAssociations'.", } `); }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateQueryMiddleware.test.ts b/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateQueryMiddleware.test.ts index f9d30af5..7ec2de12 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateQueryMiddleware.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/middleware/ValidateQueryMiddleware.test.ts @@ -137,9 +137,7 @@ describe('given an error response from validateQueryString', () => { let mockPaginationValidator: any; beforeAll(async () => { - mockQueryStringValidator = jest - .spyOn(QueryStringValidator, 'validateQueryString') - .mockReturnValue(Promise.resolve({ errorBody })); + mockQueryStringValidator = jest.spyOn(QueryStringValidator, 'validateQueryString').mockReturnValue({ errorBody }); mockPaginationValidator = jest.spyOn(PaginationValidator, 'validatePaginationParameters').mockReturnValue(undefined); // Act @@ -174,7 +172,7 @@ describe('given valid responses', () => { beforeAll(async () => { mockQueryStringValidator = jest .spyOn(QueryStringValidator, 'validateQueryString') - .mockReturnValue(Promise.resolve({ errorBody: undefined })); + .mockReturnValue({ errorBody: undefined }); mockPaginationValidator = jest.spyOn(PaginationValidator, 'validatePaginationParameters').mockReturnValue(undefined); // Act diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentIdValidator.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentIdValidator.test.ts index c054e1fd..da062906 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentIdValidator.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentIdValidator.test.ts @@ -4,8 +4,10 @@ // See the LICENSE and NOTICES files in the project root for more information. import { MeadowlarkId } from '../../src/model/IdTypes'; -import { meadowlarkIdForDocumentIdentity, resourceInfoHashFrom } from '../../src/model/DocumentIdentity'; +import { DocumentIdentity, meadowlarkIdForDocumentIdentity, resourceInfoHashFrom } from '../../src/model/DocumentIdentity'; import { BaseResourceInfo } from '../../src/model/ResourceInfo'; +import { MetaEdProjectName } from '../../src/model/api-schema/MetaEdProjectName'; +import { MetaEdResourceName } from '../../src/model/api-schema/MetaEdResourceName'; /** * Returns true if resource info hash matches resource info portion of meadowlark id @@ -29,13 +31,11 @@ describe('given a valid id', () => { beforeAll(async () => { validResourceInfo = { isDescriptor: false, - projectName: 'ProjectName', - resourceName: 'ResourceName', + projectName: 'ProjectName' as MetaEdProjectName, + resourceName: 'ResourceName' as MetaEdResourceName, }; - const validDocumentIdentity = { - key: 'value', - }; + const validDocumentIdentity: DocumentIdentity = [{ key: 'value' }]; // Act id = meadowlarkIdForDocumentIdentity(validResourceInfo, validDocumentIdentity); @@ -57,19 +57,17 @@ describe('given a valid id with a mismatched resource info', () => { beforeAll(async () => { const validResourceInfo: BaseResourceInfo = { isDescriptor: false, - projectName: 'ProjectName', - resourceName: 'ResourceName', + projectName: 'ProjectName' as MetaEdProjectName, + resourceName: 'ResourceName' as MetaEdResourceName, }; mismatchedResourceInfo = { isDescriptor: false, - projectName: 'MismatchedProjectName', - resourceName: 'MismatchedResourceName', + projectName: 'MismatchedProjectName' as MetaEdProjectName, + resourceName: 'MismatchedResourceName' as MetaEdResourceName, }; - const validDocumentIdentity = { - key: 'value', - }; + const validDocumentIdentity: DocumentIdentity = [{ key: 'value' }]; // Act id = meadowlarkIdForDocumentIdentity(validResourceInfo, validDocumentIdentity); @@ -88,8 +86,8 @@ describe('given an invalid id', () => { const invalidId: MeadowlarkId = 'NotAValidId' as MeadowlarkId; const mismatchedResourceInfo: BaseResourceInfo = { isDescriptor: false, - projectName: 'MismatchedProjectName', - resourceName: 'MismatchedResourceName', + projectName: 'MismatchedProjectName' as MetaEdProjectName, + resourceName: 'MismatchedResourceName' as MetaEdResourceName, }; it('should not be well formed', () => { diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidator.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidator.test.ts deleted file mode 100644 index 3681b847..00000000 --- a/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidator.test.ts +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { ValidationError } from '@apideck/better-ajv-errors'; -import { newDomainEntity, newTopLevelEntity } from '@edfi/metaed-core'; -import { validateDocument } from '../../src/validation/DocumentValidator'; -import * as LoadMetaEd from '../../src/metaed/LoadMetaEd'; -import * as MetaEdValidation from '../../src/metaed/MetaEdValidation'; -import * as ResourceNameMapping from '../../src/metaed/ResourceNameMapping'; - -describe('given a valid resource name but body fails schema validation', () => { - let result: object | null; - let mockValidateBodyAgainstSchema: any; - let mockLoadMetaEdState: any; - let mockMatchEndpointToMetaEd: any; - const validationError: ValidationError = { - message: '_message', - path: '_path', - context: { errorType: 'required' }, - }; - - beforeAll(async () => { - mockValidateBodyAgainstSchema = jest - .spyOn(MetaEdValidation, 'validateEntityBodyAgainstSchema') - .mockReturnValue([validationError]); - - mockLoadMetaEdState = jest.spyOn(LoadMetaEd, 'loadMetaEdState').mockReturnValue( - Promise.resolve({ - metaEd: {}, - metaEdConfiguration: { projects: [{}] }, - } as any), - ); - - mockMatchEndpointToMetaEd = jest.spyOn(ResourceNameMapping, 'getMetaEdModelForResourceName').mockReturnValue({ - ...newDomainEntity(), - metaEdName: 'DomainEntityName', - data: { meadowlark: { apiMapping: { assignableTo: null } } }, - } as any); - - // Act - result = await validateDocument( - { version: 'a', namespace: 'b', resourceName: 'match', resourceId: null }, - newTopLevelEntity(), - ); - }); - - afterAll(() => { - mockValidateBodyAgainstSchema.mockRestore(); - mockLoadMetaEdState.mockRestore(); - mockMatchEndpointToMetaEd.mockRestore(); - }); - - it('returns an error message', () => { - expect(result).toMatchInlineSnapshot(` - { - "error": [ - { - "context": { - "errorType": "required", - }, - "message": "_message", - "path": "_path", - }, - ], - } - `); - }); -}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidatorForOverposting.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidatorForOverposting.test.ts new file mode 100644 index 00000000..f964eed3 --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/DocumentValidatorForOverposting.test.ts @@ -0,0 +1,207 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { Config, Environment, getBooleanFromEnvironment } from '@edfi/meadowlark-utilities'; +import { ResourceSchema, newResourceSchema } from '../../src/model/api-schema/ResourceSchema'; +import { ValidationFailure, validateDocument } from '../../src/validation/DocumentValidator'; + +const originalGetBooleanFromEnvironment = getBooleanFromEnvironment; +function createResourceSchema(): ResourceSchema { + return { + ...newResourceSchema(), + jsonSchemaForInsert: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + description: 'doc', + properties: { + uniqueId: { + description: 'doc', + maxLength: 30, + type: 'string', + }, + someBooleanParameter: { + description: 'doc', + type: 'boolean', + }, + someIntegerParameter: { + description: 'doc', + type: 'integer', + }, + someDecimalParameter: { + description: 'doc', + type: 'number', + }, + }, + required: ['uniqueId'], + title: 'EdFi.Student', + type: 'object', + }, + jsonSchemaForUpdate: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + description: 'doc', + properties: { + id: { + description: 'The item id', + type: 'string', + }, + uniqueId: { + description: 'doc', + maxLength: 30, + type: 'string', + }, + someBooleanParameter: { + description: 'doc', + type: 'boolean', + }, + someIntegerParameter: { + description: 'doc', + type: 'integer', + }, + someDecimalParameter: { + description: 'doc', + type: 'number', + }, + }, + required: ['id', 'uniqueId'], + title: 'EdFi.Student', + type: 'object', + }, + }; +} + +describe('given body insert with allow overposting is false have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; + + beforeAll(() => { + const bodyParameters = { uniqueId: 'a', one: 'one', two: 'two' }; + jest.clearAllMocks(); + jest.spyOn(Environment, 'getBooleanFromEnvironment').mockImplementation((key: Config.ConfigKeys) => { + if (key === 'ALLOW_OVERPOSTING') { + return false; + } + return originalGetBooleanFromEnvironment(key, false); + }); + validationResult = validateDocument(createResourceSchema(), bodyParameters); + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + it('should return validation errors', () => { + expect(validationResult).toMatchInlineSnapshot(` + { + "error": [ + { + "context": { + "errorType": "additionalProperties", + }, + "message": "'one' property is not expected to be here", + "path": "{requestBody}", + }, + { + "context": { + "errorType": "additionalProperties", + }, + "message": "'two' property is not expected to be here", + "path": "{requestBody}", + }, + ], + } + `); + }); +}); + +describe('given body update with allow overposting is false have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; + + beforeAll(() => { + const bodyParameters = { id: '1', uniqueId: 'a', one: 'one', two: 'two' }; + jest.clearAllMocks(); + jest.spyOn(Environment, 'getBooleanFromEnvironment').mockImplementation((key: Config.ConfigKeys) => { + if (key === 'ALLOW_OVERPOSTING') { + return false; + } + return originalGetBooleanFromEnvironment(key, false); + }); + validationResult = validateDocument(createResourceSchema(), bodyParameters, true); + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + it('should return validation errors', () => { + expect(validationResult).toMatchInlineSnapshot(` + { + "error": [ + { + "context": { + "errorType": "additionalProperties", + }, + "message": "'one' property is not expected to be here", + "path": "{requestBody}", + }, + { + "context": { + "errorType": "additionalProperties", + }, + "message": "'two' property is not expected to be here", + "path": "{requestBody}", + }, + ], + } + `); + }); +}); + +describe.skip('given body insert with allow overposting is true have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; + + beforeAll(() => { + const bodyParameters = { uniqueId: 'a', one: 'one', two: 'two' }; + jest.clearAllMocks(); + jest.spyOn(Environment, 'getBooleanFromEnvironment').mockImplementation((key: Config.ConfigKeys) => { + if (key === 'ALLOW_OVERPOSTING') { + return true; + } + return originalGetBooleanFromEnvironment(key, false); + }); + validationResult = validateDocument(createResourceSchema(), bodyParameters); + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + it('should not have errors', () => { + expect(validationResult).toBeNull(); + }); +}); + +describe.skip('given body update with allow overposting is true have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; + + beforeAll(() => { + const bodyParameters = { id: '1', uniqueId: 'a', one: 'one', two: 'two' }; + jest.clearAllMocks(); + jest.spyOn(Environment, 'getBooleanFromEnvironment').mockImplementation((key: Config.ConfigKeys) => { + if (key === 'ALLOW_OVERPOSTING') { + return true; + } + return originalGetBooleanFromEnvironment(key, false); + }); + validationResult = validateDocument(createResourceSchema(), bodyParameters, true); + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + it('should not have errors', () => { + expect(validationResult).toBeNull(); + }); +}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/EndpointValidator.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/EndpointValidator.test.ts new file mode 100644 index 00000000..758fe7ea --- /dev/null +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/EndpointValidator.test.ts @@ -0,0 +1,265 @@ +// SPDX-License-Identifier: Apache-2.0 +// Licensed to the Ed-Fi Alliance under one or more agreements. +// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. +// See the LICENSE and NOTICES files in the project root for more information. + +import { + DomainEntityBuilder, + MetaEdEnvironment, + MetaEdTextBuilder, + NamespaceBuilder, + newMetaEdEnvironment, +} from '@edfi/metaed-core'; +import { validateEndpoint } from '../../src/validation/EndpointValidator'; +import { NoResourceInfo } from '../../src/model/ResourceInfo'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { apiSchemaFrom } from '../TestHelper'; +import { EndpointValidationResult } from '../../src/validation/EndpointValidationResult'; +import { TraceId } from '../../src/model/IdTypes'; +import { ProjectShortVersion } from '../../src/model/ProjectShortVersion'; +import { ProjectNamespace } from '../../src/model/api-schema/ProjectNamespace'; +import { EndpointName } from '../../src/model/api-schema/EndpointName'; +import { NoResourceSchema } from '../../src/model/api-schema/ResourceSchema'; + +describe('given an invalid endpoint name with a suggested matching name', () => { + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + let result: EndpointValidationResult; + + beforeAll(async () => { + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + + .withStartDomainEntity('School') + .withDocumentation('doc') + .withStringIdentity('SchoolId', 'doc', '30') + .withEndDomainEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + + result = await validateEndpoint( + apiSchema, + { + projectShortVersion: 'a' as ProjectShortVersion, + projectNamespace: 'edfi' as ProjectNamespace, + endpointName: 'schoo' as EndpointName, + }, + '' as TraceId, + ); + }); + + it('returns an error message', () => { + expect(result.errorBody).toMatchInlineSnapshot(` + { + "error": "Invalid resource 'schoo'. The most similar resource is 'schools'.", + } + `); + }); + + it('returns no resource info', () => { + expect(result.resourceInfo).toBe(NoResourceInfo); + }); + + it('returns no resource schema', () => { + expect(result.resourceSchema).toBe(NoResourceSchema); + }); +}); + +describe('given an invalid endpoint name with no suggested matching name', () => { + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + let result: EndpointValidationResult; + + beforeAll(async () => { + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + + .withStartDomainEntity('School') + .withDocumentation('doc') + .withStringIdentity('SchoolId', 'doc', '30') + .withEndDomainEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + + result = await validateEndpoint( + apiSchema, + { + projectShortVersion: 'a' as ProjectShortVersion, + projectNamespace: 'edfi' as ProjectNamespace, + endpointName: 'nomatch' as EndpointName, + }, + '' as TraceId, + ); + }); + + it('returns an error message', () => { + expect(result.errorBody).toMatchInlineSnapshot(` + { + "error": "Invalid resource 'nomatch'.", + } + `); + }); + + it('returns no resource info', () => { + expect(result.resourceInfo).toBe(NoResourceInfo); + }); + + it('returns no resource schema', () => { + expect(result.resourceSchema).toBe(NoResourceSchema); + }); +}); + +describe('given a valid endpoint name', () => { + const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); + let result: EndpointValidationResult; + + beforeAll(async () => { + MetaEdTextBuilder.build() + .withBeginNamespace('EdFi') + + .withStartDomainEntity('School') + .withDocumentation('doc') + .withStringIdentity('SchoolId', 'doc', '30') + .withEndDomainEntity() + + .withEndNamespace() + .sendToListener(new NamespaceBuilder(metaEd, [])) + .sendToListener(new DomainEntityBuilder(metaEd, [])); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + + result = await validateEndpoint( + apiSchema, + { + projectShortVersion: 'a' as ProjectShortVersion, + projectNamespace: 'edfi' as ProjectNamespace, + endpointName: 'schools' as EndpointName, + }, + '' as TraceId, + ); + }); + + it('returns no error message', () => { + expect(result.errorBody).toBeUndefined(); + }); + + it('returns resource info', () => { + expect(result.resourceInfo).toMatchInlineSnapshot(` + { + "allowIdentityUpdates": false, + "isDescriptor": false, + "projectName": "EdFi", + "resourceName": "School", + "resourceVersion": "", + } + `); + }); + + it('returns resource schema', () => { + expect(result.resourceSchema).toMatchInlineSnapshot(` + { + "allowIdentityUpdates": false, + "documentPathsMapping": { + "SchoolId": { + "isReference": false, + "pathOrder": [ + "schoolId", + ], + "paths": { + "schoolId": "$.schoolId", + }, + }, + }, + "equalityConstraints": [], + "identityFullnames": [ + "SchoolId", + ], + "identityPathOrder": [ + "schoolId", + ], + "isDescriptor": false, + "isSchoolYearEnumeration": false, + "isSubclass": false, + "jsonSchemaForInsert": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "doc", + "properties": { + "_ext": { + "additionalProperties": true, + "description": "optional extension collection", + "properties": {}, + "type": "object", + }, + "schoolId": { + "description": "doc", + "maxLength": 30, + "type": "string", + }, + }, + "required": [ + "schoolId", + ], + "title": "EdFi.School", + "type": "object", + }, + "jsonSchemaForQuery": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "doc", + "properties": { + "_ext": { + "additionalProperties": true, + "description": "optional extension collection", + "properties": {}, + "type": "object", + }, + "schoolId": { + "description": "doc", + "maxLength": 30, + "type": "string", + }, + }, + "required": [], + "title": "EdFi.School", + "type": "object", + }, + "jsonSchemaForUpdate": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "doc", + "properties": { + "_ext": { + "additionalProperties": true, + "description": "optional extension collection", + "properties": {}, + "type": "object", + }, + "id": { + "description": "The item id", + "type": "string", + }, + "schoolId": { + "description": "doc", + "maxLength": 30, + "type": "string", + }, + }, + "required": [ + "id", + "schoolId", + ], + "title": "EdFi.School", + "type": "object", + }, + "resourceName": "School", + } + `); + }); +}); diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/EqualityConstraintValidator.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/EqualityConstraintValidator.test.ts index 63e40166..054120f5 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/validation/EqualityConstraintValidator.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/EqualityConstraintValidator.test.ts @@ -3,33 +3,26 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. +/* eslint-disable dot-notation */ + import { newMetaEdEnvironment, MetaEdEnvironment, DomainEntityBuilder, MetaEdTextBuilder, NamespaceBuilder, - DomainEntity, - Namespace, } from '@edfi/metaed-core'; import { domainEntityReferenceEnhancer } from '@edfi/metaed-plugin-edfi-unified'; -import { - entityPropertyApiSchemaDataSetupEnhancer, - apiEntityMappingEnhancer, - entityApiSchemaDataSetupEnhancer, - referenceComponentEnhancer, - apiPropertyMappingEnhancer, - propertyCollectingEnhancer, - allJsonPathsMappingEnhancer, - equalityConstraintEnhancer, -} from '@edfi/metaed-plugin-edfi-api-schema'; import { validateEqualityConstraints } from '../../src/validation/EqualityConstraintValidator'; +import { ResourceSchema } from '../../src/model/api-schema/ResourceSchema'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { apiSchemaFrom } from '../TestHelper'; /** - * A MetaEd model of a Section with a merge on School between CourseOffering and ClassPeriod. + * A ResourceSchema for a Section with a merge on School between CourseOffering and ClassPeriod. * */ -function sectionDomainEntity(): DomainEntity { +function sectionResourceSchema(): ResourceSchema { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); MetaEdTextBuilder.build() @@ -74,17 +67,9 @@ function sectionDomainEntity(): DomainEntity { .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - allJsonPathsMappingEnhancer(metaEd); - equalityConstraintEnhancer(metaEd); - const namespace: Namespace = metaEd.namespace.get('EdFi') as Namespace; - return namespace.entity.domainEntity.get('Section') as DomainEntity; + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + return apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; } describe('when CourseOffering schoolId is a mismatch with a single ClassPeriod', () => { @@ -108,8 +93,7 @@ describe('when CourseOffering schoolId is a mismatch with a single ClassPeriod', }; beforeAll(() => { - const section: DomainEntity = sectionDomainEntity(); - validationResult = validateEqualityConstraints(section, sectionBody); + validationResult = validateEqualityConstraints(sectionResourceSchema(), sectionBody); }); it('should have a validation failure', () => { @@ -148,8 +132,7 @@ describe('when CourseOffering schoolId is a mismatch with two ClassPeriods', () }; beforeAll(() => { - const section: DomainEntity = sectionDomainEntity(); - validationResult = validateEqualityConstraints(section, sectionBody); + validationResult = validateEqualityConstraints(sectionResourceSchema(), sectionBody); }); it('should have a validation failure', () => { @@ -188,8 +171,7 @@ describe('when CourseOffering schoolId is a mismatch with one ClassPeriod but a }; beforeAll(() => { - const section: DomainEntity = sectionDomainEntity(); - validationResult = validateEqualityConstraints(section, sectionBody); + validationResult = validateEqualityConstraints(sectionResourceSchema(), sectionBody); }); it('should have a validation failure', () => { @@ -214,8 +196,7 @@ describe('when ClassPeriods are not present', () => { }; beforeAll(() => { - const section: DomainEntity = sectionDomainEntity(); - validationResult = validateEqualityConstraints(section, sectionBody); + validationResult = validateEqualityConstraints(sectionResourceSchema(), sectionBody); }); it('should have no validation failure', () => { @@ -250,8 +231,7 @@ describe('when CourseOffering schoolId is a match with all ClassPeriods', () => }; beforeAll(() => { - const section: DomainEntity = sectionDomainEntity(); - validationResult = validateEqualityConstraints(section, sectionBody); + validationResult = validateEqualityConstraints(sectionResourceSchema(), sectionBody); }); it('should have no validation failure', () => { diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidator.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidator.test.ts index 71ab64a1..156ffdd3 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidator.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidator.test.ts @@ -3,71 +3,36 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { newEntityProperty, newTopLevelEntity, TopLevelEntity } from '@edfi/metaed-core'; import { FrontendQueryParameters } from '../../src/handler/FrontendRequest'; import { validateQueryString } from '../../src/validation/QueryStringValidator'; +import { ResourceSchema, newResourceSchema } from '../../src/model/api-schema/ResourceSchema'; -const createModel = (): TopLevelEntity => ({ - ...newTopLevelEntity(), - metaEdName: 'Student', - properties: [{ ...newEntityProperty(), metaEdName: 'uniqueId', isPartOfIdentity: true }], - data: { - edfiApiSchema: { - jsonSchemaForInsert: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, +const resourceSchema: ResourceSchema = { + ...newResourceSchema(), + jsonSchemaForQuery: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + description: 'doc', + properties: { + uniqueId: { description: 'doc', - properties: { - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - name: { - description: 'doc', - maxLength: 50, - type: 'string', - }, - age: { - description: 'doc', - type: 'integer', - }, - }, - required: ['uniqueId'], - title: 'EdFi.Student', - type: 'object', + maxLength: 30, + type: 'string', }, - jsonSchemaForUpdate: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, + name: { description: 'doc', - properties: { - id: { - description: 'The item id', - type: 'string', - }, - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - name: { - description: 'doc', - maxLength: 50, - type: 'string', - }, - age: { - description: 'doc', - type: 'integer', - }, - }, - required: ['id', 'uniqueId'], - title: 'EdFi.Student', - type: 'object', + maxLength: 50, + type: 'string', + }, + age: { + description: 'doc', + type: 'integer', }, }, + title: 'EdFi.Student', + type: 'object', }, -}); +}; describe('when validating a querystring', () => { describe('given a valid querystring in the URL', () => { @@ -82,14 +47,14 @@ describe('when validating a querystring', () => { age: 13, }, // "numeric" age; does not include the "required" uniqueId ])('accepts querystring %s', async (queryStrings: FrontendQueryParameters) => { - const result = await validateQueryString(queryStrings, createModel()); + const result = await validateQueryString(queryStrings, resourceSchema); expect(result).toEqual({}); }); }); describe('given an invalid property', () => { it('responds with an error', async () => { - const result = await validateQueryString({ another: 'property' }, createModel()); + const result = await validateQueryString({ another: 'property' }, resourceSchema); // Don't confirm exact structure at this time. expect(result).toHaveProperty('errorBody'); }); @@ -105,7 +70,7 @@ describe('when validating a querystring', () => { { age: "'13'" }, { age: '%2730%27' }, ])('responds to %s with an error', async (queryStrings: FrontendQueryParameters) => { - const result = await validateQueryString(queryStrings, createModel()); + const result = await validateQueryString(queryStrings, resourceSchema); // Don't confirm exact structure at this time. expect(result).toHaveProperty('errorBody'); }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/metaed/MetaEdValidation.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidatorForOverposting.test.ts similarity index 61% rename from Meadowlark-js/packages/meadowlark-core/test/metaed/MetaEdValidation.test.ts rename to Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidatorForOverposting.test.ts index 3bc7a824..7d22e494 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/metaed/MetaEdValidation.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/QueryStringValidatorForOverposting.test.ts @@ -3,106 +3,45 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -import { ValidationError } from '@apideck/better-ajv-errors'; import { Config, Environment, getBooleanFromEnvironment } from '@edfi/meadowlark-utilities'; -import { newTopLevelEntity, newEntityProperty, TopLevelEntity } from '@edfi/metaed-core'; -import { validateEntityBodyAgainstSchema, validateQueryParametersAgainstSchema } from '../../src/metaed/MetaEdValidation'; +import { ResourceSchema, newResourceSchema } from '../../src/model/api-schema/ResourceSchema'; +import { validateQueryParameters } from '../../src/validation/QueryStringValidator'; +import { ValidationFailure, validateDocument } from '../../src/validation/DocumentValidator'; const originalGetBooleanFromEnvironment = getBooleanFromEnvironment; -const createModel = (): TopLevelEntity => ({ - ...newTopLevelEntity(), - metaEdName: 'Student', - properties: [ - { ...newEntityProperty(), metaEdName: 'uniqueId', isPartOfIdentity: true }, - { ...newEntityProperty(), metaEdName: 'someBooleanParameter', isPartOfIdentity: false }, - { ...newEntityProperty(), metaEdName: 'someIntegerParameter', isPartOfIdentity: false }, - { ...newEntityProperty(), metaEdName: 'someDecimalParameter', isPartOfIdentity: false }, - ], - data: { - edfiApiSchema: { - jsonSchemaForInsert: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - description: 'doc', - properties: { - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - someBooleanParameter: { - description: 'doc', - type: 'boolean', - }, - someIntegerParameter: { - description: 'doc', - type: 'integer', - }, - someDecimalParameter: { - description: 'doc', - type: 'number', - }, +function createResourceSchema(): ResourceSchema { + return { + ...newResourceSchema(), + jsonSchemaForQuery: { + $schema: 'https://json-schema.org/draft/2020-12/schema', + additionalProperties: false, + description: 'doc', + properties: { + uniqueId: { + description: 'doc', + maxLength: 30, + type: 'string', }, - required: ['uniqueId'], - title: 'EdFi.Student', - type: 'object', - }, - jsonSchemaForUpdate: { - $schema: 'https://json-schema.org/draft/2020-12/schema', - additionalProperties: false, - description: 'doc', - properties: { - id: { - description: 'The item id', - type: 'string', - }, - uniqueId: { - description: 'doc', - maxLength: 30, - type: 'string', - }, - someBooleanParameter: { - description: 'doc', - type: 'boolean', - }, - someIntegerParameter: { - description: 'doc', - type: 'integer', - }, - someDecimalParameter: { - description: 'doc', - type: 'number', - }, + someBooleanParameter: { + description: 'doc', + type: 'boolean', + }, + someIntegerParameter: { + description: 'doc', + type: 'integer', + }, + someDecimalParameter: { + description: 'doc', + type: 'number', }, - required: ['id', 'uniqueId'], - title: 'EdFi.Student', - type: 'object', }, + title: 'EdFi.Student', + type: 'object', }, - }, -}); - -describe('given query parameters have no properties', () => { - it('should not return an error', () => { - const queryParameters = {}; - - const validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); - - expect(validationResult).toHaveLength(0); - }); -}); - -describe('given query parameters have a valid property', () => { - it('should not return an error', () => { - const queryParameters = { uniqueId: 'a' }; - - const validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); - - expect(validationResult).toHaveLength(0); - }); -}); + }; +} -describe('given query parameters with allow overposting is false have two invalid properties and a valid one', () => { +describe.skip('given query parameters with allow overposting is false have two invalid properties and a valid one', () => { let validationResult: string[]; beforeAll(() => { @@ -114,7 +53,7 @@ describe('given query parameters with allow overposting is false have two invali } return originalGetBooleanFromEnvironment(key, false); }); - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); afterAll(() => { @@ -134,7 +73,7 @@ describe('given query parameters with allow overposting is false have two invali }); }); -describe('given query parameters with allow overposting is true have two extraneous properties and a valid one', () => { +describe.skip('given query parameters with allow overposting is true have two extraneous properties and a valid one', () => { let validationResult: string[]; beforeAll(() => { @@ -146,7 +85,7 @@ describe('given query parameters with allow overposting is true have two extrane } return originalGetBooleanFromEnvironment(key, false); }); - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); afterAll(() => { jest.restoreAllMocks(); @@ -163,7 +102,7 @@ describe('given a boolean query parameter value of true', () => { beforeAll(() => { const queryParameters = { someBooleanParameter: 'true' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have no errors', () => { @@ -177,7 +116,7 @@ describe('given a boolean query parameter value of false', () => { beforeAll(() => { const queryParameters = { someBooleanParameter: 'false' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have no errors', () => { @@ -191,7 +130,7 @@ describe('given a non boolean query parameter value for a boolean query paramete beforeAll(() => { const queryParameters = { someBooleanParameter: 'yes' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have one error', () => { @@ -213,7 +152,7 @@ describe('given a valid integer query parameter value', () => { beforeAll(() => { const queryParameters = { someIntegerParameter: '100' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have no errors', () => { @@ -227,7 +166,7 @@ describe('given a decimal value for an integer query parameter', () => { beforeAll(() => { const queryParameters = { someIntegerParameter: '100.10' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have one error', () => { @@ -249,7 +188,7 @@ describe('given a bad integer query parameter value', () => { beforeAll(() => { const queryParameters = { someIntegerParameter: 'adsf' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have one error', () => { @@ -271,7 +210,7 @@ describe('given a valid decimal query parameter value', () => { beforeAll(() => { const queryParameters = { someDecimalParameter: '100.10' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have no errors', () => { @@ -285,7 +224,7 @@ describe('given an integer value for a decimal query parameter value', () => { beforeAll(() => { const queryParameters = { someDecimalParameter: '100' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have no errors', () => { @@ -299,7 +238,7 @@ describe('given a bad decimal query parameter value', () => { beforeAll(() => { const queryParameters = { someDecimalParameter: 'adsf' }; - validationResult = validateQueryParametersAgainstSchema(createModel(), queryParameters); + validationResult = validateQueryParameters(createResourceSchema(), queryParameters); }); it('should have one error', () => { @@ -315,8 +254,8 @@ describe('given a bad decimal query parameter value', () => { }); }); -describe('given body insert with allow overposting is false have two invalid properties and a valid one', () => { - let validationResult: ValidationError[] | null; +describe.skip('given body insert with allow overposting is false have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; beforeAll(() => { const bodyParameters = { uniqueId: 'a', one: 'one', two: 'two' }; @@ -327,7 +266,7 @@ describe('given body insert with allow overposting is false have two invalid pro } return originalGetBooleanFromEnvironment(key, false); }); - validationResult = validateEntityBodyAgainstSchema(createModel(), bodyParameters); + validationResult = validateDocument(createResourceSchema(), bodyParameters); }); afterAll(() => { @@ -360,8 +299,8 @@ describe('given body insert with allow overposting is false have two invalid pro }); }); -describe('given body update with allow overposting is false have two invalid properties and a valid one', () => { - let validationResult: ValidationError[] | null; +describe.skip('given body update with allow overposting is false have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; beforeAll(() => { const bodyParameters = { uniqueId: 'a', one: 'one', two: 'two' }; @@ -372,7 +311,7 @@ describe('given body update with allow overposting is false have two invalid pro } return originalGetBooleanFromEnvironment(key, false); }); - validationResult = validateEntityBodyAgainstSchema(createModel(), bodyParameters); + validationResult = validateDocument(createResourceSchema(), bodyParameters, true); }); afterAll(() => { @@ -405,8 +344,8 @@ describe('given body update with allow overposting is false have two invalid pro }); }); -describe('given body insert with allow overposting is true have two invalid properties and a valid one', () => { - let validationResult: ValidationError[] | null; +describe.skip('given body insert with allow overposting is true have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; beforeAll(() => { const bodyParameters = { uniqueId: 'a', one: 'one', two: 'two' }; @@ -417,7 +356,7 @@ describe('given body insert with allow overposting is true have two invalid prop } return originalGetBooleanFromEnvironment(key, false); }); - validationResult = validateEntityBodyAgainstSchema(createModel(), bodyParameters); + validationResult = validateDocument(createResourceSchema(), bodyParameters); }); afterAll(() => { @@ -429,8 +368,8 @@ describe('given body insert with allow overposting is true have two invalid prop }); }); -describe('given body update with allow overposting is true have two invalid properties and a valid one', () => { - let validationResult: ValidationError[] | null; +describe.skip('given body update with allow overposting is true have two invalid properties and a valid one', () => { + let validationResult: ValidationFailure | null; beforeAll(() => { const bodyParameters = { uniqueId: 'a', one: 'one', two: 'two' }; @@ -441,7 +380,7 @@ describe('given body update with allow overposting is true have two invalid prop } return originalGetBooleanFromEnvironment(key, false); }); - validationResult = validateEntityBodyAgainstSchema(createModel(), bodyParameters); + validationResult = validateDocument(createResourceSchema(), bodyParameters, true); }); afterAll(() => { diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/ReferenceAndIdentityEquivalence.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/ReferenceAndIdentityEquivalence.test.ts index 19584aee..01e431c7 100644 --- a/Meadowlark-js/packages/meadowlark-core/test/validation/ReferenceAndIdentityEquivalence.test.ts +++ b/Meadowlark-js/packages/meadowlark-core/test/validation/ReferenceAndIdentityEquivalence.test.ts @@ -3,6 +3,8 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. +/* eslint-disable dot-notation */ + import { newMetaEdEnvironment, MetaEdEnvironment, @@ -11,25 +13,19 @@ import { NamespaceBuilder, } from '@edfi/metaed-core'; import { domainEntityReferenceEnhancer } from '@edfi/metaed-plugin-edfi-unified'; -import { - entityPropertyApiSchemaDataSetupEnhancer, - apiEntityMappingEnhancer, - entityApiSchemaDataSetupEnhancer, - referenceComponentEnhancer, - apiPropertyMappingEnhancer, - propertyCollectingEnhancer, -} from '@edfi/metaed-plugin-edfi-api-schema'; import { extractDocumentReferences } from '../../src/extraction/DocumentReferenceExtractor'; import { extractDocumentIdentity } from '../../src/extraction/DocumentIdentityExtractor'; import { DocumentReference } from '../../src/model/DocumentReference'; -import { DocumentIdentity, NoDocumentIdentity } from '../../src/model/DocumentIdentity'; +import { DocumentIdentity } from '../../src/model/DocumentIdentity'; +import { ApiSchema } from '../../src/model/api-schema/ApiSchema'; +import { ResourceSchema } from '../../src/model/api-schema/ResourceSchema'; +import { apiSchemaFrom } from '../TestHelper'; describe('when comparing identities with references from domain entity referencing one as identity and another as collection', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let referenceExtractionResult: DocumentReference[] = []; - let classPeriodIdentityExtractionResult: DocumentIdentity = NoDocumentIdentity; - let courseOfferingIdentityExtractionResult: DocumentIdentity = NoDocumentIdentity; + let classPeriodIdentityExtractionResult: DocumentIdentity = []; + let courseOfferingIdentityExtractionResult: DocumentIdentity = []; const bodyWithReferences = { sectionIdentifier: 'Bob', @@ -98,38 +94,35 @@ describe('when comparing identities with references from domain entity referenci .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - referenceExtractionResult = extractDocumentReferences(section, bodyWithReferences); - const classPeriod = namespace.entity.domainEntity.get('ClassPeriod'); - classPeriodIdentityExtractionResult = extractDocumentIdentity(classPeriod, classPeriodIdentityBody); - const courseOffering = namespace.entity.domainEntity.get('CourseOffering'); - courseOfferingIdentityExtractionResult = extractDocumentIdentity(courseOffering, courseOfferingIdentityBody); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const sectionResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + const classPeriodResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['classPeriods']; + const courseOfferingResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['courseOfferings']; + + referenceExtractionResult = extractDocumentReferences(apiSchema, sectionResourceSchema, bodyWithReferences); + classPeriodIdentityExtractionResult = extractDocumentIdentity(classPeriodResourceSchema, classPeriodIdentityBody); + courseOfferingIdentityExtractionResult = extractDocumentIdentity( + courseOfferingResourceSchema, + courseOfferingIdentityBody, + ); }); it('should have classPeriod reference and identity match', () => { - const [classPeriodReferenceExtractonResult] = referenceExtractionResult; - expect(classPeriodReferenceExtractonResult.documentIdentity).toEqual(classPeriodIdentityExtractionResult); + const [, classPeriodReferenceExtractionResult] = referenceExtractionResult; + expect(classPeriodReferenceExtractionResult.documentIdentity).toEqual(classPeriodIdentityExtractionResult); }); it('should have courseOffering reference and identity match', () => { - const [, , courseOfferingReferenceExtractonResult] = referenceExtractionResult; - expect(courseOfferingReferenceExtractonResult.documentIdentity).toEqual(courseOfferingIdentityExtractionResult); + const [courseOfferingReferenceExtractionResult] = referenceExtractionResult; + expect(courseOfferingReferenceExtractionResult.documentIdentity).toEqual(courseOfferingIdentityExtractionResult); }); }); describe('when comparing identities with references with three levels of identities on a collection reference', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let referenceExtractionResult: DocumentReference[] = []; - let classPeriodIdentityExtractionResult: DocumentIdentity = NoDocumentIdentity; + let classPeriodIdentityExtractionResult: DocumentIdentity = []; const bodyWithReferences = { sectionIdentifier: 'Bob', @@ -211,31 +204,25 @@ describe('when comparing identities with references with three levels of identit .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - referenceExtractionResult = extractDocumentReferences(section, bodyWithReferences); - const classPeriod = namespace.entity.domainEntity.get('ClassPeriod'); - classPeriodIdentityExtractionResult = extractDocumentIdentity(classPeriod, classPeriodIdentityBody); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const sectionResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + const classPeriodResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['classPeriods']; + + referenceExtractionResult = extractDocumentReferences(apiSchema, sectionResourceSchema, bodyWithReferences); + classPeriodIdentityExtractionResult = extractDocumentIdentity(classPeriodResourceSchema, classPeriodIdentityBody); }); it('should have classPeriod reference and identity match', () => { - const [classPeriodReferenceExtractonResult] = referenceExtractionResult; - expect(classPeriodReferenceExtractonResult.documentIdentity).toEqual(classPeriodIdentityExtractionResult); + const [classPeriodReferenceExtractionResult] = referenceExtractionResult; + expect(classPeriodReferenceExtractionResult.documentIdentity).toEqual(classPeriodIdentityExtractionResult); }); }); describe('when comparing identities with references with two levels of identities with a merge on School', () => { const metaEd: MetaEdEnvironment = newMetaEdEnvironment(); - let namespace: any = null; let referenceExtractionResult: DocumentReference[] = []; - let classPeriodIdentityExtractionResult: DocumentIdentity = NoDocumentIdentity; + let classPeriodIdentityExtractionResult: DocumentIdentity = []; const bodyWithReferences = { sectionIdentifier: 'Bob', @@ -300,22 +287,17 @@ describe('when comparing identities with references with two levels of identitie .sendToListener(new DomainEntityBuilder(metaEd, [])); domainEntityReferenceEnhancer(metaEd); - entityPropertyApiSchemaDataSetupEnhancer(metaEd); - entityApiSchemaDataSetupEnhancer(metaEd); - referenceComponentEnhancer(metaEd); - apiPropertyMappingEnhancer(metaEd); - propertyCollectingEnhancer(metaEd); - apiEntityMappingEnhancer(metaEd); - - namespace = metaEd.namespace.get('EdFi'); - const section = namespace.entity.domainEntity.get('Section'); - referenceExtractionResult = extractDocumentReferences(section, bodyWithReferences); - const classPeriod = namespace.entity.domainEntity.get('ClassPeriod'); - classPeriodIdentityExtractionResult = extractDocumentIdentity(classPeriod, classPeriodIdentityBody); + + const apiSchema: ApiSchema = apiSchemaFrom(metaEd); + const sectionResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['sections']; + const classPeriodResourceSchema: ResourceSchema = apiSchema.projectSchemas['edfi'].resourceSchemas['classPeriods']; + + referenceExtractionResult = extractDocumentReferences(apiSchema, sectionResourceSchema, bodyWithReferences); + classPeriodIdentityExtractionResult = extractDocumentIdentity(classPeriodResourceSchema, classPeriodIdentityBody); }); it('should have classPeriod reference and identity match', () => { - const [classPeriodReferenceExtractonResult] = referenceExtractionResult; - expect(classPeriodReferenceExtractonResult.documentIdentity).toEqual(classPeriodIdentityExtractionResult); + const [classPeriodReferenceExtractionResult] = referenceExtractionResult; + expect(classPeriodReferenceExtractionResult.documentIdentity).toEqual(classPeriodIdentityExtractionResult); }); }); diff --git a/Meadowlark-js/packages/meadowlark-core/test/validation/ResourceValidator.test.ts b/Meadowlark-js/packages/meadowlark-core/test/validation/ResourceValidator.test.ts deleted file mode 100644 index 77b4aa8c..00000000 --- a/Meadowlark-js/packages/meadowlark-core/test/validation/ResourceValidator.test.ts +++ /dev/null @@ -1,97 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { NoTopLevelEntity } from '@edfi/metaed-core'; -import { validateResource, ResourceValidationResult } from '../../src/validation/ResourceValidator'; -import * as LoadMetaEd from '../../src/metaed/LoadMetaEd'; -import * as MetaEdValidation from '../../src/metaed/MetaEdValidation'; -import { NoResourceInfo } from '../../src/model/ResourceInfo'; - -describe('given an invalid resource name with a suggested matching name', () => { - let result: ResourceValidationResult; - let mockLoadMetaEdState: any; - let mockMatchEndpointToMetaEd: any; - const matchedMetaEdName = 'match'; - const invalidName = 'Mtch'; - - beforeAll(async () => { - mockLoadMetaEdState = jest.spyOn(LoadMetaEd, 'loadMetaEdState').mockReturnValue( - Promise.resolve({ - metaEd: {}, - metaEdConfiguration: { projects: [{}] }, - } as any), - ); - - mockMatchEndpointToMetaEd = jest.spyOn(MetaEdValidation, 'matchResourceNameToMetaEd').mockReturnValue({ - resourceName: matchedMetaEdName, - exact: false, - suggestion: true, - matchingMetaEdModel: NoTopLevelEntity, - } as any); - - // Act - result = await validateResource({ version: 'a', namespace: 'b', resourceName: invalidName }); - }); - - afterAll(() => { - mockLoadMetaEdState.mockRestore(); - mockMatchEndpointToMetaEd.mockRestore(); - }); - - it('returns an error message', () => { - expect(result.errorBody).toMatchInlineSnapshot(` - { - "error": "Invalid resource 'Mtch'. The most similar resource is 'match'.", - } - `); - }); - - it('returns no entity info', () => { - expect(result.resourceInfo).toBe(NoResourceInfo); - }); -}); - -describe('given an invalid resource name with no suggested matching name', () => { - let result: ResourceValidationResult; - let mockLoadMetaEdState: any; - let mockMatchEndpointToMetaEd: any; - const invalidName = 'Mtch'; - - beforeAll(async () => { - mockLoadMetaEdState = jest.spyOn(LoadMetaEd, 'loadMetaEdState').mockReturnValue( - Promise.resolve({ - metaEd: {}, - metaEdConfiguration: { projects: [{}] }, - } as any), - ); - - mockMatchEndpointToMetaEd = jest.spyOn(MetaEdValidation, 'matchResourceNameToMetaEd').mockReturnValue({ - resourceName: '', - exact: false, - suggestion: false, - matchingMetaEdModel: NoTopLevelEntity, - } as any); - - // Act - result = await validateResource({ version: 'a', namespace: 'b', resourceName: invalidName }); - }); - - afterAll(() => { - mockLoadMetaEdState.mockRestore(); - mockMatchEndpointToMetaEd.mockRestore(); - }); - - it('returns an error message', () => { - expect(result.errorBody).toMatchInlineSnapshot(` - { - "error": "Invalid resource 'Mtch'.", - } - `); - }); - - it('returns no entity info', () => { - expect(result.resourceInfo).toBe(NoResourceInfo); - }); -}); diff --git a/Meadowlark-js/packages/meadowlark-utilities/test/Config.test.ts b/Meadowlark-js/packages/meadowlark-utilities/test/Config.test.ts index d2745557..ddf59963 100644 --- a/Meadowlark-js/packages/meadowlark-utilities/test/Config.test.ts +++ b/Meadowlark-js/packages/meadowlark-utilities/test/Config.test.ts @@ -293,29 +293,4 @@ describe('when initializing configuration', () => { expect(Config.get(k as ConfigKeys)).toBe(v); }); }); - - describe('given a key that has not been set and does not have a default value', () => { - it.each([ - ['AUTHORIZATION_STORE_PLUGIN'], - ['DOCUMENT_STORE_PLUGIN'], - ['OPENSEARCH_ENDPOINT'], - ['OAUTH_SERVER_ENDPOINT_FOR_OWN_TOKEN_REQUEST'], - ['OAUTH_SERVER_ENDPOINT_FOR_TOKEN_VERIFICATION'], - ['OWN_OAUTH_CLIENT_ID_FOR_CLIENT_AUTH'], - ['OWN_OAUTH_CLIENT_SECRET_FOR_CLIENT_AUTH'], - ])('throws an error for %s', (k) => { - setAllValues(); - process.env[k] = undefined; - - const act = async (): Promise => { - const Config = await import('../src/Config'); - const Environment = await import('../src/Environment'); - await Config.initializeConfig(Environment.CachedEnvironmentConfigProvider); - }; - - act().catch((e) => - expect(e).toMatchInlineSnapshot(`[Error: Environment variable '${k}' has not been setup properly.]`), - ); - }); - }); }); diff --git a/Meadowlark-js/services/meadowlark-fastify/.env.example b/Meadowlark-js/services/meadowlark-fastify/.env.example index f6ee083f..2ef6dea0 100644 --- a/Meadowlark-js/services/meadowlark-fastify/.env.example +++ b/Meadowlark-js/services/meadowlark-fastify/.env.example @@ -5,10 +5,11 @@ OAUTH_SIGNING_KEY= OWN_OAUTH_CLIENT_ID_FOR_CLIENT_AUTH=meadowlark_verify-only_key_1 OWN_OAUTH_CLIENT_SECRET_FOR_CLIENT_AUTH=meadowlark_verify-only_secret_1 +## URLs may need to be 127.0.0.1 instead of localhost depending on Node version OAUTH_SERVER_ENDPOINT_FOR_OWN_TOKEN_REQUEST=http://localhost:3000/local/oauth/token OAUTH_SERVER_ENDPOINT_FOR_TOKEN_VERIFICATION=http://localhost:3000/local/oauth/verify OAUTH_HARD_CODED_CREDENTIALS_ENABLED=false -# See the OAUTH.md file for more more OAUTH override settings +# See the OAUTH.md file for more OAUTH override settings #### Environment variables for running Meadowlark locally diff --git a/Meadowlark-js/services/meadowlark-fastify/src/Service.ts b/Meadowlark-js/services/meadowlark-fastify/src/Service.ts index 5ac4bce9..62ba0a2f 100644 --- a/Meadowlark-js/services/meadowlark-fastify/src/Service.ts +++ b/Meadowlark-js/services/meadowlark-fastify/src/Service.ts @@ -15,7 +15,6 @@ import { Config, Logger } from '@edfi/meadowlark-utilities'; import { deleteIt, get, update, upsert } from './handler/CrudHandler'; import { closeMeadowlarkConnection } from './handler/MeadowlarkConnection'; import { - metaed, apiVersion, swaggerForResourcesAPI, swaggerForDescriptorsAPI, @@ -117,9 +116,6 @@ export function buildService(): FastifyInstance { fastify.put(`/${stage}/*`, update); fastify.delete(`/${stage}/*`, deleteIt); - // MetaEd metadata handler - fastify.get(`/${stage}/metaed`, metaed); - // API version handler fastify.get(`/${stage}`, apiVersion); fastify.get(`/${stage}/`, apiVersion); diff --git a/Meadowlark-js/services/meadowlark-fastify/src/handler/MetadataHandler.ts b/Meadowlark-js/services/meadowlark-fastify/src/handler/MetadataHandler.ts index 3262e4e5..b5f64c36 100644 --- a/Meadowlark-js/services/meadowlark-fastify/src/handler/MetadataHandler.ts +++ b/Meadowlark-js/services/meadowlark-fastify/src/handler/MetadataHandler.ts @@ -8,14 +8,6 @@ import * as Meadowlark from '@edfi/meadowlark-core'; import { FastifyReply, FastifyRequest } from 'fastify'; import { respondWith, fromRequest } from './MeadowlarkConverter'; -/** - * An http handler for the metadata endpoint used for diagnostics. Loads the requested MetaEd - * project and returns MetaEd project metadata in the response header. - */ -export async function metaed(request: FastifyRequest, reply: FastifyReply): Promise { - respondWith(await Meadowlark.metaed(fromRequest(request)), reply); -} - /** * Base endpoint that returns the DS version and supported extensions */ diff --git a/Meadowlark-js/tests/e2e/endpoints/Sections.test.ts b/Meadowlark-js/tests/e2e/endpoints/Sections.test.ts index 2e61c8dc..922a330e 100644 --- a/Meadowlark-js/tests/e2e/endpoints/Sections.test.ts +++ b/Meadowlark-js/tests/e2e/endpoints/Sections.test.ts @@ -48,40 +48,61 @@ describe('Sections', () => { "error": { "failures": [ { - "identity": { - "classPeriodName": "z1", - "schoolReference.schoolId": 66, - }, - "resourceName": "ClassPeriod", + "identity": [ + { + "localCourseCode": "abc", + }, + { + "schoolId": 66, + }, + { + "schoolYear": 2034, + }, + { + "sessionName": "d", + }, + ], + "resourceName": "CourseOffering", }, { - "identity": { - "classPeriodName": "z2", - "schoolReference.schoolId": 66, - }, - "resourceName": "ClassPeriod", + "identity": [ + { + "classroomIdentificationCode": "1", + }, + { + "schoolId": 2, + }, + ], + "resourceName": "Location", }, { - "identity": { - "localCourseCode": "abc", - "schoolReference.schoolId": 66, - "sessionReference.schoolId": 66, - "sessionReference.schoolYear": 2034, - "sessionReference.sessionName": "d", - }, - "resourceName": "CourseOffering", + "identity": [ + { + "classPeriodName": "z1", + }, + { + "schoolId": 66, + }, + ], + "resourceName": "ClassPeriod", }, { - "identity": { - "classroomIdentificationCode": "1", - "schoolReference.schoolId": 2, - }, - "resourceName": "Location", + "identity": [ + { + "classPeriodName": "z2", + }, + { + "schoolId": 66, + }, + ], + "resourceName": "ClassPeriod", }, { - "identity": { - "descriptor": "k", - }, + "identity": [ + { + "descriptor": "k", + }, + ], "resourceName": "CreditTypeDescriptor", }, ], diff --git a/Meadowlark-js/tests/e2e/endpoints/Sessions.test.ts b/Meadowlark-js/tests/e2e/endpoints/Sessions.test.ts index dba8be5e..b687bccc 100644 --- a/Meadowlark-js/tests/e2e/endpoints/Sessions.test.ts +++ b/Meadowlark-js/tests/e2e/endpoints/Sessions.test.ts @@ -34,15 +34,19 @@ describe('Sessions', () => { "error": { "failures": [ { - "identity": { - "schoolId": 99, - }, + "identity": [ + { + "schoolId": 99, + }, + ], "resourceName": "School", }, { - "identity": { - "descriptor": "uri://ed-fi.org/fake-uri", - }, + "identity": [ + { + "descriptor": "uri://ed-fi.org/fake-uri", + }, + ], "resourceName": "TermDescriptor", }, ], diff --git a/Meadowlark-js/tests/e2e/endpoints/StudentInterventionAssociations.test.ts b/Meadowlark-js/tests/e2e/endpoints/StudentInterventionAssociations.test.ts index e4bd6782..ddbb5ca7 100644 --- a/Meadowlark-js/tests/e2e/endpoints/StudentInterventionAssociations.test.ts +++ b/Meadowlark-js/tests/e2e/endpoints/StudentInterventionAssociations.test.ts @@ -29,17 +29,23 @@ describe('Student Intervention Association', () => { "error": { "failures": [ { - "identity": { - "educationOrganizationReference.educationOrganizationId": 123, - "interventionIdentificationCode": "111", - }, - "resourceName": "Intervention", + "identity": [ + { + "studentUniqueId": "s0zf6d1123d3e", + }, + ], + "resourceName": "Student", }, { - "identity": { - "studentUniqueId": "s0zf6d1123d3e", - }, - "resourceName": "Student", + "identity": [ + { + "educationOrganizationId": 123, + }, + { + "interventionIdentificationCode": "111", + }, + ], + "resourceName": "Intervention", }, ], "message": "Reference validation failed", diff --git a/Meadowlark-js/tests/e2e/scenarios/ApiPropertyMappingEnhancer.test.ts b/Meadowlark-js/tests/e2e/scenarios/ApiPropertyMappingEnhancer.test.ts deleted file mode 100644 index 001f7908..00000000 --- a/Meadowlark-js/tests/e2e/scenarios/ApiPropertyMappingEnhancer.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Licensed to the Ed-Fi Alliance under one or more agreements. -// The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. -// See the LICENSE and NOTICES files in the project root for more information. - -import { createAcademicSubjectDescriptor, createGradeLevelDescriptor } from '../helpers/DataCreation'; -import { createResource, deleteResourceByLocation } from '../helpers/Resources'; - -describe('When mapping a resource that meets requirements for prefix removal', () => { - let gradeLevelDescriptorLocation: string; - let academicSubjectDescriptorLocation: string; - let learningObjectiveLocation: string; - - beforeAll(async () => { - gradeLevelDescriptorLocation = await createGradeLevelDescriptor(); - academicSubjectDescriptorLocation = await createAcademicSubjectDescriptor(); - }); - - afterAll(async () => { - await deleteResourceByLocation(learningObjectiveLocation, 'learningObjective'); - await deleteResourceByLocation(gradeLevelDescriptorLocation, 'gradeLevelDescriptor'); - await deleteResourceByLocation(academicSubjectDescriptorLocation, 'academicSubjectDescriptor'); - }); - - describe('given a LearningObjective entity with GradeLevel descriptor with role name Objective', () => { - // LearningObjective has a GradeLevel descriptor collection with a role name of Objective, thus the full name of - // the collection is objectiveGradeLevels. That would make the property learningObjective.objectiveGradeLevels in the ODS - // this becomes learningObjectives.gradeLevels. - it('should trim the extra "objective" prefix', async () => { - learningObjectiveLocation = await createResource({ - endpoint: 'learningObjectives', - role: 'host', - body: { - learningObjectiveId: '0z41dmrtgsm4wqbwv3k0v5vkbdurrgeu', - namespace: 'uri://ed-fi.org', - description: - 'The student will demonstrate the ability to utilize numbers to perform operations with complex concepts at a high level.', - objective: 'Number Operations and Concepts PACZ', - academicSubjects: [ - { - academicSubjectDescriptor: 'uri://ed-fi.org/AcademicSubjectDescriptor#Composite', - }, - ], - gradeLevels: [ - { - gradeLevelDescriptor: 'uri://ed-fi.org/GradeLevelDescriptor#Eight Grade', - }, - ], - learningStandards: [], - }, - }); - }); - }); -}); diff --git a/Meadowlark-js/tests/e2e/scenarios/DescriptorReferenceValidation.test.ts b/Meadowlark-js/tests/e2e/scenarios/DescriptorReferenceValidation.test.ts index b72871ea..e4cdf576 100644 --- a/Meadowlark-js/tests/e2e/scenarios/DescriptorReferenceValidation.test.ts +++ b/Meadowlark-js/tests/e2e/scenarios/DescriptorReferenceValidation.test.ts @@ -30,9 +30,11 @@ describe('When creating a resource that has a reference to a descriptor', () => "error": { "failures": [ { - "identity": { - "descriptor": "uri://ed-fi.org/CountryDescriptor#AD3", - }, + "identity": [ + { + "descriptor": "uri://ed-fi.org/CountryDescriptor#AD3", + }, + ], "resourceName": "CountryDescriptor", }, ], diff --git a/Meadowlark-js/tests/e2e/scenarios/MultipleEdorgTypesResourceAssociations.test.ts b/Meadowlark-js/tests/e2e/scenarios/MultipleEdorgTypesResourceAssociations.test.ts index 5665a91b..e6ae362c 100644 --- a/Meadowlark-js/tests/e2e/scenarios/MultipleEdorgTypesResourceAssociations.test.ts +++ b/Meadowlark-js/tests/e2e/scenarios/MultipleEdorgTypesResourceAssociations.test.ts @@ -125,7 +125,8 @@ describe('Given the existence of a student, a school, a local education agency a }); }); - describe('when it tries to update an student program association with a different education organization', () => { + // TODO: restore this test as a part of RND-669 + describe.skip('when it tries to update an student program association with a different education organization', () => { let studentProgramAssociationLocation: string; beforeAll(async () => { diff --git a/Meadowlark-js/tests/e2e/scenarios/ResourcesReferenceValidation.test.ts b/Meadowlark-js/tests/e2e/scenarios/ResourcesReferenceValidation.test.ts index 3869d35a..2836a16d 100644 --- a/Meadowlark-js/tests/e2e/scenarios/ResourcesReferenceValidation.test.ts +++ b/Meadowlark-js/tests/e2e/scenarios/ResourcesReferenceValidation.test.ts @@ -30,9 +30,11 @@ describe('When creating a resource that has a reference to another resource', () "error": { "failures": [ { - "identity": { - "schoolId": 99, - }, + "identity": [ + { + "schoolId": 99, + }, + ], "resourceName": "School", }, ], @@ -86,16 +88,20 @@ describe('When creating a resource that has a reference to another resource', () "error": { "failures": [ { - "identity": { - "descriptor": "uri://ed-fi.org/GradeLevelDescriptor#First Grade", - }, - "resourceName": "GradeLevel", + "identity": [ + { + "descriptor": "uri://ed-fi.org/GradeLevelDescriptor#First Grade", + }, + ], + "resourceName": "GradeLevelDescriptor", }, { - "identity": { - "descriptor": "uri://ed-fi.org/SchoolCategoryDescriptor#All Levels", - }, - "resourceName": "SchoolCategory", + "identity": [ + { + "descriptor": "uri://ed-fi.org/SchoolCategoryDescriptor#All Levels", + }, + ], + "resourceName": "SchoolCategoryDescriptor", }, ], "message": "Reference validation failed", diff --git a/Meadowlark-js/tests/e2e/scenarios/SchemaValidation.test.ts b/Meadowlark-js/tests/e2e/scenarios/SchemaValidation.test.ts index fc537d17..f8d4361f 100644 --- a/Meadowlark-js/tests/e2e/scenarios/SchemaValidation.test.ts +++ b/Meadowlark-js/tests/e2e/scenarios/SchemaValidation.test.ts @@ -115,10 +115,20 @@ describe('When creating a resource', () => { "error": { "failures": [ { - "identity": { - "descriptor": "abc", - }, - "resourceName": "EducationOrganizationCategory", + "identity": [ + { + "descriptor": "", + }, + ], + "resourceName": "EducationOrganizationIdentificationSystemDescriptor", + }, + { + "identity": [ + { + "descriptor": "abc", + }, + ], + "resourceName": "EducationOrganizationCategoryDescriptor", }, ], "message": "Reference validation failed", @@ -251,10 +261,20 @@ describe('When creating a resource', () => { "error": { "failures": [ { - "identity": { - "descriptor": "abc", - }, - "resourceName": "EducationOrganizationCategory", + "identity": [ + { + "descriptor": "def", + }, + ], + "resourceName": "EducationOrganizationIdentificationSystemDescriptor", + }, + { + "identity": [ + { + "descriptor": "abc", + }, + ], + "resourceName": "EducationOrganizationCategoryDescriptor", }, ], "message": "Reference validation failed", diff --git a/Meadowlark-js/tests/e2e/setup/TeardownTestEnvironment.ts b/Meadowlark-js/tests/e2e/setup/TeardownTestEnvironment.ts index 1a10d089..c7a805ad 100644 --- a/Meadowlark-js/tests/e2e/setup/TeardownTestEnvironment.ts +++ b/Meadowlark-js/tests/e2e/setup/TeardownTestEnvironment.ts @@ -3,13 +3,12 @@ // The Ed-Fi Alliance licenses this file to you under the Apache License, Version 2.0. // See the LICENSE and NOTICES files in the project root for more information. -// @ts-ignore -const environment = require('./SetupTestContainers'); +const setupTestContainers = require('./SetupTestContainers'); async function endServer() { try { if (!process.env.DEVELOPER_MODE && !process.env.USE_EXISTING_ENVIRONMENT) { - await environment.stop(); + await setupTestContainers.stop(); } } catch (error) { console.info(error);