Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add API contract for PATCH /requests/:id endpoint for onboarding extension request #221

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 80 additions & 1 deletion requests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ The Requests API provides endpoints for creating, fetching, and updating request
| [GET /requests](#get-requests) | Returns a list of requests with pagination and filtering options. |
| [POST /requests](#post-requests) | Creates a new request. |
| [PUT /requests/:id](#put-requestsid) | Updates an existing request. |
| [PATCH /requests/:id](#patch-requestsid) | Updates an existing request before approval or rejection. |

### **GET /requests**

Expand Down Expand Up @@ -344,7 +345,7 @@ Updates an existing request with the provided details.
- **Code:** 404
- **Content:** `{ "statusCode": 404, "error": "Not Found", "message": "Request does not exist" }`
- **Code:** 500
- **Content:** `{ "statusCode": 500, "error": "Internal Server Error", "message": ""An internal server error occurred" }`
- **Content:** `{ "statusCode": 500, "error": "Internal Server Error", "message": "An internal server error occurred" }`
- **Code:** 401
- **Content:** `{ "statusCode": 401, "error": "Unauthorized", "message": "Unauthenticated User" }`
- **Code:** 401
Expand All @@ -359,6 +360,84 @@ Updates an existing request with the provided details.
- The request body should contain the necessary details for updating an existing request, including type, reason, and state.
- Error handling is provided for cases where the request is already approved and for internal server errors.

### **PATCH /requests/:id**

Updates an existing request before approval or rejection with the provided details.

- **Description:** Updates an existing request before approval or rejection with the provided details..

- **URL:** `https://api.realdevsquad.com/requests/:id`

- **Method:** PATCH

- **Path Parameters:**

- `id`: The unique identifier of the request to be updated.

- **Query Parameters:**

- `dev`: Required boolean to update requests in developer mode.

- **Headers:**
- Content-Type: application/json
- **Cookie:**

- rds-session: `<JWT>`

- **Request Body:**

- Body Parameters:

- **Example of Onboarding Extension Request:**
```json
{
"type": "ONBOARDING",
"reason": "string", // optional
"newEndsOn": "number"
}
```
- **Success Response of Onboarding Extension Request:**

- **Code:** 200
- **Content:**
```json
{
"message": "Request updated successfully",
"data": {
"id": "string",
"newEndsOn": "number"
"updatedAt": "number",
"type": "ONBOARDING",
"lastModifiedBy": "string",
"reason": "string"
}
}
```

- **Error Responses of Onboarding Extension Request:**
- **Code:** 400
- **Content:** `{ "statusCode": 400, "error": "Bad Request", "message": "Invalid type" }`
- **Code:** 400
- **Content:** `{ "statusCode": 400, "error": "Bad Request", "message": "Invalid request" }`
- **Code:** 400
- **Content:** `{ "statusCode": 400, "error": "Bad Request", "message": "Invalid request type" }`
- **Code:** 400
- **Content:** `{ "statusCode": 400, "error": "Bad Request", "message": "Only pending extension request can be updated" }`
- **Code:** 400
- **Content:** `{ "statusCode": 400, "error": "Bad Request", "message": "New deadline of the request must be greater than old deadline" }`
- **Code:** 403
- **Content:** `{ "statusCode": 403, "error": "Forbidden", "message": "Unauthorized to update request" }`
- **Code:** 404
- **Content:** `{ "statusCode": 404, "error": "Not Found", "message": "Request does not exist" }`
- **Code:** 500
- **Content:** `{ "statusCode": 500, "error": "Internal Server Error", "message": "An internal server error occurred" }`
- **Code:** 401
- **Content:** `{ "statusCode": 401, "error": "Unauthorized", "message": "Unauthenticated User" }`

#### Authentication and Authorization:

- Authentication is required for accessing this endpoint.

## Conclusion

The Requests API contract provides detailed information about the available routes, request and response structures, query parameters, headers, cookies, error handling, and authentication and authorization requirements. It also includes additional notes for each endpoint to provide further context and guidance. This contract serves as a comprehensive reference for developers who need to interact with the Requests API.