class_docstr: Service schema handler 
class_docstr_tok: ["Service","schema","handler"]
code: def _parse_action(self, action_name, action_version, action_config):
      data = self.default.copy()
      data.update(action_config)
  
      if not action_config.get("generate", True):
          return None
  
      definitions_keys = set()
      for schema_key in ("request", "response"):
          if schema_key in action_config:
              try:
                  schema = action_config[schema_key]
                  refs = (
                      self._expand_schema_references_with_definitions(
                          schema
                      )
                  )
                  self._resolve_schema_references(schema, refs=refs)
                  definitions_keys.update(refs)
              except ValueError as ex:
                  name = "%s.%s/%.1f/%s" % (
                      self.name,
                      action_name,
                      action_version,
                      schema_key,
                  )
                  raise ValueError("%s in %s" % (str(ex), name))
  
      return Action(
          name=action_name,
          version=action_version,
          definitions_keys=list(definitions_keys),
          service=self.name,
          **(
              {
                  key: value
                  for key, value in data.items()
                  if key in attr.fields_dict(Action)
              }
          ),
      )
  
imports: import itertools
  import re
  import attr
  import six
  from ...utilities.pyhocon import ConfigTree
  from .action import Action
label_desc: Use image node_id 14 for calling the Service obj's underlying member method code with example usage: obj._parse_action(action_name, action_version, action_config) and returns: Action, None