new: [api] namespace API access added
You can do queries like: - http://127.0.0.1:5000/namespace/finduuid/mitre-attack-id/T1589.003 and also list the known namespaces of the CyCAT instance. curl -X 'GET' \ 'http://127.0.0.1:5000/namespace/getall' \ -H 'accept: application/json' and get [ "capec", "mitre-attack-id" ]main
parent
db0c41a2a0
commit
513ad99b93
|
@ -33,6 +33,7 @@ class info(Resource):
|
||||||
info['publishers'] = r.zcard('t:1')
|
info['publishers'] = r.zcard('t:1')
|
||||||
info['projects'] = r.zcard('t:2')
|
info['projects'] = r.zcard('t:2')
|
||||||
info['items'] = r.zcard('t:3')
|
info['items'] = r.zcard('t:3')
|
||||||
|
info['namespaces'] = r.scard('idnamespace')
|
||||||
info['version'] = version
|
info['version'] = version
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
@ -139,6 +140,32 @@ class relationshipsexpanded(Resource):
|
||||||
else:
|
else:
|
||||||
return {'message': 'UUID is incorrect'}, 400
|
return {'message': 'UUID is incorrect'}, 400
|
||||||
|
|
||||||
|
@api.route('/namespace/getall')
|
||||||
|
@api.doc(description="List all known namespaces.")
|
||||||
|
class namespacegetall(Resource):
|
||||||
|
def get(self):
|
||||||
|
s = r.smembers("idnamespace")
|
||||||
|
return(list(s))
|
||||||
|
|
||||||
|
@api.route('/namespace/getid/<string:namespace>')
|
||||||
|
@api.doc(description="Get all ID from a given namespace.")
|
||||||
|
class namespacegetid(Resource):
|
||||||
|
def get(self, namespace=None):
|
||||||
|
if namespace is None:
|
||||||
|
return None
|
||||||
|
k = "idk:{}".format(namespace)
|
||||||
|
s = r.smembers(k)
|
||||||
|
return(list(s))
|
||||||
|
|
||||||
|
@api.route('/namespace/finduuid/<string:namespace>/<string:namespaceid>')
|
||||||
|
@api.doc(description="Get all known UUID for a given namespace id.")
|
||||||
|
class namespacefinduuid(Resource):
|
||||||
|
def get(self, namespace=None, namespaceid=None):
|
||||||
|
if namespaceid is None or namespace is None:
|
||||||
|
return None
|
||||||
|
k = "id:{}:{}".format(namespace, namespaceid)
|
||||||
|
s = r.smembers(k)
|
||||||
|
return(list(s))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
app.run()
|
app.run()
|
||||||
|
|
|
@ -48,6 +48,7 @@ def addexternalid(uuidsource=None, namespace=None, namespaceid=None):
|
||||||
rdb.sadd(k, uuidsource)
|
rdb.sadd(k, uuidsource)
|
||||||
k = "idk:{}".format(namespace)
|
k = "idk:{}".format(namespace)
|
||||||
rdb.sadd(k, namespaceid)
|
rdb.sadd(k, namespaceid)
|
||||||
|
rdb.sadd("idnamespace", namespace)
|
||||||
|
|
||||||
models = ['enterprise-attack', 'mobile-attack', 'ics-attack', 'pre-attack']
|
models = ['enterprise-attack', 'mobile-attack', 'ics-attack', 'pre-attack']
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue