Skip to content

Commit ada2be4

Browse files
committed
#3 Specify 409 error responses
1 parent 51037fc commit ada2be4

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/api.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class RadAPIError(BaseModel):
2626
detail: str
2727

2828
e404_response = {404: {'model': RadAPIError, 'description': 'Item not found'}}
29+
e409_response = {409: {'model': RadAPIError, 'description': 'Item already exists'}}
2930

3031
# Our API router and routes
3132
router = APIRouter()
@@ -79,19 +80,19 @@ async def get_group(groupname: str):
7980
raise HTTPException(404, 'Given group does not exist')
8081
return group
8182

82-
@router.post('/nas', tags=['nas'], status_code=201, response_model=Nas)
83+
@router.post('/nas', tags=['nas'], status_code=201, response_model=Nas, responses={**e409_response})
8384
async def post_nas(nas: Nas, response: Response):
8485
if nas_repo.exists(nas.nasname):
85-
raise HTTPException(422, 'Given NAS already exists')
86+
raise HTTPException(409, 'Given NAS already exists')
8687

8788
nas_repo.add(nas)
8889
response.headers['Location'] = f'{API_URL}/nas/{nas.nasname}'
8990
return nas
9091

91-
@router.post('/users', tags=['users'], status_code=201, response_model=User)
92+
@router.post('/users', tags=['users'], status_code=201, response_model=User, responses={**e409_response})
9293
async def post_user(user: User, response: Response):
9394
if user_repo.exists(user.username):
94-
raise HTTPException(422, 'Given user already exists')
95+
raise HTTPException(409, 'Given user already exists')
9596

9697
for group in user.groups:
9798
if not group_repo.exists(group.groupname):
@@ -101,10 +102,10 @@ async def post_user(user: User, response: Response):
101102
response.headers['Location'] = f'{API_URL}/users/{user.username}'
102103
return user
103104

104-
@router.post('/groups', tags=['groups'], status_code=201, response_model=Group)
105+
@router.post('/groups', tags=['groups'], status_code=201, response_model=Group, responses={**e409_response})
105106
async def post_group(group: Group, response: Response):
106107
if group_repo.exists(group.groupname):
107-
raise HTTPException(422, 'Given group already exists')
108+
raise HTTPException(409, 'Given group already exists')
108109

109110
for user in group.users:
110111
if not user_repo.exists(user.username):

0 commit comments

Comments
 (0)