code: async def send_schema(self, schema_data_json: str) -> str:
          
  
          LOGGER.debug('Origin.send_schema >>> schema_data_json: %s', schema_data_json)
  
          schema_data = json.loads(schema_data_json)
          s_key = schema_key(schema_id(self.did, schema_data['name'], schema_data['version']))
          with SCHEMA_CACHE.lock:
              try:
                  rv_json = await self.get_schema(s_key)
                  LOGGER.error(
                      'Schema %s version %s already exists on ledger for origin-did %s: not sending',
                      schema_data['name'],
                      schema_data['version'],
                      self.did)
              except AbsentSchema:  # OK - about to create and send it
                  (_, schema_json) = await anoncreds.issuer_create_schema(
                      self.did,
                      schema_data['name'],
                      schema_data['version'],
                      json.dumps(schema_data['attr_names']))
                  req_json = await ledger.build_schema_request(self.did, schema_json)
                  resp_json = await self._sign_submit(req_json)
                  resp = json.loads(resp_json)
                  resp_result_txn = resp['result']['txn']
                  rv_json = await self.get_schema(schema_key(schema_id(
                      resp_result_txn['metadata']['from'],
                      resp_result_txn['data']['data']['name'],
                      resp_result_txn['data']['data']['version'])))  # add to cache en passant
  
          LOGGER.debug('Origin.send_schema <<< %s', rv_json)
          return rv_json
docs: Send schema to ledger, then retrieve it as written to the ledger and return it.
          If schema already exists on ledger, log error and return schema.
  
          :param schema_data_json: schema data json with name, version, attribute names; e.g.,
  
          ::
  
              {
                  'name': 'my-schema',
                  'version': '1.234',
                  'attr_names': ['favourite_drink', 'height', 'last_visit_date']
              }
  
          :return: schema json as written to ledger (or existed a priori)