5f6fccc6e8
Our current endpoints bail on us, if the column data is null. Thus we need to take the intermediate step and set the default to a fixed value and reset those with the following release. It sets the default column value to our current config values of 50GB for storage and bandwidth and 100 buckets, while still enabling the field to be nullable. All 0 values are migrated to be the default as well to ensure they can keep using their projects, as with the original change, 0 actually means 0. Change-Id: I797be80ce2d2105091599dc1b3fc76f74336b66b |
||
---|---|---|
.. | ||
common.go | ||
coupon_test.go | ||
coupon.go | ||
project_test.go | ||
project.go | ||
README.md | ||
server_test.go | ||
server.go | ||
user_test.go | ||
user.go |
satellite/admin
Satellite Admin package provides API endpoints for administrative tasks.
Requires setting Authorization
header for requests.
POST /api/user
Adds a new user.
An example of a required request body:
{
"email": "alice@mail.test",
"fullName": "Alice Test",
"password": "password"
}
A successful response body:
{
"id": "12345678-1234-1234-1234-123456789abc",
"email": "alice@mail.test",
"fullName": "Alice Test",
"shortName": "",
"passwordHash": ""
}
PUT /api/user/{user-email}
Updates the details of existing user found by its email.
A successful response body:
{
"email": "alice+2@mail.test",
"shortName": "Al",
"passwordHash": "1234abcd"
}
GET /api/user/{user-email}
This endpoint returns information about user and their projects.
A successful response body:
{
"user":{
"id": "12345678-1234-1234-1234-123456789abc",
"fullName": "Alice Bob",
"email":"alice@example.test"
},
"projects":[
{
"id": "abcabcab-1234-abcd-abcd-abecdefedcab",
"name": "Project",
"description": "Project to store data.",
"ownerId": "12345678-1234-1234-1234-123456789abc"
}
],
"coupons": [
{
"id": "2fcdbb8f-8d4d-4e6d-b6a7-8aaa1eba4c89",
"userId": "12345678-1234-1234-1234-123456789abc",
"duration": 2,
"amount": 3000,
"description": "promotional coupon (valid for 2 billing cycles)",
"type": 0,
"status": 0,
"created": "2020-05-19T00:34:13.265761+02:00"
}
]
}
DELETE /api/user/{user-email}
Deletes the user.
POST /api/coupon
Adds a coupon for specific user.
An example of a required request body:
{
"userId": "12345678-1234-1234-1234-123456789abc",
"duration": 2,
"amount": 3000,
"description": "promotional coupon (valid for 2 billing cycles)"
}
A successful response body:
{
"id": "2fcdbb8f-8d4d-4e6d-b6a7-8aaa1eba4c89"
}
GET /api/coupon/{coupon-id}
Gets a coupon with the specified id.
A successful response body:
{
"id": "2fcdbb8f-8d4d-4e6d-b6a7-8aaa1eba4c89",
"userId": "12345678-1234-1234-1234-123456789abc",
"duration": 2,
"amount": 3000,
"description": "promotional coupon (valid for 2 billing cycles)",
"type": 0,
"status": 0,
"created": "2020-05-19T00:34:13.265761+02:00"
}
DELETE /api/coupon/{coupon-id}
Deletes the specified coupon.
GET /api/project/{project-id}/usage
This endpoint returns whether the project has outstanding usage or not.
A project with not usage returns status code 200 and {"result":"no project usage exist"}
.
GET /api/project/{project-id}/limit
This endpoint returns information about project limits.
A successful response body:
{
"usage": {
"amount": "1.0 TB",
"bytes": 1000000000000
},
"bandwidth": {
"amount": "1.0 TB",
"bytes": 1000000000000
},
"rate": {
"rps": 0
}
}
POST /api/project/{project-id}/limit?usage={value}
Updates usage limit for a project.
POST /api/project/{project-id}/limit?bandwidth={value}
Updates bandwidth limit for a project.
POST /api/project/{project-id}/limit?rate={value}
Updates rate limit for a project.
POST /api/project/{project-id}/limit?buckets={value}
Updates bucket limit for a project.
GET /api/project/{project-id}
Gets the common information about a project.
PUT /api/project/{project-id}
Updates project name or description.
{
"projectName": "My new Project Name",
"description": "My new awesome description!"
}
DELETE /api/project/{project-id}
Deletes the project.
POST /api/project
Adds a project for specific user.
An example of a required request body:
{
"ownerId": "ca7aa0fb-442a-4d4e-aa36-a49abddae837",
"projectName": "My Second Project"
}
A successful response body:
{
"projectId": "ca7aa0fb-442a-4d4e-aa36-a49abddae837"
}