code: def schema(self, name, component=None, **kwargs):
          
          if name in self._schemas:
              raise DuplicateComponentNameError(
                  'Another schema with name "{}" is already registered.'.format(name)
              )
          component = component or {}
          ret = component.copy()
          # Execute all helpers from plugins
          for plugin in self._plugins:
              try:
                  ret.update(plugin.schema_helper(name, component, **kwargs) or {})
              except PluginMethodNotImplementedError:
                  continue
          self._schemas[name] = ret
          return self
docs: Add a new schema to the spec.
  
          :param str name: identifier by which schema may be referenced.
          :param dict component: schema definition.
  
          .. note::
  
              If you are using `apispec.ext.marshmallow`, you can pass fields' metadata as
              additional keyword arguments.
  
              For example, to add ``enum`` and ``description`` to your field: ::
  
                  status = fields.String(
                      required=True,
                      enum=['open', 'closed'],
                      description='Status (open or closed)',
                  )
  
          https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject