{
    "openapi": "3.0.0",
    "info": {
        "title": "SAM API Documentation",
        "description": "===============================<br><strong>[공통 에러 응답 포맷]</strong><br>400: 필수 파라미터 누락<br>401: 인증 실패<br>403: 권한 없음<br>404: 존재하지 않는 URI 또는 데이터<br>405: 허용되지 않는 메서드<br>500: 서버 에러<br><br><strong>모든 에러 응답 예시:</strong><br>{<br>&nbsp;&nbsp;&quot;success&quot;: false,<br>&nbsp;&nbsp;&quot;message&quot;: &quot;에러 메시지&quot;,<br>&nbsp;&nbsp;&quot;data&quot;: null<br>}<br>===============================",
        "contact": {
            "email": "shine1324@gmail.com"
        },
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "https://api.5130.co.kr",
            "description": "SAM관리시스템 API 서버"
        }
    ],
    "paths": {
        "/api/v1/debug-apikey": {
            "get": {
                "tags": [
                    "API Key 인증"
                ],
                "summary": "API Key 인증 확인",
                "operationId": "8d05f26a859e82207ba533ab88682ddf",
                "responses": {
                    "200": {
                        "description": "API Key 인증 성공"
                    },
                    "401": {
                        "description": "인증 실패"
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    },
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/login": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "회원 토큰 정보확인",
                "operationId": "3878a009ac5aef1ebe0e72b7716e24ac",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "user_id",
                                    "user_pwd"
                                ],
                                "properties": {
                                    "user_id": {
                                        "type": "string",
                                        "example": "test"
                                    },
                                    "user_pwd": {
                                        "type": "string",
                                        "example": "testpass"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "로그인 성공",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "user_token": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "로그인 실패"
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ]
            }
        },
        "/api/v1/logout": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "로그아웃 (Access 및 Token 무효화)",
                "operationId": "39200ed8c17c34aa7af9a24f064e13a4",
                "responses": {
                    "200": {
                        "description": "로그아웃 성공"
                    },
                    "401": {
                        "description": "인증 실패"
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    },
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/member/index": {
            "get": {
                "tags": [
                    "Member"
                ],
                "summary": "회원 목록 조회",
                "description": "회원 목록을 페이징 형태로 반환합니다.",
                "operationId": "9243d8df1b20c9552b21389ce84415ea",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "페이지 번호 (기본값: 1)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "description": "페이지당 항목 수 (기본값: 20)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 20
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "회원 목록 조회 성공",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "회원목록 조회 성공"
                                        },
                                        "data": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer",
                                                                "example": 1
                                                            },
                                                            "user_id": {
                                                                "type": "string",
                                                                "example": "hamss"
                                                            },
                                                            "phone": {
                                                                "type": "string",
                                                                "example": "010-4820-9104"
                                                            },
                                                            "options": {
                                                                "type": "string",
                                                                "example": null,
                                                                "nullable": true
                                                            },
                                                            "name": {
                                                                "type": "string",
                                                                "example": "권혁성"
                                                            },
                                                            "email": {
                                                                "type": "string",
                                                                "example": "shine1324@gmail.com"
                                                            },
                                                            "email_verified_at": {
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": null,
                                                                "nullable": true
                                                            },
                                                            "last_login_at": {
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": null,
                                                                "nullable": true
                                                            },
                                                            "current_team_id": {
                                                                "type": "integer",
                                                                "example": null,
                                                                "nullable": true
                                                            },
                                                            "profile_photo_path": {
                                                                "type": "string",
                                                                "example": null,
                                                                "nullable": true
                                                            },
                                                            "created_at": {
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": "2025-07-16 18:28:41"
                                                            },
                                                            "updated_at": {
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": "2025-07-25 23:13:06"
                                                            },
                                                            "deleted_at": {
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "example": null,
                                                                "nullable": true
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "first_page_url": {
                                                    "type": "string",
                                                    "example": "http://api.sam.kr/api/v1/member/index?page=1"
                                                },
                                                "from": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "last_page_url": {
                                                    "type": "string",
                                                    "example": "http://api.sam.kr/api/v1/member/index?page=1"
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "url": {
                                                                "type": "string",
                                                                "example": null,
                                                                "nullable": true
                                                            },
                                                            "label": {
                                                                "type": "string",
                                                                "example": "&laquo; Previous"
                                                            },
                                                            "active": {
                                                                "type": "boolean",
                                                                "example": false
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "next_page_url": {
                                                    "type": "string",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "path": {
                                                    "type": "string",
                                                    "example": "http://api.sam.kr/api/v1/member/index"
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "example": 20
                                                },
                                                "prev_page_url": {
                                                    "type": "string",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "to": {
                                                    "type": "integer",
                                                    "example": 3
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "example": 3
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    },
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/member/show/{user_no}": {
            "get": {
                "tags": [
                    "Member"
                ],
                "summary": "회원 상세조회",
                "description": "user_no 기준으로 회원 상세 정보를 조회합니다.",
                "operationId": "b4c822915531828ea5f3a50d5112ef26",
                "parameters": [
                    {
                        "name": "user_no",
                        "in": "path",
                        "description": "회원 번호 (USER_NO)",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "회원 상세조회 성공",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "회원 상세조회 성공"
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "user_id": {
                                                    "type": "string",
                                                    "example": "hamss"
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "example": "010-4820-9104"
                                                },
                                                "options": {
                                                    "type": "string",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "example": "권혁성"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "example": "shine1324@gmail.com"
                                                },
                                                "email_verified_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "last_login_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "current_team_id": {
                                                    "type": "integer",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "profile_photo_path": {
                                                    "type": "string",
                                                    "example": null,
                                                    "nullable": true
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2025-07-16 18:28:41"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2025-07-25 23:13:06"
                                                },
                                                "deleted_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": null,
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "인증 실패"
                    },
                    "404": {
                        "description": "회원 정보 없음"
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    },
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/member/me": {
            "get": {
                "tags": [
                    "Member"
                ],
                "summary": "내 정보 조회",
                "description": "내정보와 테넌트 정보를 전달 합니다.",
                "operationId": "0c641be8a4e4ab5e1c2db29989b219ce",
                "responses": {
                    "200": {
                        "description": "나의 정보 조회 성공",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "나의 정보 조회 성공"
                                        },
                                        "data": {
                                            "properties": {
                                                "user": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "integer",
                                                            "example": 3
                                                        },
                                                        "user_id": {
                                                            "type": "string",
                                                            "example": "test"
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "example": "010-1234-5678"
                                                        },
                                                        "options": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "name": {
                                                            "type": "string",
                                                            "example": "테스트"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "example": "test@5130.co.kr"
                                                        },
                                                        "email_verified_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "last_login_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "current_team_id": {
                                                            "type": "integer",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "profile_photo_path": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "created_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "example": "2025-07-17 13:19:37"
                                                        },
                                                        "updated_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "example": "2025-07-26 15:51:14"
                                                        },
                                                        "deleted_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "example": null,
                                                            "nullable": true
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "tenant": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "integer",
                                                            "example": 1
                                                        },
                                                        "company_name": {
                                                            "type": "string",
                                                            "example": "(주)경동기업"
                                                        },
                                                        "code": {
                                                            "type": "string",
                                                            "example": "KDCOM"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "example": "kd5130@naver.com"
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "example": "01083935130"
                                                        },
                                                        "address": {
                                                            "type": "string",
                                                            "example": "경기도 김포시 통진읍 옹정로 45-22"
                                                        },
                                                        "business_num": {
                                                            "type": "string",
                                                            "example": "1398700333"
                                                        },
                                                        "corp_reg_no": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "ceo_name": {
                                                            "type": "string",
                                                            "example": "이경호"
                                                        },
                                                        "homepage": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "fax": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "logo": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "admin_memo": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        },
                                                        "options": {
                                                            "type": "string",
                                                            "example": null,
                                                            "nullable": true
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "인증 실패 (헤더 누락, 유효하지 않은 토큰/키 등)"
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    },
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/product/category": {
            "get": {
                "tags": [
                    "Product"
                ],
                "summary": "제품 카테고리 목록 조회",
                "description": "제품 카테고리(최상위, parent_id=null) 리스트를 반환합니다.",
                "operationId": "ae018aa8eec41762f28513ae1aecebfc",
                "responses": {
                    "200": {
                        "description": "카테고리 목록 조회 성공",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "get 성공"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 4
                                                    },
                                                    "code_group": {
                                                        "type": "string",
                                                        "example": "category"
                                                    },
                                                    "code": {
                                                        "type": "string",
                                                        "example": "BP"
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "절곡판"
                                                    },
                                                    "parent_id": {
                                                        "type": "integer",
                                                        "example": null
                                                    },
                                                    "attributes": {
                                                        "type": "string",
                                                        "example": "[{...}]"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "절곡판"
                                                    },
                                                    "is_active": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "sort_order": {
                                                        "type": "integer",
                                                        "example": 10
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2025-07-23T09:00:00Z"
                                                    },
                                                    "updated_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2025-07-23T09:00:00Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "인증 실패"
                    },
                    "500": {
                        "description": "서버 에러"
                    }
                },
                "security": [
                    {
                        "ApiKeyAuth": []
                    },
                    {
                        "BearerAuth": []
                    }
                ]
            }
        }
    },
    "components": {
        "securitySchemes": {
            "ApiKeyAuth": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-KEY",
                "description": "API Key 인증: X-API-KEY: {API_KEY}"
            },
            "BearerAuth": {
                "type": "http",
                "bearerFormat": "JWT",
                "scheme": "bearer"
            }
        }
    },
    "tags": [
        {
            "name": "API Key 인증",
            "description": "API Key 인증"
        },
        {
            "name": "Auth",
            "description": "Auth"
        },
        {
            "name": "Member",
            "description": "Member"
        },
        {
            "name": "Product",
            "description": "Product"
        }
    ]
}