async def get_box_ids_json(self) -> str:
        """
        Return json object on lists of all unique box identifiers for credentials in wallet:
        schema identifiers, credential definition identifiers, and revocation registry identifiers; e.g.,

        ::

        {
            "schema_id": [
                "R17v42T4pk...:2:tombstone:1.2",
                "9cHbp54C8n...:2:business:2.0",
                ...
            ],
            "cred_def_id": [
                "R17v42T4pk...:3:CL:19:0",
                "9cHbp54C8n...:3:CL:37:0",
                ...
            ]
            "rev_reg_id": [
                "R17v42T4pk...:4:R17v42T4pk...:3:CL:19:0:CL_ACCUM:0",
                "R17v42T4pk...:4:R17v42T4pk...:3:CL:19:0:CL_ACCUM:1",
                "9cHbp54C8n...:4:9cHbp54C8n...:3:CL:37:0:CL_ACCUM:0",
                "9cHbp54C8n...:4:9cHbp54C8n...:3:CL:37:0:CL_ACCUM:1",
                "9cHbp54C8n...:4:9cHbp54C8n...:3:CL:37:0:CL_ACCUM:2",
                ...
            ]
        }

        :return: tuple of sets for schema ids, cred def ids, rev reg ids
        """

        LOGGER.debug('HolderProver.get_box_ids_json >>>')

        s_ids = set()
        cd_ids = set()
        rr_ids = set()
        for cred in json.loads(await self.get_creds_display_coarse()):
            s_ids.add(cred['schema_id'])
            cd_ids.add(cred['cred_def_id'])
            if cred['rev_reg_id']:
                rr_ids.add(cred['rev_reg_id'])

        rv = json.dumps({
            'schema_id': list(s_ids),
            'cred_def_id': list(cd_ids),
            'rev_reg_id': list(rr_ids)
        })
        LOGGER.debug('HolderProver.get_box_ids_json <<< %s', rv)
        return rv