(docs) /user/new

This commit is contained in:
ishaan-jaff 2024-02-03 10:59:06 -08:00
parent c9958eb329
commit 3f2f864cc8
2 changed files with 77 additions and 3 deletions

View file

@ -1,4 +1,4 @@
# Virtual Keys # Virtual Keys, Users
Track Spend, Set budgets and create virtual keys for the proxy Track Spend, Set budgets and create virtual keys for the proxy
Grant other's temporary access to your proxy, with keys that expire after a set duration. Grant other's temporary access to your proxy, with keys that expire after a set duration.
@ -278,6 +278,80 @@ Request Params:
} }
``` ```
## /user/new
### Request
All [key/generate params supported](#keygenerate) for creating a user
```shell
curl 'http://0.0.0.0:4000/user/new' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data-raw '{
"user_id": "ishaan1",
"user_email": "ishaan@litellm.ai",
"user_role": "admin",
"team_id": "cto-team",
"max_budget": 20,
"budget_duration": "1h"
}'
```
Request Params:
- user_id: str (optional - defaults to uuid) - The unique identifier for the user.
- user_email: str (optional - defaults to "") - The email address associated with the user.
- user_role: str (optional - defaults to "app_user") - The role assigned to the user. Can be "admin", "app_owner", "app_user"
**Possible `user_role` values**
```
"admin" - Maintaining the proxy and owning the overall budget
"app_owner" - employees maintaining the apps, each owner may own more than one app
"app_user" - users who know nothing about the proxy. These users get created when you pass `user` to /chat/completions
```
- team_id: str (optional - defaults to "") - The identifier for the team to which the user belongs.
- max_budget: float (optional - defaults to `null`) - The maximum budget allocated for the user. No budget checks done if `max_budget==null`
- budget_duration: str (optional - defaults to `null`) - The duration for which the budget is valid, e.g., "1h", "1d"
### Response
A key will be generated for the new user created
```shell
{
"models": [],
"spend": 0.0,
"max_budget": null,
"user_id": "ishaan1",
"team_id": null,
"max_parallel_requests": null,
"metadata": {},
"tpm_limit": null,
"rpm_limit": null,
"budget_duration": null,
"allowed_cache_controls": [],
"key_alias": null,
"duration": null,
"aliases": {},
"config": {},
"key": "sk-JflB33ucTqc2NYvNAgiBCA",
"key_name": null,
"expires": null
}
```
Request Params:
- keys: List[str] - List of keys to delete
### Response
```json
{
"deleted_keys": ["sk-kdEXbIqZRwEeEiHwdg7sFA"]
}
```
## Default /key/generate params ## Default /key/generate params
Use this, if you need to control the default `max_budget` or any `key/generate` param per key. Use this, if you need to control the default `max_budget` or any `key/generate` param per key.

View file

@ -3008,9 +3008,9 @@ async def new_user(data: NewUserRequest):
if "user_role" in data_json: if "user_role" in data_json:
user_role = data_json["user_role"] user_role = data_json["user_role"]
if user_role is not None: if user_role is not None:
if user_role not in ["proxy_admin", "app_owner", "app_user"]: if user_role not in ["admin", "app_owner", "app_user"]:
raise ProxyException( raise ProxyException(
message=f"Invalid user role, passed in {user_role}. Must be one of 'proxy_admin', 'app_owner', 'app_user'", message=f"Invalid user role, passed in {user_role}. Must be one of 'admin', 'app_owner', 'app_user'",
type="invalid_user_role", type="invalid_user_role",
param="user_role", param="user_role",
code=status.HTTP_400_BAD_REQUEST, code=status.HTTP_400_BAD_REQUEST,