Web App Endpoints#
Local (default port - 8001): http://127.0.0.1:8001
Command to generate tokens#
python manage.py drf_create_token <username>
List Federated Models#
Endpoint#
/api/v1/models/
Method#
GET
Create a Federated Model#
Endpoint#
/api/v1/models/
Method#
POST
Content Type#
application/json
Data Params#
name(string), name of the model, requiredallow_aggregation(bool), boolean to notate if aggregation should be started immediately, requiredaggregator(string), method for aggregation, requiredinitial_model(json), the initial values of model for experimentation, optionalclients(list of string) list of UUIDs of existing clients to be registered, optionalrequirement(string) name of requirement to enforce on aggregation, optionalrequirement_args(json) args, kwargs to be passed to the aggregation function, optionalupdate_schema(json), the expected structure of Model Updates, optionalclient_agg_results_schema(json), the layout of the results the client is pushing to the FMA service, optionalfurthest_base_agg(integer), the delta from the current FMA aggregate id which may be queried from the FMA service by clients for a valid model update, optional
Get Federated Model#
Endpoint#
/api/v1/models/<id>/
Method#
GET
Get Register Client to a Federated Model#
Endpoint#
/api/v1/models/<id>/register_client
Method#
POST
Header Params#
CLIENT_UUID(string) UUID of Federated Client registering to model. If None, gives client their UUID
Example:
# for a new client, it will return their UUID
curl -X POST http://127.0.0.1:8000/api/v1/models/1/register_client/
# for an existing client
curl -X POST http://127.0.0.1:8000/api/v1/models/1/register_client/ -H 'CLIENT-UUID: <UUID>'
Publish Aggregate#
Endpoint#
/api/v1/model_aggregates/<id>/publish_aggregate
Method#
POST
Data Param#
version(string), version for the aggregate, required
Get latest model aggregate as a Client from a Federated Model#
Endpoint#
/api/v1/models/<id>/get_latest_aggregate
Method#
GET
Header Params#
CLIENT_UUID(string) UUID of Federated Client registering to model. If None, gives client their UUID
Example:
curl -X GET http://127.0.0.1:8000/api/v1/models/1/get_latest_aggregate/ -H 'CLIENT-UUID: <UUID>'
Get latest model#
Endpoint#
/api/v1/models/<id>/get_latest_model
Method#
GET
Header Params#
CLIENT_UUID(string) UUID of Federated Client registering to model. If None, gives client their UUID
Example:
curl -X GET http://127.0.0.1:8000/api/v1/models/1/get_latest_model/ -H 'CLIENT-UUID: <UUID>'
List Model Updates#
Endpoint#
/api/v1/model_updates/
Method#
GET
Header Params#
CLIENT_UUID(string) UUID of Federated Client registering to model. If None, gives client their UUID
Example:
curl -X GET http://127.0.0.1:8000/api/v1/model_updates/ -H 'CLIENT-UUID: <UUID>'
Get Model Update#
Endpoint#
/api/v1/model_updates/<ID>/
Method#
GET
Create a Model Update#
Endpoint#
/api/v1/model_updates/
Method#
POST
Content Type#
application/json
Data Params#
client(string) UUID of client making the update, requiredfederated_model(int) id of the model for which to add the update, requireddata(json), json of data for the update, requiredbase_aggregate(ForeignKey), id of the aggregate to which the update was applied, optional
Get Model Aggregates#
Endpoint#
/api/v1/model_aggregates/
Method#
GET
Get Model Update#
Endpoint#
/api/v1/model_aggregates/<ID>/
Method#
GET
Data Objects#
Client#
id(integer)uuid(uuid)
FederatedModel#
id(integer)name(string)developer(User)clients(list of Client)requirement(string) name of requirement funcrequirement_args(json) args, kwrags of requirement funcupdate_schema(json)client_agg_results_schema(json)scheduler(OnetoOne Field)furthest_base_agg(Positive Integer)
ModelArtifact#
id(integer)values(File)federated_model(ForeignKey)version(string)
ModelAggregate#
id(integer)federated_model(FederatedModel)parent(TreeForeignKey)result(json) output of aggregationvalidation_score(Float)
ModelUpdate#
id(integer)client(Client)federated_model(FederatedModel)data(json)status(Integer)base_aggregate(ForeignKey)applied_aggregate(ForeignKey)
ClientAggregateScore#
id(integer)aggregate(ForeignKey)client(ForeignKey)validation_results(json)