first commit
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
# Person Service API Documentation
|
||||
|
||||
## Overview
|
||||
This document provides comprehensive documentation for the Person Service API, including REST and gRPC endpoints.
|
||||
|
||||
## Table of Contents
|
||||
1. [REST API Endpoints](#rest-api-endpoints)
|
||||
2. [gRPC API Endpoints](#grpc-api-endpoints)
|
||||
3. [Request/Response Examples](#requestresponse-examples)
|
||||
4. [Error Handling](#error-handling)
|
||||
5. [Authentication](#authentication)
|
||||
6. [Rate Limiting](#rate-limiting)
|
||||
|
||||
## REST API Endpoints
|
||||
|
||||
### Base URL
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# gRPC Documentation
|
||||
|
||||
TODO: Add documentation for gRPC services.
|
||||
@@ -0,0 +1,36 @@
|
||||
# gRPC API Endpoints - Person Service
|
||||
# Generated on: $(date)
|
||||
# Handler: internal/infrastructure/transport/grpc/handlers/person_handler.go
|
||||
|
||||
## Service: PersonService
|
||||
|
||||
### 1. GetPerson
|
||||
- **Method**: GetPerson
|
||||
- **Request**: GetPersonRequest { id: int64 }
|
||||
- **Response**: GetPersonResponse { person: Person }
|
||||
- **Handler**: PersonHandler.GetPerson()
|
||||
|
||||
### 2. ListPersons
|
||||
- **Method**: ListPersons
|
||||
- **Request**: ListPersonsRequest { page: int32, page_size: int32 }
|
||||
- **Response**: ListPersonsResponse { persons: []Person, total: int64 }
|
||||
- **Handler**: PersonHandler.ListPersons()
|
||||
|
||||
### 3. CreatePerson
|
||||
- **Method**: CreatePerson
|
||||
- **Request**: CreatePersonRequest { data: CreatePersonRequest }
|
||||
- **Response**: GetPersonResponse { person: Person }
|
||||
- **Handler**: PersonHandler.CreatePerson()
|
||||
|
||||
### 4. UpdatePerson
|
||||
- **Method**: UpdatePerson
|
||||
- **Request**: UpdatePersonRequest { id: int64, data: CreatePersonRequest }
|
||||
- **Response**: GetPersonResponse { person: Person }
|
||||
- **Handler**: PersonHandler.UpdatePerson()
|
||||
|
||||
### 5. DeletePerson
|
||||
- **Method**: DeletePerson
|
||||
- **Request**: DeletePersonRequest { id: int64 }
|
||||
- **Response**: Empty {}
|
||||
- **Handler**: PersonHandler.DeletePerson()
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
openapi: 3.0.0
|
||||
info:
|
||||
title: Person Service API
|
||||
description: REST API for Person Management Service
|
||||
version: 1.0.0
|
||||
contact:
|
||||
name: API Support
|
||||
email: [email protected]
|
||||
servers:
|
||||
- url: http://localhost:8080/api/v1
|
||||
description: Development server
|
||||
paths:
|
||||
/persons:
|
||||
get:
|
||||
summary: Get list of persons
|
||||
description: Retrieve paginated list of persons
|
||||
parameters:
|
||||
- name: page
|
||||
in: query
|
||||
description: Page number
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
default: 1
|
||||
- name: limit
|
||||
in: query
|
||||
description: Items per page
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
default: 10
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PaginatedPersonResponse'
|
||||
post:
|
||||
summary: Create new person
|
||||
description: Create a new person record
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CreatePersonRequest'
|
||||
responses:
|
||||
'201':
|
||||
description: Person created successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PersonResponse'
|
||||
/persons/{id}:
|
||||
get:
|
||||
summary: Get person detail
|
||||
description: Retrieve detailed information about a specific person
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
description: Person ID
|
||||
schema:
|
||||
type: integer
|
||||
format: int64
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PersonResponse'
|
||||
'404':
|
||||
description: Person not found
|
||||
put:
|
||||
summary: Update person
|
||||
description: Update an existing person record
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
description: Person ID
|
||||
schema:
|
||||
type: integer
|
||||
format: int64
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CreatePersonRequest'
|
||||
responses:
|
||||
'200':
|
||||
description: Person updated successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PersonResponse'
|
||||
'404':
|
||||
description: Person not found
|
||||
components:
|
||||
schemas:
|
||||
CreatePersonRequest:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
format: email
|
||||
phone:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
- email
|
||||
PersonResponse:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int64
|
||||
name:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
phone:
|
||||
type: string
|
||||
created_at:
|
||||
type: string
|
||||
format: date-time
|
||||
PaginatedPersonResponse:
|
||||
type: object
|
||||
properties:
|
||||
data:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/PersonResponse'
|
||||
meta:
|
||||
type: object
|
||||
properties:
|
||||
page:
|
||||
type: integer
|
||||
limit:
|
||||
type: integer
|
||||
total:
|
||||
type: integer
|
||||
total_pages:
|
||||
type: integer
|
||||
@@ -0,0 +1,39 @@
|
||||
# REST API Endpoints - Person Service
|
||||
# Generated on: $(date)
|
||||
# Handler: internal/infrastructure/transport/http/handlers/person_handler.go
|
||||
|
||||
## Base Path: /api/v1/persons
|
||||
|
||||
### 1. Get List of Persons (Pagination)
|
||||
- **Method**: GET
|
||||
- **Path**: /persons
|
||||
- **Query Parameters**:
|
||||
- page (int, optional): Page number (default: 1)
|
||||
- limit (int, optional): Items per page (default: 10)
|
||||
- **Response**: Paginated list of persons
|
||||
- **Handler**: PersonHandler.GetList()
|
||||
|
||||
### 2. Get Person Detail
|
||||
- **Method**: GET
|
||||
- **Path**: /persons/{id}
|
||||
- **Path Parameters**:
|
||||
- id (int64, required): Person ID
|
||||
- **Response**: Single person details
|
||||
- **Handler**: PersonHandler.GetDetail()
|
||||
|
||||
### 3. Create New Person
|
||||
- **Method**: POST
|
||||
- **Path**: /persons
|
||||
- **Request Body**: CreatePersonRequest JSON
|
||||
- **Response**: Created person details
|
||||
- **Handler**: PersonHandler.Create()
|
||||
|
||||
### 4. Update Person
|
||||
- **Method**: PUT
|
||||
- **Path**: /persons/{id}
|
||||
- **Path Parameters**:
|
||||
- id (int64, required): Person ID
|
||||
- **Request Body**: CreatePersonRequest JSON
|
||||
- **Response**: Updated person details
|
||||
- **Handler**: PersonHandler.Update()
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# Architecture
|
||||
|
||||
TODO: Describe the project architecture.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Deployment
|
||||
|
||||
TODO: Add deployment instructions.
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user