Skip to content

JAMoreno-Larios/spring-rest-api-custom-dates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REST API - User Management for Chakray

A Spring Boot REST API that implements CRUD operations for user management.

By José Agustín Moreno Larios

Prerequisites

  • Java 21
  • Maven 3.x

Running the Application

mvn spring-boot:run

The application will start on http://localhost:8080.

API Documentation

Database

Endpoints

Method Endpoint Description
GET /users?sortedBy={column} Get users sorted by a specific column
GET /users?filter={params} Filter users by parameters
POST /users Create a new user
PATCH /users/{id} Update an existing user
DELETE /users/{id} Delete a user by ID
POST /login Authenticate a user

sortBy Parameters

sortBy endpoint format: GET /users?sortBy{column}

Valid Columns:

Column Description
email Filter by email address
id Filter by user UUID
name Filter by user name
phone Filter by phone number
tax_id Filter by tax ID
created_at Filter by creation timestamp

Filter Parameters

Filter endpoint format: GET /users?filter={column}+{operation}+{query}

Valid Columns: Same as above.

Valid Operations:

Operation Code Description
Contains co Matches values containing the query
Equals eq Matches exact values
Starts With sw Matches values starting with query
Ends With ew Matches values ending with query

Filter Examples:

Request Description
GET /users?filter=name+co+User Find users with "User" in their name
GET /users?filter=email+eq+test@someplace.com Find user with exact email
GET /users?filter=tax_id+sw+AAR Find users with tax_id starting with "AAR"
GET /users?filter=phone+ew+555 Find users with phone ending in "555"

User Model

Field Type Description
id UUID Unique identifier
email String User email (required, valid format)
name String User name (required)
phone String Phone number (required, min 10 digits)
password String User password (required)
tax_id String Tax ID (required, RFC format: 12 chars for companies, 13 chars for individuals)
created_at DateTime Creation timestamp (Madagascar timezone: Africa/Nairobi)
addresses List List of user addresses

Validation Rules

  • Email: Must be a valid email format
  • Phone: Must contain at least 10 digits (country code optional)
  • Tax ID: RFC format
    • 12 characters for companies: AAAmmddyyXXN
    • 13 characters for physical persons: AAAmmddyyXXN

Sample Users

The following users are preloaded in the database:

Tax ID Password Email Name
AARR990101XXX password test@someplace.com Someone not important
USSE770715XXX password2 user2@mail.com User Secundus
ABCD990501XXX 5uP3r_57r0N9_P455 user3@mail.net Tercer Usuario

Request Examples

Create User (POST /users)

{
  "email": "newuser@example.com",
  "name": "New User",
  "phone": "+1 555 123 4567",
  "password": "securePassword123",
  "tax_id": "AABB990101XXX",
  "addresses": [
    {
      "name": "home",
      "street": "123 Main St",
      "country_code": "US"
    }
  ]
}

Login (POST /login)

{
  "tax_id": "AARR990101XXX",
  "password": "password"
}

Update User (PATCH /users/{id})

{
  "email": "updated@example.com",
  "name": "Updated Name",
  "phone": "+1 555 987 6543",
  "password": "newPassword456",
  "tax_id": "AARR990101XXX"
}

About

A REST API made with Spring that implements customized date and timezone requirements.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors