POST /symetry/rest/{cid}/fedml/create?pid={new-project-id} [body=Encrypted Map]
This REST endpoint allows the user to create a new federation. The user who creates the federation also becomes its administrator. The body is a map that is encoded to a JSON string and then encrypted using the user secret key. This encryption is necessary in order to protect sensitive information like aws access key and aws secret key that are required to be passed.
Federation Key Map Value
Mandatory key
Required / Optional
Value Description
fed_name
Required
The name of the federation.
fed_local_type
Optional
The type of project to use. Supported values: cpu and gpu. The default value is cpu.
aws_access_key
Required
Your AWS access key.
aws_secret_key
Required
Your AWS secret key.
aws_region
Required
The region to use to allocate resource needed by the federation (SNS topic, SQS queue and subscription).
s3_bucket
Required
AWS S3 bucket to use to store message to other nodes in the federation.
Specify if sync message content should be encrypted. Default is false
Query Parameters
Parameter
Required / Optional
Description
pid
Required
Name of the new SymetryML project.
persist
Optional
whether to persist or not the project
HTTP Responses
HTTP Status Code
HTTP Status Message
Description
201
CREATED
Success. {"statusCode":"CREATED","statusString":" + SYMETRYML Created with id:r1","values":{}}
409
CONFLICT
SymetryML project already exists. {"statusCode":"CONFLICT","statusString":" + Customer [c1] already have SYMETRYML with id[r1], ","values":{}}
HTTP Response Entity
None
Sample Request/Response Fed Create
Federated Learning Get Encrypted Federation Info
URL
Get Encrypted Body Key Map Value.
TBD new ResponseEntityKey.
Mandatory key
Required / Optional
Value Description
passwd
Required
Password to use to encrypt the federation information
fed_rest_host
Required
Hostname where admin can be reached at.
HTTP Responses
HTTP Status Code
HTTP Status Message
Description
200
OK
Success.
400
BAD REQUEST
SymetryML project does not exist. {"statusCode":"BAD_REQUEST","statusString":"Cannot Find SYMETRYML id[r5] for Customer id [c1]","values":{}
HTTP Response Entity
The response will be stored in the fedInfoEncrypted entity which is a string. That string is in turn a json encoded string encrypted with the provided password. Once decrypted you get a <string, string> map that contains the following key: (Consult Federation Key Map for details). The response token fed_req_token can only be used one time.
sync_sched
fed_name
fed_secret_key
aws_topic_arn
aws_topic_region
fed_req_token
Sample Request/Response
Decrypted Message Example:
Once decrypted the Federation info will contain information like in the following example. This is basically a map with a few key/ value pair. These key value pairs must be used when joining a federation. See section for details.
Join an AWS Backed Federation
URL
This REST endpoint allows the user to join an existing federation. The body is a map that is encoded to a JSON string and then encrypted using the user secret key. This encryption is necessary in order to protect sensitive information like aws access key and aws secret key that are required to be passed as part of the body.
Federation Join Request Body
The request body is composed of 2 types of key/value pairs:
Those that come from the Admin in an encrypted form. See Decrypted Message example.
The following key value will be received as part of the password encrypted json message from the federation admin. They need to be added to the query body without modification.
POST url="http://charm:8080/symetry/rest/c1/fedml/create?pid=nh_test_admin
Request Body:
KjxfT4/2TpJsfwd+gAG0zAnH7r+fs7IyKrlMXNoqh5CNQjoLioBW6HjXH5hRVqEYASueMI++fmMDAEOBIQD/e/3HDeA/SVojcmzywmxcMNotH9iTpboU9KIJZVq1JW3bxAv+e2COEuI+82qrQVJ4QifuAy5TxR+B5H0GjC0x4qiDK5h+TpEDnFB1Cjdv3xQyiDW8EetZNlCcriEdkTSvxI8duhdJIhFy4UYL1XzN7SavwmE/rddP+ETfeMmLJehseBOJr19xPiMR71maM2DybESQvCN1bWUj2XEvujasrcMMUK4+NEeC0pDe+gWoJhRgAZlRnOWgdwCKeBqcmqOc9Q==
Response:
{"statusCode":"CREATED","statusString":"Project Created with id:nh_test_admin","values":{}}
POST /symetry/rest/{cid}/fedml/{pid}/getEncrypted
Request:
POST url="http://charm:8080/symetry/rest/c1/fedml/nh_test_admin/getEncrypted"
Request Body Before Encryption:
{"passwd":"passwd","fed_rest_host":"http://charm:8080"}
Request Body:
qvh4P1y937flTE/R6GgtrN8Weu28/jCx14zBIG5zk4CEqC4+rLL/HtVvKqUthPsSVZN8BgWP39O+MKEyOsUo8w==
Response:
{"statusCode":"OK","statusString":"OK","values":{"fedInfoEncrypted":"ZwsCbdhP2GxfOgDBwJHoy61uRMZLNg7D581Cs9zWAgjwWpK2wScvgpTexpsVyilbvGThFVsWXz57n9BXY+DA1EmI+L29H+K60b1lI4v/WLr45HHCdMEDCcBAL+F3/3NcRBl5RcfgBlC4RTV6+h/75rr21lgMGxnVXlYBoUh//JpBxfJhEZyxa1gv0WVdCXDDT/M3Aq819r+6rS89jj38SYj/Hzj7pJaEHvbxe+OniH5Z90xEortLZeVdG8HE5zzqLegKpChFYFE4l60RXtdyE/fa7uY3gM7Q/yU+8SQ3Yjkvl8B5Gs7coBdgkcKNmcgiBqG4YrQSg8SCuX6RsKs4B4qV61w+AZkmt9+ipp049Hpxwu0myZ2agomcAMKdZHDv"}}
POST /symetry/rest/{cid}/fedml/createJoin?pid={new-project-id} [body=Encrypted Map]
POST url="http://charm:8080/symetry/rest/c1/fedml/createJoin?pid=node1"
Request Body:
KjxfT4/2TpJsfwd+gAG0zAnH7r+fs7IyKrlMXNoqh5CNQjoLioBW6HjXH5hRVqEYASueMI++fmMDAEOBIQD/e/3HDeA/SVojcmzywmxcMNotH9iTpboU9KIJZVq1JW3bxAv+e2COEuI+82qrQVJ4QifuAy5TxR+B5H0GjC0x4qiDK5h+TpEDnFB1Cjdv3xQycXSud7eRwy72gtY+wi8Rey3Ku1BerIRbhRVTBaHicb2duiZTZivdx1VJKA7BbH2s...
Response:
{"statusCode":"CREATED","statusString":"Fed Project created with join","values":{}}
POST /symetry/rest/{cid}/fedml/{pid}/awsinfo [body=Encrypted Map]
Request
POST url="http://charm:8080/symetry/rest/c1/fedml/awsinfo"
Response Header:
Location: http://charm:8080/symetry/rest/c1/jobs/4
Response:
{"statusCode":"ACCEPTED","statusString":"Job Created","values":{}}
Job Request:
GET url="http://charm:8080/symetry/rest/c1/jobs/4