diff --git a/README.md b/README.md
index e1029f9..30bb625 100644
--- a/README.md
+++ b/README.md
@@ -12,10 +12,6 @@ If you desire to use Drupal core rest functionality with [OpenApi.js](https://gi
 drush dl openapi
 ```
 
-```
-drush -y en openapi openapi_json_schema
-```
-
 ## Documentation
 
 The Open API specification document in JSON format that describes all of the
diff --git a/modules/openapi_docs/openapi_docs.info.yml b/modules/openapi_docs/openapi_docs.info.yml
index 16f400c..7f97225 100644
--- a/modules/openapi_docs/openapi_docs.info.yml
+++ b/modules/openapi_docs/openapi_docs.info.yml
@@ -3,5 +3,3 @@ type: module
 description: Documentation using the Swagger JS library
 core: 8.x
 package: OpenAPI
-dependencies:
-  - openapi_json_schema
diff --git a/modules/openapi_json_schema/README.md b/modules/openapi_json_schema/README.md
deleted file mode 100644
index 4a495cd..0000000
--- a/modules/openapi_json_schema/README.md
+++ /dev/null
@@ -1,120 +0,0 @@
-#IMPORTANT
-The openapi_json_schema module is copied for the Schemata project.
-It is only intended to be needed until there is stable version of the Schemata
-module(or another module that provides json_schema). 
-The original Schemata README follows:
-
-# Schemata
-
-> Facilitate generation of schema definitions of Drupal 8 data models.
-
-A schema is a declarative definition of an entity's makeup. A way of describing
-the different pieces that make up the entity, much like an interface defines a
-class and exactly like an XML DTD describes an XML document. This project uses
-Drupal's new Typed Data system to faciliate the creation of schemas for your
-site.
-
-This is especially powerful in conjunction with the Drupal REST system, as your
-content model schemata can help with testing, client code generation,
-documentation generation, and more, especially in conjunction with external
-tools that process schemas.
-
-## What has a Schema?
-
-All Entity Types and Bundles have a schema automatically via the Schemata module.
-
-## Where is the Schema?
-
-Schemata are accessed via REST endpoints. Once enabled, Schemata resources are
-found at `/schemata/{entity_type}/{bundle?}`. These resources are dynamically
-generated based on the Typed Data Definition system in Drupal core, which means
-any change to fields on an Entity will automatically be reflected in the schema.
-
-## Requirements
-
-Schema will only apply if [Issue #2751325: Specifically-typed properties in json output](https://www.drupal.org/node/2751325)
-is fixed or patched in your Drupal instance. Otherwise your serialized API
-output for JSON and HAL will only produce string values.
-
-Schemata-the-module is a dependency for the sub-modules of the project:
-
-* **JSON Schema**: A serializer which processes Schemata schema objects into
-  [JSON Schema v4](http://json-schema.org). Describes the output of content 
-  entities via the core JSON serializer.
-* **HAL JSON Schema**: A serializer which builds on JSON Schema serializer to
-  describe the output of content entities via the core HAL JSON serializer.
-
-From a "product" standpoint, JSON Schema is the valuable thing, and Schemata
-the technical dependency. Only install Schemata if you plan to install a
-serializer that can do something with it
-
-## Architecture
-
-The Schemata project contains the Schemata module. The module provides REST
-endpoints to retrieve a schema object. The Schema is assembled by Drupal based
-on the [Typed Data API](https://www.drupal.org/node/1794140), configuration,
-and in the future, router introspection. The resulting Schema object can then
-be requested via a GET request using a `_format` parameter to select a
-particular serializer.
-
-In order to serialize the Schema Object, the serializer must be able to support
-implementations of the Drupal\schemata\Schema\SchemaInterface class. At this
-time, the only serializer support for Schemata is within this project, you can
-see an example of this in the packaged submodule **JSON Schema**.
-
-## Configuration
-
-* Enable the Schemata module and a Schemata Serializer. For now, that means the
-  JSON Schema module.
-* Enable both Schemata resources with the json_schema format.
-* Grant permission to access the schemata resources to roles that need it.
-* Visit a URL such as `/schemata/user?_format=json_schema` to see it.
-
-## Security
-
-* Bug reports should follow [Drupal.org security reporting procedures](https://www.drupal.org/node/101494).
-
-## URLs
-
-* [Homepage](https://www.drupal.org/project/schemata)
-* [Development](https://github.com/phase2/schemata)
-
-## Maintainers
-
-Adam Ross a.k.a. Grayside
-
-## Contributors
-
-Creation of this module was sponsored by [Norwegian Cruise Line](https://www.drupal.org/norwegian-cruise-line).
-
-Fubhy's work on [GraphQL](https://www.drupal.org/project/graphql) was a great
-help in early architecture of this project. Thank you to [Fubhy](https://www.drupal.org/u/fubhy)
-and the GraphQL sponsors.
-
-## F.A.Q.
-
-### Will there be a Drupal 7 backport?
-
-This module can be summarized as follows:
-
-A Drupal 8 subsystem (REST) and a Symfony subsystem (Serialization) use a touchy
-Drupal 8 subsystem (Typed Data) to describe the output of another Drupal 8
-subsystem (Entity).
-
-It gets worse--the use cases of this module are most applicable when said entity
-output comes by way of the REST and Serialization systems.
-
-It does not make sense to discuss a backport unless you first backport large
-swathes of Drupal 8.
-
-### Why not use some other module?
-
-[Self Documenting REST API](https://www.drupal.org/project/rest_api_doc) produces
-webpage reports about REST resources on the site. This project might eventually
-compete with that if it builds out support for the [Swagger specification](http://swagger.io/).
-
-[Field Report](https://www.drupal.org/project/field_report) enhances the core
-reports about fields and content types. This has some similarity with this
-project, but the reports provided by Field Report are for people orienting on
-a site. This project produces schemas that can be used for machine integrations
-or feeding into other report generation systems.
diff --git a/modules/openapi_json_schema/composer.json b/modules/openapi_json_schema/composer.json
deleted file mode 100644
index 52a46ae..0000000
--- a/modules/openapi_json_schema/composer.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "name": "drupal/openapi_json_schema",
-  "type": "drupal-module",
-  "description": "Provide schema definitions of Drupal entities for type validation, code generation, and documentation.",
-  "keywords": ["Drupal"],
-  "license": "GPL-2.0+",
-  "homepage": "https://www.drupal.org/project/openapi",
-  "minimum-stability": "dev",
-  "support": {
-    "issues": "http://drupal.org/project/issues/openapi",
-    "source": "http://cgit.drupalcode.org/openapi"
-  },
-  "require": { }
-}
diff --git a/modules/openapi_json_schema/openapi_json_schema.info.yml b/modules/openapi_json_schema/openapi_json_schema.info.yml
deleted file mode 100644
index 12742b2..0000000
--- a/modules/openapi_json_schema/openapi_json_schema.info.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-name: OpenAPI JSON Schema
-type: module
-description: Provide schema definitions of Drupal entities for type validation, code generation, and documentation.
-core: 8.x
-package: Web services
diff --git a/modules/openapi_json_schema/openapi_json_schema.module b/modules/openapi_json_schema/openapi_json_schema.module
deleted file mode 100644
index bd2542c..0000000
--- a/modules/openapi_json_schema/openapi_json_schema.module
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains openapi_json_schema.module.
- */
-
-use Drupal\Core\Routing\RouteMatchInterface;
-
-/**
- * Implements hook_help().
- */
-function openapi_json_schema_help($route_name, RouteMatchInterface $route_match) {
-  switch ($route_name) {
-    // Main module help for the json_schema module.
-    case 'help.page.schemata':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('Provide schema definitions of Drupal entities for type validation, code generation, and documentation.') . '</p>';
-      return $output;
-
-    default:
-  }
-}
diff --git a/modules/openapi_json_schema/openapi_json_schema.services.yml b/modules/openapi_json_schema/openapi_json_schema.services.yml
deleted file mode 100644
index dc181e5..0000000
--- a/modules/openapi_json_schema/openapi_json_schema.services.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-services:
-
-  # Assemble Schemas based on entity type definitions. As a standalone class,
-  # the SchemaFactory can be pulled in to custom menu routes, drush commands,
-  # and REST plugins. The SchemaFactory::create() creates instances of
-  # Drupal\openapi_json_schema\Schema\SchemaInterface.
-  openapi_json_schema.schema_factory:
-    class: Drupal\openapi_json_schema\SchemaFactory
-    arguments: ['@logger.channel.openapi_json_schema', '@entity_type.manager', '@entity_type.bundle.info', '@typed_data_manager']
-
-  # Factory wrapper to generate URLs for Schemas. This has static methods and
-  # can be directly included in any code without dependency injection, much like
-  # Drupal\Core\Url.
-  openapi_json_schema.schema_url:
-    class: Drupal\openapi_json_schema\SchemaUrl
-
-  # Create a log channel for the Schemata module. This simplifies logging setup
-  # code in Schemata code that will do logging. As a tradeoff, it also adds this
-  # fairly specific logging channel to the system for all requests.
-  logger.channel.openapi_json_schema:
-    parent: logger.channel_base
-    arguments: ['schemata']
-
-# References should be converted to other schemata resources for the type.
-  # This priority ensures the DataReferenceDefinition is handled before
-  # DataDefinition. Since it is orthagonal to ComplexDataDefinition, they share
-  # the same priority.
-  serializer.normalizer.data_reference_definition.json_schema:
-    class: Drupal\openapi_json_schema\Normalizer\DataReferenceDefinitionNormalizer
-    arguments: ['@entity_type.manager']
-    tags:
-      - { name: normalizer, priority: 25 }
-
-  # Normalize complex data properties.
-  # This priority ensures the ComplexDataDefinition is handled before
-  # DataDefinition. Since it is orthagonal to DataReferenceDefinition, they
-  # share the same priority.
-  serializer.normalizer.complex_data_definition.json_schema:
-    class: Drupal\openapi_json_schema\Normalizer\ComplexDataDefinitionNormalizer
-    tags:
-      - { name: normalizer, priority: 20 }
-
-  # Field definitions are a variant of List definitions, with additional access
-  # to the particular schema and configuration pieces from the field system. As
-  # a subclass of ListDataDefinitionInterface, FieldDefinitionInterface needs a
-  # higher priority.
-  serializer.normalizer.field_definition.json_schema:
-    class: Drupal\openapi_json_schema\Normalizer\FieldDefinitionNormalizer
-    tags:
-      - { name: normalizer, priority: 30 }
-
-  # If the typed data definition is a list (as most are somewhere along the
-  # property hierarchy) this triggers the recursion to the next layer.
-  serializer.normalizer.list_data_definition.json_schema:
-    class: Drupal\openapi_json_schema\Normalizer\ListDataDefinitionNormalizer
-    tags:
-      - { name: normalizer, priority: 20 }
-
-  # Typed data definitions in general can take many forms. This handles final items.
-  serializer.normalizer.data_definition.json_schema:
-    class: Drupal\openapi_json_schema\Normalizer\DataDefinitionNormalizer
-    tags:
-      - { name: normalizer, priority: 10 }
-
-  # This is the main JSON Schema normalizer.
-  serializer.normalizer.schema.json_schema:
-    class: Drupal\openapi_json_schema\Normalizer\SchemataSchemaNormalizer
-    arguments: ['@router.route_provider']
-    tags:
-      - { name: normalizer, priority: 10 }
-
-  serializer.encoder.json_schema:
-    class: Drupal\openapi_json_schema\Encoder\JsonEncoder
-    tags:
-      - { name: encoder, priority: 10, format: json_schema }
-
-  plugin.manager.json_schema.type_mapper:
-    class: Drupal\openapi_json_schema\Plugin\Type\TypeMapperPluginManager
-    arguments: ['@container.namespaces', '@module_handler']
-
diff --git a/modules/openapi_json_schema/src/Annotation/TypeMapper.php b/modules/openapi_json_schema/src/Annotation/TypeMapper.php
deleted file mode 100644
index 22b41d5..0000000
--- a/modules/openapi_json_schema/src/Annotation/TypeMapper.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Annotation;
-
-use Drupal\Component\Annotation\Plugin;
-
-/**
- * Defines a JSON Schema Type Mapper annotation object.
- *
- * Plugin Namespace: Plugin\json_schema\type_mapper
- *
- * @ingroup third_party
- *
- * @Annotation
- */
-class TypeMapper extends Plugin {
-
-  /**
-   * The TypeMapper plugin ID.
-   *
-   * @var string
-   */
-  public $id;
-
-}
diff --git a/modules/openapi_json_schema/src/Encoder/JsonEncoder.php b/modules/openapi_json_schema/src/Encoder/JsonEncoder.php
deleted file mode 100644
index 4f75069..0000000
--- a/modules/openapi_json_schema/src/Encoder/JsonEncoder.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Encoder;
-
-use Drupal\serialization\Encoder\JsonEncoder as DrupalJsonEncoder;
-
-/**
- * Encodes JSON Schema data in JSON.
- *
- * Simply respond to json_schema format requests using the JSON encoder.
- */
-class JsonEncoder extends DrupalJsonEncoder {
-
-  /**
-   * The formats that this Encoder supports.
-   *
-   * @var string
-   */
-  protected static $format = array('json_schema', 'hal_json_schema');
-
-  /**
-   * {@inheritdoc}
-   */
-  public function supportsDecoding($format) {
-    return FALSE;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/ComplexDataDefinitionNormalizer.php b/modules/openapi_json_schema/src/Normalizer/ComplexDataDefinitionNormalizer.php
deleted file mode 100644
index 910bb16..0000000
--- a/modules/openapi_json_schema/src/Normalizer/ComplexDataDefinitionNormalizer.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use Drupal\Core\TypedData\ComplexDataDefinitionInterface;
-use Drupal\Core\TypedData\DataReferenceTargetDefinition;
-use Drupal\Component\Utility\NestedArray;
-
-/**
- * Normalizer for ComplexDataDefinitionInterface.
- *
- * ComplexDataDefinitions represent objects - compound values whose objects
- * have string keys. Almost all fields are complex in this way, with their key
- * data stored in an object property of "value". In turn, these objects are
- * wrapped in an array which is normalized by ListDataDefinitionNormalizer.
- */
-class ComplexDataDefinitionNormalizer extends DataDefinitionNormalizer {
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = '\Drupal\Core\TypedData\ComplexDataDefinitionInterface';
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($entity, $format = NULL, array $context = array()) {
-    /* @var $entity \Drupal\Core\TypedData\ComplexDataDefinitionInterface */
-    $context['parent'] = $entity;
-    $normalized = $this->extractPropertyData($entity);
-    $normalized['type'] = 'object';
-
-    // Retrieve 'properties' and possibly 'required' nested arrays.
-    $properties = $this->normalizeProperties(
-      $entity->getPropertyDefinitions(),
-      $format,
-      $context
-    );
-
-    $normalized = NestedArray::mergeDeep($normalized, $properties);
-    return $normalized;
-  }
-
-  /**
-   * Determine if the current field is a reference field.
-   *
-   * @param \Drupal\Core\TypedData\ComplexDataDefinitionInterface $entity
-   *   The complex data definition to be checked.
-   *
-   * @return bool
-   *   TRUE if it is a reference, FALSE otherwise.
-   */
-  protected function isReferenceField(ComplexDataDefinitionInterface $entity, $context = NULL) {
-    $main = $entity->getPropertyDefinition($entity->getMainPropertyName());
-    // @todo use an interface or API call instead of an object check.
-    return ($main instanceof DataReferenceTargetDefinition);
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/DataDefinitionNormalizer.php b/modules/openapi_json_schema/src/Normalizer/DataDefinitionNormalizer.php
deleted file mode 100644
index 3ccfc12..0000000
--- a/modules/openapi_json_schema/src/Normalizer/DataDefinitionNormalizer.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Normalizer for DataDefinitionInterface instances.
- *
- * DataDefinitionInterface is the ultimate parent to all data definitions. This
- * service must always be low priority for data definitions, otherwise the
- * simpler normalization process it supports will take precedence over all the
- * complexities most entity properties contain before reaching this level.
- *
- * DataDefinitionNormalizer produces scalar value definitions.
- *
- * Unlike the other Normalizer services in the JSON Schema module, this one is
- * used by the hal_json_schema normalizer. It is unlikely divergent requirements
- * will develop.
- *
- * All the TypedData normalizers extend from this class.
- */
-class DataDefinitionNormalizer extends NormalizerBase {
-
-  /**
-   * The formats that the Normalizer can handle.
-   *
-   * @var array
-   */
-  protected $formats = array('json_schema', 'hal_json_schema');
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = '\Drupal\Core\TypedData\DataDefinitionInterface';
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($entity, $format = NULL, array $context = array()) {
-    /* @var $entity \Drupal\Core\TypedData\DataDefinitionInterface */
-    // `text source` and `date source` produce objects not supported in the API.
-    // It is not clear how the API excludes them.
-    // @todo properly identify and exclude this class of computed objects.
-    if ($entity->getSetting('text source')
-      || $entity->getSetting('date source')) {
-
-      return [];
-    }
-
-    $property = $this->extractPropertyData($entity, $context);
-    if (!empty($context['parent']) && $context['name'] == 'value') {
-      if ($maxLength = $context['parent']->getSetting('max_length')) {
-        $property['maxLength'] = $maxLength;
-      }
-    }
-
-    $normalized = ['properties' => []];
-    $normalized['properties'][$context['name']] = $property;
-    if ($this->requiredProperty($entity)) {
-      $normalized['required'][] = $context['name'];
-    }
-
-    return $normalized;
-  }
-
-  /**
-   * Extracts property details from a data definition.
-   *
-   * This method includes mapping primitive types in Drupal to JSON Schema
-   * type and format descriptions. This method is invoked by several of the
-   * normalizers.
-   *
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface $property
-   *   The data definition from which to extract values.
-   * @param array $context
-   *   Serializer context.
-   *
-   * @return array
-   *   Discrete values of the property definition.
-   *
-   * @todo identify how to cleanly inject the plugin manager without requiring
-   *   updates to many of the normalizers.
-   */
-  protected function extractPropertyData(DataDefinitionInterface $property, array $context = []) {
-    $type_mapper_manager = \Drupal::service('plugin.manager.json_schema.type_mapper');
-    $data = $type_mapper_manager->createInstance($property->getDataType())
-      ->getMappedValue($property);
-
-    if (isset($context['parent']) && $context['parent']->getDataType() == 'field_item:uuid') {
-      $data['format'] = 'uuid';
-    }
-
-    return $data;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/DataReferenceDefinitionNormalizer.php b/modules/openapi_json_schema/src/Normalizer/DataReferenceDefinitionNormalizer.php
deleted file mode 100644
index 40d394c..0000000
--- a/modules/openapi_json_schema/src/Normalizer/DataReferenceDefinitionNormalizer.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use Drupal\openapi_json_schema\Normalizer\DataDefinitionNormalizer;
-use Drupal\openapi_json_schema\SchemaUrl;
-use Drupal\Core\Entity\EntityTypeManager;
-
-/**
- * Normalizer for Entity References.
- *
- * DataReferenceDefinitions are embedded inside ComplexDataDefinitions, and
- * represent a type property. The key for this is usually "entity", and it is
- * found alongside a "target_id" value which refers to the specific entity
- * instance for the reference. The target_id is not normalized by this class,
- * instead it comes through the DataDefinitionNormalizer as a scalar value.
- */
-class DataReferenceDefinitionNormalizer extends DataDefinitionNormalizer {
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = '\Drupal\Core\TypedData\DataReferenceDefinitionInterface';
-
-  /**
-   * EntityTypeManager.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeManager
-   */
-  protected $entityTypeManager;
-
-  /**
-   * Constructs an DataReferenceDefinitionNormalizer object.
-   *
-   * @param \Drupal\Core\Entity\EntityTypeManager $entity_type_manager
-   *   The Entity Type Manager.
-   */
-  public function __construct(EntityTypeManager $entity_type_manager) {
-    $this->entityTypeManager = $entity_type_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($entity, $format = NULL, array $context = array()) {
-    /* @var $entity \Drupal\Core\TypedData\DataReferenceDefinitionInterface */
-    if (!$this->validateEntity($entity)) {
-      return [];
-    }
-
-    // DataDefinitionNormalizer::normalize() results in extraneous structures
-    // added to the schema for this field element (e.g., entity)
-    return $this->extractPropertyData($entity, $context);
-  }
-
-  /**
-   * Ensure the entity type is one we support for schema reference.
-   *
-   * If somehow the entity does not exist, or is not a ContentEntity, skip it.
-   *
-   * @param mixed $entity
-   *   The object to be normalized.
-   *
-   * @return bool
-   *   TRUE if valid for use.
-   */
-  protected function validateEntity($entity) {
-    // Only entity references have a schema.
-    // This leads to incompatibility with alternate reference modules such as
-    // Dynamic Entity Reference.
-    if ($entity->getDataType() != 'entity_reference') {
-      return FALSE;
-    }
-
-    $entity_type_plugin = $this->entityTypeManager->getDefinition($entity->getConstraint('EntityType'), FALSE);
-    if (empty($entity_type_plugin)
-      || !($entity_type_plugin->isSubclassOf('\Drupal\Core\Entity\ContentEntityInterface'))) {
-      return FALSE;
-    }
-
-    return TRUE;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/FieldDefinitionNormalizer.php b/modules/openapi_json_schema/src/Normalizer/FieldDefinitionNormalizer.php
deleted file mode 100644
index b141fc0..0000000
--- a/modules/openapi_json_schema/src/Normalizer/FieldDefinitionNormalizer.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use \Drupal\Core\Field\FieldStorageDefinitionInterface;
-
-/**
- * Normalizer for FieldDefinitionInterface objects.
- *
- * This normalizes the variant of data fields particular to the Field system.
- * By accessing this via the FieldDefinitionInterface, there is greater access
- * to some of the methods providing deeper schema properties.
- */
-class FieldDefinitionNormalizer extends ListDataDefinitionNormalizer {
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = '\Drupal\Core\Field\FieldDefinitionInterface';
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($entity, $format = NULL, array $context = array()) {
-    /* @var $entity \Drupal\Core\Field\FieldDefinitionInterface */
-    $normalized = parent::normalize($entity, $format, $context);
-
-    // Specify non-contextual default value as an example.
-    $default_value = $entity->getDefaultValueLiteral();
-    if (!empty($default_value)) {
-      $normalized['properties'][$context['name']]['default'] = $default_value;
-    }
-
-    // The cardinality is the configured maximum number of values the field can
-    // contain. If unlimited, we do not include a maxItems attribute.
-    $cardinality = $entity->getFieldStorageDefinition()->getCardinality();
-    if ($cardinality != FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) {
-      $normalized['properties'][$context['name']]['maxItems'] = $cardinality;
-    }
-
-    return $normalized;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/ListDataDefinitionNormalizer.php b/modules/openapi_json_schema/src/Normalizer/ListDataDefinitionNormalizer.php
deleted file mode 100644
index e85be1d..0000000
--- a/modules/openapi_json_schema/src/Normalizer/ListDataDefinitionNormalizer.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use Drupal\openapi_json_schema\Normalizer\DataDefinitionNormalizer;
-use Drupal\Core\TypedData\ComplexDataDefinitionInterface;
-use Drupal\Core\TypedData\DataReferenceTargetDefinition;
-use Drupal\Core\TypedData\ListDataDefinitionInterface;
-/**
- * Normalizer for ListDataDefinitionInterface objects.
- *
- * Almost all entity properties in the system are a list of values, each value
- * in the "List" might be a ComplexDataDefinitionInterface (an object) or it
- * might be more of a scalar.
- */
-class ListDataDefinitionNormalizer extends DataDefinitionNormalizer {
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = '\Drupal\Core\TypedData\ListDataDefinitionInterface';
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($entity, $format = NULL, array $context = array()) {
-    /* @var $entity \Drupal\Core\TypedData\ListDataDefinitionInterface */
-    $context['parent'] = $entity;
-    $property = $this->extractPropertyData($entity, $context);
-    $property['type'] = 'array';
-
-    // This retrieves the definition common to ever item in the list, and
-    // serializes it so we can define how members of the array should look.
-    // There are no lists that might contain items of different types.
-    $property['items'] = $this->serializer->normalize(
-      $entity->getItemDefinition(),
-      $format,
-      $context
-    );
-
-    // FieldDefinitionInterface::isRequired() explicitly indicates there must be
-    // at least one item in the list. Extending this reasoning, the same must be
-    // true of all ListDataDefinitions.
-    if ($this->requiredProperty($entity)) {
-      $property['minItems'] = 1;
-    }
-
-    $normalized = ['properties' => []];
-    $normalized['properties'][$context['name']] = $property;
-    if ($this->requiredProperty($entity)) {
-      $normalized['required'][] = $context['name'];
-    }
-
-    return $normalized;
-  }
-
-  /**
-   * Determine if the current field is a reference field.
-   *
-   * @param \Drupal\Core\TypedData\ListDataDefinitionInterface $entity
-   *   The list definition to be checked.
-   *
-   * @return bool
-   *   TRUE if it is a reference, FALSE otherwise.
-   */
-  protected function isReferenceField(ListDataDefinitionInterface $entity) {
-    $item = $entity->getItemDefinition();
-    if ($item instanceof ComplexDataDefinitionInterface) {
-      $main = $item->getPropertyDefinition($item->getMainPropertyName());
-      // @todo use an interface or API call instead of an object check.
-      return ($main instanceof DataReferenceTargetDefinition);
-    }
-
-    return FALSE;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/NormalizerBase.php b/modules/openapi_json_schema/src/Normalizer/NormalizerBase.php
deleted file mode 100644
index fa0206f..0000000
--- a/modules/openapi_json_schema/src/Normalizer/NormalizerBase.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use Drupal\Core\TypedData\DataDefinitionInterface;
-use Drupal\serialization\Normalizer\NormalizerBase as SerializationNormalizerBase;
-use Drupal\Component\Utility\NestedArray;
-use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
-
-/**
- * Base class for JSON Schema Normalizers.
- */
-abstract class NormalizerBase extends SerializationNormalizerBase implements DenormalizerInterface {
-
-  /**
-   * The formats that the Normalizer can handle.
-   *
-   * @var array
-   */
-  protected $formats = array('json_schema');
-
-  /**
-   * {@inheritdoc}
-   */
-  public function supportsNormalization($data, $format = NULL) {
-    return in_array($format, $this->formats) && parent::supportsNormalization($data, $format);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function supportsDenormalization($data, $type, $format = NULL) {
-    return FALSE;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function denormalize($data, $class, $format = NULL, array $context = array()) {
-    return FALSE;
-  }
-
-  /**
-   * Normalize an array of data definitions.
-   *
-   * This normalization process gets an array of properties and an array of
-   * properties that are required by name. This is needed by the
-   * SchemataSchemaNormalizer, otherwise it would have been placed in
-   * DataDefinitionNormalizer.
-   *
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface[] $items
-   *   An array of data definition properties to be normalized.
-   * @param string $format
-   *   Format identifier of the current serialization process.
-   * @param array $context
-   *   Operating context of the serializer.
-   *
-   * @return array
-   *   Array containing one or two nested arrays.
-   *   - properties: The array of all normalized properties.
-   *   - required: The array of required properties by name.
-   */
-  protected function normalizeProperties($items, $format, $context = []) {
-    $normalized = [];
-    foreach ($items as $name => $property) {
-      $context['name'] = $name;
-      $item = $this->serializer->normalize($property, $format, $context);
-      if (!empty($item)) {
-        $normalized = NestedArray::mergeDeep($normalized, $item);
-      }
-    }
-
-    return $normalized;
-  }
-
-  /**
-   * Determine if the given property is a required element of the schema.
-   *
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface $property
-   *   The data property to be evaluated.
-   *
-   * @return bool
-   *   Whether the property should be treated as required for schema
-   *   purposes.
-   */
-  protected function requiredProperty(DataDefinitionInterface $property) {
-    return $property->isRequired();
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Normalizer/SchemataSchemaNormalizer.php b/modules/openapi_json_schema/src/Normalizer/SchemataSchemaNormalizer.php
deleted file mode 100644
index 3c767e2..0000000
--- a/modules/openapi_json_schema/src/Normalizer/SchemataSchemaNormalizer.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Normalizer;
-
-use Drupal\Core\Routing\RouteProviderInterface;
-use Drupal\openapi_json_schema\Schema\SchemaInterface;
-use Drupal\openapi_json_schema\SchemaUrl;
-use Drupal\Component\Utility\NestedArray;
-
-/**
- * Primary normalizer for SchemaInterface objects.
- */
-class SchemataSchemaNormalizer extends NormalizerBase {
-
-  /**
-   * The interface or class that this Normalizer supports.
-   *
-   * @var string
-   */
-  protected $supportedInterfaceOrClass = 'Drupal\openapi_json_schema\Schema\SchemaInterface';
-
-  /**
-   * The route provider service.
-   *
-   * @var \Drupal\Core\Routing\RouteProviderInterface
-   */
-  protected $routeProvider;
-
-  /**
-   * Constructs the BlockListController.
-   *
-   * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider
-   *   The route provider service.
-   */
-  public function __construct(RouteProviderInterface $route_provider) {
-    $this->routeProvider = $route_provider;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function normalize($entity, $format = NULL, array $context = array()) {
-    // Create the array of normalized fields, starting with the URI.
-    /* @var $entity \Drupal\openapi_json_schema\Schema\SchemaInterface */
-    $normalized = [
-      '$schema' => 'http://json-schema.org/draft-04/schema#',
-      'type' => 'object',
-    ];
-
-    // If REST route is enabled add id.
-    if ($routes = $this->routeProvider->getRoutesByNames([SchemaUrl::getRouteName($format)])) {
-      $normalized['id'] = SchemaUrl::fromSchema($format, $entity)->toString();
-    }
-    $normalized = array_merge($normalized, $entity->getMetadata());
-
-    // Stash schema request parameters.
-    $context['entityTypeId'] = $entity->getEntityTypeId();
-    $context['bundleId'] = $entity->getBundleId();
-
-    // Retrieve 'properties' and possibly 'required' nested arrays.
-    $properties = $this->normalizeProperties(
-      $this->getProperties($entity, $format, $context),
-      $format,
-      $context
-    );
-    $normalized = NestedArray::mergeDeep($normalized, $properties);
-
-    return $normalized;
-  }
-
-  /**
-   * Identify properties of the data definition to normalize.
-   *
-   * This allow subclasses of the normalizer to build white or blacklisting
-   * functionality on what will be included in the serialized schema. The JSON
-   * Schema serializer already has logic to drop any properties that are empty
-   * values after processing, but this allows cleaner, centralized logic.
-   *
-   * @param \Drupal\openapi_json_schema\Schema\SchemaInterface $entity
-   *   The Schema object whose properties the serializer will present.
-   * @param string $format
-   *   The serializer format. Defaults to NULL.
-   * @param array $context
-   *   The current serializer context.
-   *
-   * @return \Drupal\Core\TypedData\DataDefinitionInterface[]
-   *   The DataDefinitions to be processed.
-   */
-  protected static function getProperties(SchemaInterface $entity, $format = NULL, $context = []) {
-    return $entity->getProperties();
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/Type/TypeMapperPluginManager.php b/modules/openapi_json_schema/src/Plugin/Type/TypeMapperPluginManager.php
deleted file mode 100644
index 0b48fa9..0000000
--- a/modules/openapi_json_schema/src/Plugin/Type/TypeMapperPluginManager.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\Type;
-
-use Drupal\Core\Plugin\DefaultPluginManager;
-use Drupal\Core\Extension\ModuleHandlerInterface;
-use Drupal\Component\Plugin\FallbackPluginManagerInterface;
-/**
- * Manages TypeMapper plugins.
- *
- * TypeMappers are used to adapt Drupal TypedData types to JSON Schema specs.
- *
- * @see \Drupal\openapi_json_schema\Annotation\TypeMapper
- * @see \Drupal\openapi_json_schema\Plugin\TypeMapperBase
- * @see \Drupal\openapi_json_schema\Plugin\TypeMapperInterface
- * @see plugin_api
- */
-class TypeMapperPluginManager extends DefaultPluginManager implements FallbackPluginManagerInterface {
-
-  /**
-   * The TypeMapper to use if there's a miss.
-   *
-   * @param string
-   */
-  const FALLBACK_TYPE_MAPPER = 'fallback';
-
-  /**
-   * Constructs a new \Drupal\rest\Plugin\Type\ResourcePluginManager object.
-   *
-   * @param \Traversable $namespaces
-   *   An object that implements \Traversable which contains the root paths
-   *   keyed by the corresponding namespace to look for plugin implementations.
-   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
-   *   The module handler to invoke the alter hook with.
-   */
-  public function __construct(\Traversable $namespaces, ModuleHandlerInterface $module_handler) {
-    parent::__construct('Plugin/json_schema/type_mapper', $namespaces, $module_handler, 'Drupal\openapi_json_schema\Plugin\TypeMapperInterface', 'Drupal\openapi_json_schema\Annotation\TypeMapper');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFallbackPluginId($plugin_id, array $configuration = array()) {
-    return static::FALLBACK_TYPE_MAPPER;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/TypeMapperBase.php b/modules/openapi_json_schema/src/Plugin/TypeMapperBase.php
deleted file mode 100644
index 879f773..0000000
--- a/modules/openapi_json_schema/src/Plugin/TypeMapperBase.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin;
-
-use Drupal\Core\Plugin\PluginBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-
-/**
- * Base class for TypeMappers plugins.
- *
- * An empty, subclassed plugin will use the default behavior here, including the
- * use of the plugin ID as the JSON Schema type.
- *
- * This is slightly different from the behavior of the fallback plugin, which
- * uses the data type off the DataDefinition.
- *
- * @see \Drupal\openapi_json_schema\Plugin\TypeMapperPluginManager
- * @see \Drupal\openapi_json_schema\Plugin\json_schema\type_mapper\FallbackTypeMapper
- */
-class TypeMapperBase extends PluginBase implements TypeMapperInterface, ContainerFactoryPluginInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
-    return new static(
-      $configuration,
-      $plugin_id,
-      $plugin_definition
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = [
-      'type' => $this->getPluginId(),
-    ];
-
-    if ($item = $property->getLabel()) {
-      $value['title'] = $item;
-    }
-    if ($item = $property->getDescription()) {
-      $value['description'] = $item;
-    }
-
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/TypeMapperInterface.php b/modules/openapi_json_schema/src/Plugin/TypeMapperInterface.php
deleted file mode 100644
index 68c8363..0000000
--- a/modules/openapi_json_schema/src/Plugin/TypeMapperInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin;
-
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Defines the extended methods needed for a TypeMapper plugin.
- */
-interface TypeMapperInterface {
-
-  /**
-   * Convert the data definition property to a JSON Schema form.
-   *
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface $property
-   *   The data definition property.
-   *
-   * @return mixed
-   *  The mapped value to represent the property in a JSON Schema schema.
-   */
-  public function getMappedValue(DataDefinitionInterface $property);
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/DateTime8601TypeMapper.php b/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/DateTime8601TypeMapper.php
deleted file mode 100644
index ab361af..0000000
--- a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/DateTime8601TypeMapper.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\json_schema\type_mapper;
-
-use Drupal\openapi_json_schema\Plugin\TypeMapperBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Converts Data Definition properties of the datetime_iso8601 to JSON Schema.
- *
- * @TypeMapper(
- *  id = "datetime_iso8601"
- * )
- */
-class DateTime8601TypeMapper extends TypeMapperBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = parent::getMappedValue($property);
-    $value['type'] = 'string';
-    $value['format'] = 'date';
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/EmailTypeMapper.php b/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/EmailTypeMapper.php
deleted file mode 100644
index 8a4ce88..0000000
--- a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/EmailTypeMapper.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\json_schema\type_mapper;
-
-use Drupal\openapi_json_schema\Plugin\TypeMapperBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Converts Data Definition properties of the email to JSON Schema.
- *
- * @TypeMapper(
- *  id = "email"
- * )
- */
-class EmailTypeMapper extends TypeMapperBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = parent::getMappedValue($property);
-    $value['type'] = 'string';
-    $value['format'] = 'email';
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/EntityReferenceTypeMapper.php b/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/EntityReferenceTypeMapper.php
deleted file mode 100644
index 0a013b5..0000000
--- a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/EntityReferenceTypeMapper.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\json_schema\type_mapper;
-
-use Drupal\openapi_json_schema\Plugin\TypeMapperBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Converts Data Definition properties of entity_reference type to JSON Schema.
- *
- * @TypeMapper(
- *  id = "entity_reference"
- * )
- */
-class EntityReferenceTypeMapper extends TypeMapperBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = parent::getMappedValue($property);
-    $value['type'] = 'object';
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/FallbackTypeMapper.php b/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/FallbackTypeMapper.php
deleted file mode 100644
index 7b09cba..0000000
--- a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/FallbackTypeMapper.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\json_schema\type_mapper;
-
-use Drupal\openapi_json_schema\Plugin\TypeMapperBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * The fallback type mapper, explicitly called if none other is applicable.
- *
- * @TypeMapper(
- *  id = "fallback"
- * )
- */
-class FallbackTypeMapper extends TypeMapperBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = parent::getMappedValue($property);
-    $value['type'] = $property->getDataType();
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/FilterFormatTypeMapper.php b/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/FilterFormatTypeMapper.php
deleted file mode 100644
index 6d28cdd..0000000
--- a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/FilterFormatTypeMapper.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\json_schema\type_mapper;
-
-use Drupal\openapi_json_schema\Plugin\TypeMapperBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Converts Data Definition properties of filter_format type to JSON Schema.
- *
- * @TypeMapper(
- *  id = "filter_format"
- * )
- */
-class FilterFormatTypeMapper extends TypeMapperBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = parent::getMappedValue($property);
-    $value['type'] = 'string';
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/TimestampTypeMapper.php b/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/TimestampTypeMapper.php
deleted file mode 100644
index bf7420d..0000000
--- a/modules/openapi_json_schema/src/Plugin/json_schema/type_mapper/TimestampTypeMapper.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Plugin\json_schema\type_mapper;
-
-use Drupal\openapi_json_schema\Plugin\TypeMapperBase;
-use Drupal\Core\TypedData\DataDefinitionInterface;
-
-/**
- * Converts Data Definition properties of timestamp type to JSON Schema.
- *
- * @TypeMapper(
- *  id = "timestamp"
- * )
- */
-class TimestampTypeMapper extends TypeMapperBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMappedValue(DataDefinitionInterface $property) {
-    $value = parent::getMappedValue($property);
-    $value['type'] = 'number';
-    $value['format'] = 'utc-millisec';
-    return $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Schema/NodeSchema.php b/modules/openapi_json_schema/src/Schema/NodeSchema.php
deleted file mode 100644
index 61c0fb0..0000000
--- a/modules/openapi_json_schema/src/Schema/NodeSchema.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Schema;
-
-use Drupal\node\Entity\NodeType;
-use Drupal\Core\Entity\TypedData\EntityDataDefinitionInterface;
-
-/**
- * Specialized schema for Node Entities.
- *
- * Leverages NodeType configuration for additional metadata.
- */
-class NodeSchema extends Schema {
-
-  /**
-   * NodeType associated with the current bundle.
-   *
-   * @var \Drupal\node\Entity\NodeType
-   */
-  protected $nodeType;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function __construct(EntityDataDefinitionInterface $entity_type, $bundle = NULL, $properties = []) {
-    $this->nodeType = NodeType::load($bundle);
-    parent::__construct($entity_type, $bundle, $properties);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function createDescription($entityType, $bundle = '') {
-    $description = $this->nodeType->getDescription();
-    if (empty($description)) {
-      return parent::createDescription($entityType, $bundle);
-    }
-
-    return $description;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Schema/Schema.php b/modules/openapi_json_schema/src/Schema/Schema.php
deleted file mode 100644
index 4b142a3..0000000
--- a/modules/openapi_json_schema/src/Schema/Schema.php
+++ /dev/null
@@ -1,219 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Schema;
-
-use Drupal\Core\TypedData\DataDefinitionInterface;
-use Drupal\Core\Entity\TypedData\EntityDataDefinitionInterface;
-use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
-use Drupal\Core\Cache\RefinableCacheableDependencyTrait;
-use Drupal\Core\Cache\CacheableMetadata;
-
-/**
- * Schema class that describes a Drupal Entity or Entity Type.
- *
- * This can be used as a base class, replaced by another class implementing
- * SchemaInterface, or used on it's own as-is.
- */
-class Schema implements SchemaInterface, RefinableCacheableDependencyInterface {
-
-  use RefinableCacheableDependencyTrait;
-
-  /**
-   * The Entity Type bundle this schema describes, if one exists.
-   *
-   * @var string
-   */
-  protected $bundle;
-
-  /**
-   * The Entity Type this schema describes.
-   *
-   * Key methods for serialization includes getLabel() and id().
-   *
-   * @see https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21TypedData%21EntityDataDefinitionInterface.php/interface/EntityDataDefinitionInterface/8.1.x
-   *
-   * @var \Drupal\Core\Entity\EntityTypeInterface
-   */
-  protected $entityType;
-
-  /**
-   * Metadata values that describe the schema.
-   *
-   * @var array
-   */
-  protected $metadata = [];
-
-  /**
-   * Typed Data objects for all properties on the entity type/bundle.
-   *
-   * @see https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21TypedData%21DataDefinitionInterface.php/interface/DataDefinitionInterface/8.1.x
-   * @see https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21TypedData%21ComplexDataDefinitionInterface.php/interface/ComplexDataDefinitionInterface/8.1.x
-   * @see https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21TypedData%21DataReferenceDefinitionInterface.php/interface/DataReferenceDefinitionInterface/8.1.x
-   * @see https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21FieldDefinitionInterface.php/interface/FieldDefinitionInterface/8.1.x
-   *
-   * @var \Drupal\Core\TypedData\DataDefinitionInterface[]
-   */
-  protected $properties = [];
-
-  /**
-   * Creates a Schema object.
-   *
-   * @param Drupal\Core\Entity\TypedData\EntityDataDefinitionInterface $entity_type
-   *   The Entity Type definition.
-   * @param string $bundle
-   *   The Bundle data definition.
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface[] $properties
-   *   Typed data properties for the schema's initial creation.
-   */
-  public function __construct(EntityDataDefinitionInterface $entity_type, $bundle = NULL, $properties = []) {
-    $this->entityType = $entity_type;
-    $this->bundle = $bundle;
-    $this->addProperties($properties);
-
-    // These cache tags seem like they are essential to Schema cache variation.
-    // It is not clear how to verify these cache tags, or how to pull them from
-    // the injected dependencies.
-    $this->addCacheableDependency((new CacheableMetadata())->addCacheTags(
-      [
-        'entity_bundles',
-        'entity_field_info',
-        'entity_types',
-      ]
-    ));
-
-    $this->metadata['title'] = $this->createTitle(
-      $this->getEntityTypeId(),
-      $this->getBundleId()
-    ) . ' Schema';
-
-    $this->metadata['description'] = $this->createDescription(
-      $this->getEntityTypeId(),
-      $this->getBundleId()
-    );
-
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function addProperties($properties) {
-    $this->properties += $properties;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getEntityTypeId() {
-    return $this->entityType->getEntityTypeId();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getBundleId() {
-    return $this->bundle;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getProperties() {
-    return $this->properties;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getMetadata() {
-    return $this->metadata;
-  }
-
-  /**
-   * Generates a title for the schema based on a simple trio of parameters.
-   *
-   * @param string $required
-   *   This value will be used as the prefix.
-   * @param string $optional
-   *   Optional value to be separated from the required prefix if present.
-   * @param string $sep
-   *   Separator string to be used.
-   *
-   * @return string
-   *   The title value.
-   */
-  protected function createTitle($required, $optional = '', $sep = ':') {
-    return empty($optional) ? $required : $required . $sep . $optional;
-  }
-
-  /**
-   * Generates a description for the schema based on the types.
-   *
-   * @param string $entityType
-   *   Required entity type which the schema defines.
-   * @param string $bundle
-   *   Optional value to be separated from the required prefix if present.
-   *
-   * @return string
-   *   The description value.
-   */
-  protected function createDescription($entityType, $bundle = '') {
-    $output = "Describes the payload for '$entityType' entities";
-    if (!empty($bundle)) {
-      $output .= " of the '$bundle' bundle.";
-    }
-    else {
-      $output .= '.';
-    }
-
-    return $output;
-  }
-
-  /**
-   * Magic method: Unsets a property.
-   *
-   * @param string $name
-   *   The name of the property to unset; e.g., 'title' or 'name'.
-   */
-  public function __unset($name) {
-    unset($this->properties[$name]);
-  }
-
-  /**
-   * Magic method: Determines whether a property is set.
-   *
-   * @param string $name
-   *   The name of the property to check; e.g., 'title' or 'name'.
-   *
-   * @return bool
-   *   Returns TRUE if the property exists and is set, FALSE otherwise.
-   */
-  public function __isset($name) {
-    return isset($this->properties[$name]);
-  }
-
-  /**
-   * Magic method: Sets a property value.
-   *
-   * @param string $name
-   *   The name of the property to set; e.g., 'title' or 'name'.
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface $value
-   *   The value to set.
-   */
-  public function __set($name, DataDefinitionInterface $value) {
-    $this->properties[$name] = $value;
-  }
-
-  /**
-   * Magic method: Gets a property value.
-   *
-   * @param string $name
-   *   The name of the property to get; e.g., 'title' or 'name'.
-   *
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface
-   *   The property object.
-   */
-  public function __get($name) {
-    $this->properties[$name] = $value;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/Schema/SchemaInterface.php b/modules/openapi_json_schema/src/Schema/SchemaInterface.php
deleted file mode 100644
index 6de174b..0000000
--- a/modules/openapi_json_schema/src/Schema/SchemaInterface.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema\Schema;
-
-/**
- * Requirements for a Schema to interact with Schema utilities and serializers.
- *
- * A schema is not directly usable on it's own, it is expected a serializer
- * implemented to process an instance of SchemaInterface will produce a schema
- * to a particular standard, such as JSON-Schema.
- *
- * At present, this interface is only useful for modules that largely sidestep
- * the Schemata module but still choose to leverage Schema-centric serializers.
- */
-interface SchemaInterface {
-
-  /**
-   * Add additional data properties to the Schema.
-   *
-   * @param \Drupal\Core\TypedData\DataDefinitionInterface[] $properties
-   *   The property data definitions.
-   */
-  public function addProperties($properties);
-
-  /**
-   * Retrieve the Entity Type ID.
-   *
-   * @return string
-   *   The Entity Type ID
-   */
-  public function getEntityTypeId();
-
-  /**
-   * Retrieve the Bundle ID.
-   *
-   * @return string
-   *   The Bundle ID
-   */
-  public function getBundleId();
-
-  /**
-   * Retrieve the Schema properties.
-   *
-   * @return \Drupal\Core\TypedData\DataDefinitionInterface[]
-   *   The property data definitions.
-   */
-  public function getProperties();
-
-  /**
-   * Retrieve the Schema metadata.
-   *
-   * @return string[]
-   *   The metadata values.
-   */
-  public function getMetadata();
-
-}
diff --git a/modules/openapi_json_schema/src/SchemaFactory.php b/modules/openapi_json_schema/src/SchemaFactory.php
deleted file mode 100644
index eb065a9..0000000
--- a/modules/openapi_json_schema/src/SchemaFactory.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema;
-
-use Psr\Log\LoggerInterface;
-use Drupal\Core\Entity\EntityTypeManager;
-use Drupal\Core\Entity\EntityTypeBundleInfo;
-use Drupal\Core\TypedData\TypedDataManager;
-
-/**
- * Create an object of type Drupal\Schemata\Schema\SchemaInterface.
- *
- * Identifying a specific classed object to use is currently handled by a
- * mapping function in the create() method. Swapping out different
- * SchemaInterface implementations is not currently effective.
- */
-class SchemaFactory {
-
-  /**
-   * Logger.
-   *
-   * @var \Psr\Log\LoggerInterface
-   */
-  protected $logger;
-
-  /**
-   * EntityTypeManager.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeManager
-   */
-  protected $entityTypeManager;
-
-  /**
-   * EntityTypeBundleInfo.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeBundleInfo
-   */
-  protected $entityTypeBundleInfo;
-
-  /**
-   * TypedDataManager.
-   *
-   * @var \Drupal\Core\TypedData\TypedDataManager
-   */
-  protected $typedDataManager;
-
-  /**
-   * Constructs a SchemaBuilder.
-   *
-   * @param \Psr\Log\LoggerInterface $logger
-   *   Logger.
-   * @param \Drupal\Core\Entity\EntityTypeManager $entity_type_manager
-   *   The EntityTypeManager to extract details of entity types.
-   * @param \Drupal\Core\Entity\EntityTypeBundleInfo $entity_type_bundle_info
-   *   The EntityTypeManager to extract details of entity types.
-   * @param \Drupal\Core\TypedData\TypedDataManager $typed_data_manager
-   *   The TypedDataManager to extract meaning of individual Entity properties.
-   */
-  public function __construct(LoggerInterface $logger, EntityTypeManager $entity_type_manager, EntityTypeBundleInfo $entity_type_bundle_info, TypedDataManager $typed_data_manager) {
-    $this->logger = $logger;
-    $this->entityTypeManager = $entity_type_manager;
-    $this->entityTypeBundleInfo = $entity_type_bundle_info;
-    $this->typedDataManager = $typed_data_manager;
-  }
-
-  /**
-   * Assemble a schema object based on the requested entity type.
-   *
-   * @param string $entity_type
-   *   URL input specifying an entity type to be processed.
-   * @param string $bundle
-   *   URL input specifying an entity bundle to be processed. May be NULL
-   *   for support of entities that do not have bundles.
-   *
-   * @return \Drupal\openapi_json_schema\Schema\Schema
-   *   A Schema object which can be processed as a Rest Resource response.
-   *   This will likely be converted into an interface or base class here.
-   */
-  public function create($entity_type, $bundle = NULL) {
-    $entity_type_plugin = $this->entityTypeManager->getDefinition($entity_type, FALSE);
-    if (empty($entity_type_plugin)) {
-      $this->logger->warning('Invalid Entity Type "%entity_type" specified.', [
-        '%entity_type' => $entity_type,
-      ]);
-      return [];
-    }
-    elseif (!($entity_type_plugin->isSubclassOf('\Drupal\Core\Entity\ContentEntityInterface'))) {
-      $this->logger->warning('Only Content Entities are supported.');
-      return [];
-    }
-
-    $bundles = $this->entityTypeBundleInfo->getBundleInfo($entity_type);
-    if (!empty($bundle) && !array_key_exists($bundle, $bundles)) {
-      $this->logger->warning('Specified Entity Bundle "%bundle" does not exist.', [
-        '%bundle' => $bundle,
-      ]);
-      return [];
-    }
-
-    if (!empty($bundle)) {
-      $data_definition = $this->typedDataManager->createDataDefinition("entity:" . $entity_type . ":" . $bundle);
-    }
-    else {
-      $data_definition = $this->typedDataManager->createDataDefinition("entity:" . $entity_type);
-    }
-
-    if ($entity_type == 'node' && !empty($bundle)) {
-      $class = '\Drupal\openapi_json_schema\Schema\NodeSchema';
-    }
-    else {
-      $class = '\Drupal\openapi_json_schema\Schema\Schema';
-    }
-
-    $schema = new $class(
-      $data_definition,
-      $bundle,
-      $data_definition->getPropertyDefinitions()
-    );
-
-    $this->logger->notice('Schema generated for Entity Type (%entity_type) and Bundle (%bundle).', [
-      '%entity_type' => $entity_type,
-      '%bundle' => empty($bundle) ? 'N/A' : $bundle,
-    ]);
-
-    return $schema;
-  }
-
-}
diff --git a/modules/openapi_json_schema/src/SchemaUrl.php b/modules/openapi_json_schema/src/SchemaUrl.php
deleted file mode 100644
index 3b7b9ef..0000000
--- a/modules/openapi_json_schema/src/SchemaUrl.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php
-
-namespace Drupal\openapi_json_schema;
-
-use Drupal\openapi_json_schema\schema\SchemaInterface;
-use Drupal\Core\Url;
-
-/**
- * Provides additional URL factory methods for linking to Schema.
- *
- * If internal methods or properties of the Url class seem valuable, this class
- * could be made a child class. For now the forced isolation is used to keep it
- * clean.
- */
-class SchemaUrl {
-
-  /**
-   * Generate a URI for the Schema instance.
-   *
-   * @param string $format
-   *   The format or type of schema.
-   *
-   * @return \Drupal\Core\Url
-   *   The schema resource Url object.
-   */
-  public static function fromSchema($format, SchemaInterface $schema) {
-    return static::fromOptions(
-      $format,
-      $schema->getEntityTypeId(),
-      $schema->getBundleId()
-    );
-  }
-
-  /**
-   * Build a URI to a schema resource.
-   *
-   * @param string $format
-   *   The format or type of schema.
-   * @param string $entity_type
-   *   The entity type.
-   * @param string $bundle
-   *   The entity bundle.
-   *
-   * @return \Drupal\Core\Url
-   *   The schema resource Url object.
-   */
-  public static function fromOptions($format, $entity_type, $bundle = NULL) {
-    $route = static::getRouteName($format, $bundle);
-
-    $parameters = [
-      'entity_type' => $entity_type,
-    ];
-    if (isset($bundle)) {
-      $parameters['bundle'] = $bundle;
-    }
-
-    return Url::fromRoute($route, $parameters, [
-      'query' => [
-        '_format' => $format,
-      ],
-      'absolute' => TRUE,
-    ]);
-  }
-
-  /**
-   * Determine the route name.
-   *
-   * @param string $format
-   *   The route format.
-   * @param string $bundle
-   *   The bundle name.
-   *
-   * @return string
-   *   The route name.
-   */
-  public static function getRouteName($format, $bundle = '') {
-    return empty($bundle) ? 'rest.schemata_entity_base.GET.' . $format
-      : 'rest.schemata_entity_bundle.GET.' . $format;
-  }
-
-}
diff --git a/openapi.info.yml b/openapi.info.yml
index ccea6a0..e4e5e07 100644
--- a/openapi.info.yml
+++ b/openapi.info.yml
@@ -4,5 +4,4 @@ description: Connects Drupal to the OpenAPI Javascript Library
 core: 8.x
 package: OpenAPI
 dependencies:
-  - rest (>= 8.2)
-  - openapi_json_schema
+  - rest (>= 8.2)
\ No newline at end of file
diff --git a/openapi.install b/openapi.install
deleted file mode 100644
index 2967965..0000000
--- a/openapi.install
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-/**
- * @file
- * Update function for OpenAPI module.
- */
-
-/**
- * Enable openapi_json_schema dependency.
- */
-function openapi_update_8001() {
-  Drupal::service('module_installer')->install(['openapi_json_schema']);
-}
diff --git a/src/Controller/OpenApiController.php b/src/Controller/OpenApiController.php
index cd4a498..4ac7bb7 100644
--- a/src/Controller/OpenApiController.php
+++ b/src/Controller/OpenApiController.php
@@ -12,7 +12,6 @@ use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Routing\RouteProviderInterface;
 use Drupal\rest\Plugin\Type\ResourcePluginManager;
 use Drupal\rest\RestResourceConfigInterface;
-use Drupal\openapi_json_schema\SchemaFactory;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\Routing\Route;
@@ -39,13 +38,6 @@ class OpenApiController extends ControllerBase implements ContainerInjectionInte
   protected $fieldManager;
 
   /**
-   * The Schemata SchemaFactory.
-   *
-   * @var \Drupal\schemata\SchemaFactory
-   */
-  protected $schemaFactory;
-
-  /**
    * The serializer.
    *
    * @var \Symfony\Component\Serializer\SerializerInterface
@@ -68,18 +60,15 @@ class OpenApiController extends ControllerBase implements ContainerInjectionInte
    *   The entity type manager.
    * @param \Drupal\Core\Entity\EntityFieldManagerInterface $field_manager
    *   The field manager.
-   * @param \Drupal\openapi_json_schema\SchemaFactory $schema_factory
-   *   The schema factory.
    * @param \Symfony\Component\Serializer\Serializer $serializer
    *   The serializer.
    * @param \Drupal\Core\Routing\RouteProviderInterface $routing_provider
    *   The route provider.
    */
-  public function __construct(ResourcePluginManager $manager, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, SchemaFactory $schema_factory, Serializer $serializer, RouteProviderInterface $routing_provider) {
+  public function __construct(ResourcePluginManager $manager, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $field_manager, Serializer $serializer, RouteProviderInterface $routing_provider) {
     $this->manager = $manager;
     $this->entityTypeManager = $entity_type_manager;
     $this->fieldManager = $field_manager;
-    $this->schemaFactory = $schema_factory;
     $this->serializer = $serializer;
     $this->routingProvider = $routing_provider;
   }
@@ -92,7 +81,6 @@ class OpenApiController extends ControllerBase implements ContainerInjectionInte
       $container->get('plugin.manager.rest'),
       $container->get('entity_type.manager'),
       $container->get('entity_field.manager'),
-      $container->get('openapi_json_schema.schema_factory'),
       $container->get('serializer'),
       $container->get('router.route_provider')
     );
diff --git a/src/Tests/OpenAPIResourceTest.php b/src/Tests/OpenAPIResourceTest.php
index 388eb36..d4aa2cb 100644
--- a/src/Tests/OpenAPIResourceTest.php
+++ b/src/Tests/OpenAPIResourceTest.php
@@ -23,7 +23,6 @@ class OpenAPIResourceTest extends OpenApiTestBase {
     'serialization',
     'rest',
     'openapi',
-    'openapi_json_schema',
   ];
 
   /**
