For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
기본 탐색 메뉴
Theme
개요 ChatGPT 및 Codex 사용자 문서 활용 사례

레스토랑 예약 전환 연동 사양

레스토랑 예약 플러그인을 ChatGPT의 예약 플로우에 연동하기 위한 규약입니다.

ChatGPT의 레스토랑 예약 전환 플러그인은 현재 베타 단계이며, 승인된 파트너와 함께 테스트하고 있습니다. 이용을 신청하려면 다음 양식을 작성하세요.

이용 신청 양식

목적

사용자가 레스토랑을 예약하려는 경우처럼 이용 의사가 뚜렷한 상황에서 ChatGPT가 파트너 플러그인을 직접 호출할 수 있도록 하는 것이 목표입니다.

파트너가 검색용 피드를 제공하면 파트너의 MCP 서버를 연결해 검색 이후 예약으로 이어지는 작업을 수행할 수 있습니다. 이를 위해 파트너 플러그인은 위젯 이름, 도구 이름, 도구 입력에 관한 공통 규약을 따라야 합니다.

이 사양에 맞는 플러그인을 개발하려면 ChatGPT 판매자 신청 양식을 작성해 이용을 신청하세요.

사용자 경험

사용자가 주변 레스토랑을 검색하면 레스토랑 정보 카드와 사이드바에 예약 버튼이 표시됩니다. 이 버튼을 누르면 해당 레스토랑의 예약 서비스 UI를 열 수 있습니다.

레스토랑 UI에 표시된 예약 버튼

레스토랑 UI에 표시된 예약 버튼

예약 버튼을 눌러 연 모달

예약 버튼을 눌러 연 예약 모달

현재 필수 연동 규약

현재 예약 연동에는 다음 항목만 필요합니다.

  • 위젯 이름: ui://widget/restaurant-reservation.html
  • 도구 이름: restaurant_reservation

restaurant_reservation에는 다음 값을 설정해야 합니다.

_meta.ui.resourceUri = "ui://widget/restaurant-reservation.html";

위젯에서 직접 호출하는 모든 도구에는 다음 값을 설정해야 합니다.

_meta["openai/widgetAccessible"] = true;

restaurant_reservation 입력

항상 전송되는 최소 페이로드는 다음과 같습니다.

{
  "restaurant_id": "string"
}

다음 페이로드도 함께 전송될 수 있습니다. 이 데이터를 사용하면 모달에서 낙관적 렌더링을 구현할 수 있습니다. 예를 들어 전체 데이터를 불러오는 동안 스켈레톤 UI나 로딩 표시 대신 레스토랑 정보를 먼저 보여 줄 수 있습니다.

{
  "restaurant_name": "string",
  "restaurant_image": "string",
  "restaurant_address": {
    "address": "string",
    "city": "string",
    "state": "string",
    "zipcode": "string",
    "country": "string"
  }
}

피드 요구 사항(검색 연동)

예약 버튼을 해당 업체의 예약 서비스에 연결하기 위해 파트너가 제공하는 업체 정보 피드를 수집합니다.

목적과 범위

피드 규약은 다음 사항을 정의합니다.

  • 업체 매칭과 검색 순위 산정에 필요한 최소 데이터
  • 업체 목록을 페이지 단위로 조회하는 API
  • 불필요하게 전체 데이터를 다시 가져오지 않도록 변경 여부를 감지하는 방식

업체 레코드의 최소 필수 필드

Business 객체에는 다음 필드가 있어야 합니다.

  • id (string): 값이 변하지 않아야 하며, 같은 제공업체 내에서 고유해야 합니다.
  • name (string)
  • address (object 또는 형식을 갖춘 string)
  • location (위도와 경도를 포함하는 object)
  • phone_number (string, E.164 형식 권장)
  • website_url (string, URL)
  • platform_url (string, 파트너 플랫폼에 등록된 해당 업체의 대표 페이지 URL)

권장하는 최소 데이터 구조는 다음과 같습니다.

{
  "id": "biz_123",
  "name": "Acme Coffee",
  "address": {
    "line1": "123 Market St",
    "line2": "Suite 5",
    "locality": "San Francisco",
    "region": "CA",
    "postal_code": "94105",
    "country": "US",
    "formatted": "123 Market St, Suite 5, San Francisco, CA 94105, US"
  },
  "location": {
    "latitude": 37.793,
    "longitude": -122.396
  },
  "phone_number": "+14155551234",
  "website_url": "https://acmecoffee.example",
  "platform_url": "https://provider.example/biz/biz_123"
}

주소를 구성 요소별로 제공할 수 없다면 address에 전체 주소를 문자열 하나로 넣어도 됩니다. 이 경우 사람이 읽기 쉬운 형식을 일관되게 사용해야 합니다.

페이지 단위 목록 조회 엔드포인트

엔드포인트 예시

  • GET /v1/businesses

쿼리 매개변수

  • 페이지네이션에는 다음 방식 중 하나를 사용하세요.
  • page + page_size
  • offset + limit
  • 또는 next_page_token (내부 값을 해석할 필요가 없는 토큰으로, 지원되는 경우 권장)
  • changes_token (string, 선택 사항): 마지막 동기화 체크포인트 이후 데이터가 변경되었는지 확인하는 데 사용합니다.

응답에는 다음 항목이 있어야 합니다.

  • checksum (boolean): 요청에 포함된 changes_token이 가리키는 시점 이후 변경 사항이 있는지 나타냅니다. 요청에 토큰이 없으면 true입니다.
  • businesses (Business[]): 현재 페이지의 업체 데이터입니다.
  • 선택한 페이지네이션 방식에 맞는 메타데이터를 포함하세요.
  • page, page_size, total_pages(선택 사항) 또는
  • offset, limit, total(선택 사항) 또는
  • next_page_token (string | null)

요청 및 응답 예시

요청

GET /v1/businesses?page=1&page_size=2&changes_token=sync_2026_03_10

응답

{
  "checksum": true,
  "page": 1,
  "page_size": 2,
  "total_pages": 120,
  "businesses": [
    {
      "id": "biz_123",
      "name": "Acme Coffee",
      "address": {
        "line1": "123 Market St",
        "locality": "San Francisco",
        "region": "CA",
        "postal_code": "94105",
        "country": "US",
        "formatted": "123 Market St, San Francisco, CA 94105, US"
      },
      "location": {
        "latitude": 37.793,
        "longitude": -122.396
      },
      "phone_number": "+14155551234",
      "website_url": "https://acmecoffee.example",
      "platform_url": "https://provider.example/biz/biz_123"
    },
    {
      "id": "biz_124",
      "name": "Golden Diner",
      "address": "200 Howard St, San Francisco, CA 94105, US",
      "location": {
        "latitude": 37.789,
        "longitude": -122.391
      },
      "phone_number": "+14155559876",
      "website_url": "https://goldendiner.example",
      "platform_url": "https://provider.example/biz/biz_124"
    }
  ]
}

검색에 피드를 사용하는 방식

업체 정보 피드를 검색 인덱스로 사용합니다. 검색 요청이 들어오면 업체 이름과 위치 또는 주소를 기준으로 유사 일치 검색을 수행해 후보를 찾습니다. 그런 다음 이름과 주소의 유사도를 기준으로 순위를 정하고 중복 항목을 제거합니다. 이때 위치, 전화번호, URL도 함께 고려합니다.

권장 확장 기능(현재 선택 사항)

채팅 안에서 예약 절차를 처음부터 끝까지 완료할 수 있도록 다음 항목을 추가하는 것이 좋습니다.

  • refresh_availability
  • make_reservation
  • reservation_confirmation