code: def rison(schema=None):
      
  
      def _rison(f):
          def wraps(self, *args, **kwargs):
              value = request.args.get(API_URI_RIS_KEY, None)
              kwargs["rison"] = dict()
              if value:
                  try:
                      kwargs["rison"] = prison.loads(value)
                  except prison.decoder.ParserException:
                      return self.response_400(message="Not a valid rison argument")
              if schema:
                  try:
                      jsonschema.validate(instance=kwargs["rison"], schema=schema)
                  except jsonschema.ValidationError as e:
                      return self.response_400(
                          message="Not a valid rison schema {}".format(e)
                      )
              return f(self, *args, **kwargs)
  
          return functools.update_wrapper(wraps, f)
  
      return _rison
docs: Use this decorator to parse URI *Rison* arguments to
          a python data structure, your method gets the data
          structure on kwargs['rison']. Response is HTTP 400
          if *Rison* is not correct::
  
              class ExampleApi(BaseApi):
                      @expose('/risonjson')
                      @rison()
                      def rison_json(self, **kwargs):
                          return self.response(200, result=kwargs['rison'])
  
          You can additionally pass a JSON schema to
          validate Rison arguments::
  
              schema = {
                  "type": "object",
                  "properties": {
                      "arg1": {
                          "type": "integer"
                      }
                  }
              }
  
              class ExampleApi(BaseApi):
                      @expose('/risonjson')
                      @rison(schema)
                      def rison_json(self, **kwargs):
                          return self.response(200, result=kwargs['rison'])