API 명세서

GST 특허 관리 시스템의 REST API, LLM API 연동 및 벡터 데이터베이스 인터페이스에 대한 상세한 API 문서입니다.

목차

1. API 개요

기본 정보

Base URL: https://api.gst-patents.com

API Version: v1

Protocol: HTTPS

Content Type: application/json

Charset: UTF-8

Rate Limit: 1000 requests/hour

HTTP 상태 코드

코드 의미 설명
200 OK 요청 성공
201 Created 리소스 생성 성공
400 Bad Request 잘못된 요청
401 Unauthorized 인증 필요
404 Not Found 리소스 없음
500 Internal Server Error 서버 오류

2. 인증 및 보안

API 키 인증

현재 정적 웹사이트 환경에서는 API 키 인증이 제한적입니다. 실제 구현 시 JWT 토큰 기반 인증을 권장합니다.

헤더 설정

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
X-API-Version: v1

Rate Limiting

기본 사용자

100

요청/시간

등록 사용자

1,000

요청/시간

프리미엄

10,000

요청/시간

3. 특허 API

특허 목록 조회

GET

등록된 모든 특허의 목록을 페이지네이션과 함께 반환합니다.

Endpoint

GET /api/v1/patents

Query Parameters

매개변수 타입 필수 설명
page integer 페이지 번호 (기본값: 1)
limit integer 페이지당 항목 수 (기본값: 10, 최대: 100)
category string 기술 분야 필터
status string 특허 상태 필터
search string 검색 키워드

응답 예시

{
  "data": [
    {
      "id": "1",
      "patent_number": "10-0719225",
      "title": "반도체 제조 공정용 온도조절 시스템",
      "abstract": "반도체 제조 공정에서 정밀한 온도 제어를...",
      "category": "temperature",
      "technology_field": "온도제어",
      "registration_date": "2007-05-18",
      "status": "active",
      "priority_score": 9,
      "inventors": ["김철수", "이영희"],
      "assignee": "글로벌 스탠다드 테크놀로지 주식회사"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 78,
    "pages": 8
  },
  "meta": {
    "total_active": 65,
    "total_expired": 10,
    "total_pending": 3
  }
}

특허 상세 조회

GET

Endpoint

GET /api/v1/patents/{patent_id}

Path Parameters

매개변수 타입 필수 설명
patent_id string 특허 고유 ID

특허 등록

POST

주의: 특허 등록은 관리자 권한이 필요합니다.

Endpoint

POST /api/v1/patents

Request Body

{
  "patent_number": "10-1234567",
  "title": "새로운 특허 제목",
  "abstract": "특허 요약 내용...",
  "category": "temperature",
  "technology_field": "온도제어",
  "application_date": "2023-01-15",
  "registration_date": "2024-01-15",
  "inventors": ["발명자1", "발명자2"],
  "assignee": "글로벌 스탠다드 테크놀로지",
  "main_claims": "주요 청구항 내용...",
  "technical_keywords": ["키워드1", "키워드2"],
  "priority_score": 8,
  "file_path": "/patents/10-1234567.pdf"
}

4. 검색 API

일반 검색

GET

Endpoint

GET /api/v1/search

Query Parameters

매개변수 타입 필수 설명
q string 검색 쿼리
type string 검색 타입 (title, abstract, full)
limit integer 결과 수 제한 (기본값: 10)

예시 요청

GET /api/v1/search?q=플라즈마 토치&type=title&limit=5

벡터 유사도 검색

POST

Endpoint

POST /api/v1/search/vector

Request Body

{
  "query": "반도체 공정에서 온도 제어하는 방법",
  "similarity_threshold": 0.7,
  "max_results": 10,
  "include_metadata": true,
  "filters": {
    "category": "temperature",
    "status": "active"
  }
}

응답 예시

{
  "results": [
    {
      "id": "1",
      "patent_number": "10-0719225",
      "title": "반도체 제조 공정용 온도조절 시스템",
      "similarity_score": 0.89,
      "matched_chunks": [
        {
          "content": "반도체 제조 장비의 온도를 실시간으로...",
          "score": 0.92,
          "chunk_id": "chunk_1_0"
        }
      ],
      "metadata": {
        "category": "temperature",
        "registration_date": "2007-05-18",
        "priority_score": 9
      }
    }
  ],
  "query_time": 0.045,
  "total_results": 5
}

5. LLM API

참고: 현재 정적 웹사이트 환경에서는 LLM API 직접 연동이 제한됩니다. 실제 구현 시 서버사이드 프록시를 통해 LLM API를 호출해야 합니다.

RAG 질의응답

POST

Endpoint

POST /api/v1/llm/chat

Request Body

{
  "message": "플라즈마를 이용한 가스 처리 방법에 대해 알려주세요",
  "conversation_id": "conv_123456",
  "model": "gpt-4",
  "max_tokens": 1000,
  "temperature": 0.7,
  "include_sources": true,
  "search_filters": {
    "category": "plasma"
  }
}

응답 예시

{
  "response": {
    "message": "플라즈마를 이용한 가스 처리는...",
    "conversation_id": "conv_123456",
    "message_id": "msg_789012"
  },
  "sources": [
    {
      "patent_number": "10-0822048",
      "title": "플라즈마 토치를 이용한 폐가스 처리장치",
      "relevance_score": 0.95,
      "chunk": "고온 플라즈마를 이용하여..."
    }
  ],
  "metadata": {
    "model_used": "gpt-4",
    "tokens_used": 234,
    "processing_time": 1.23,
    "confidence": 0.87
  }
}

스트리밍 채팅

SSE

Endpoint

GET /api/v1/llm/stream

JavaScript 예제

const eventSource = new EventSource('/api/v1/llm/stream?message=' + encodeURIComponent(question));

eventSource.onmessage = function(event) {
  const data = JSON.parse(event.data);
  
  if (data.type === 'chunk') {
    // 부분 응답 처리
    appendToAnswer(data.content);
  } else if (data.type === 'done') {
    // 완료 처리
    eventSource.close();
    displaySources(data.sources);
  }
};

eventSource.onerror = function(event) {
  console.error('스트리밍 오류:', event);
  eventSource.close();
};

추가 API 섹션 개발 중

벡터 DB API, 분석 API, 예제 코드 섹션은 현재 개발 중입니다. 완성되는 대로 업데이트될 예정입니다.

  • 벡터 데이터베이스 CRUD API
  • 특허 분석 및 통계 API
  • Python, JavaScript, cURL 예제 코드
  • WebSocket 실시간 통신 API