{"components":{"securitySchemes":{"bearerAuth":{"bearerFormat":"API Key","description":"ApiFuse API key (af_live_*). Injected automatically by the platform demo proxy for unauthenticated try-it-out flows.","scheme":"bearer","type":"http"},"providerLogin":{"description":"Provider login for ApiFuse Try it out. Leave this blank; when a protected operation runs, ApiFuse opens the provider login modal and injects the saved session automatically.","in":"header","name":"X-ApiFuse-Connection-Id","type":"apiKey"}}},"info":{"description":"Interactive reference for every provider operation in the ApiFuse registry.\n\n## Try it out from this page\n\nThe interactive request runner presents the same `/v1/{providerId}/{operationId}` path shape used by the public Gateway API, but sends browser requests through the Platform docs adapter at `/api/proxy/call/v1/...`. Signed-in users receive a short-lived Gateway delegation token; local/demo fallback keys are development-only.\n\n## Production usage\n\nFor production traffic, send requests directly to the gateway at `https://api.apifuse.com/v1/{providerId}/{operationId}` with your own bearer token. The auth contract is documented in the [Authentication guide](/docs/guide/auth-levels).\n\n## Generated artifact\n\nThis document is generated from the provider registry catalog projection. To update, edit the relevant `providers/<id>/index.ts` and run `bun run build:provider-registry`.","title":"ApiFuse Platform API Reference","version":"4"},"openapi":"3.1.0","paths":{"/v1/airkorea-realtime/realtime":{"post":{"description":"Retrieves real-time air quality measurements from an AirKorea monitoring station, including PM10, PM2.5, NO2, O3, SO2, CO, and the comprehensive KHAI index. Use when the user asks about current air quality, fine dust levels, or pollution at a specific Korean location. Do NOT use for weather forecasts — use kma:short-forecast instead. Returns pollutant values with grade levels (good/moderate/bad/very_bad).\n대기질 등급 코드와 문자열 수치를 정리해 측정소 단위의 일관된 대기질 객체를 제공합니다.\n\n# 에어코리아 실시간 대기오염\n\n대기질 등급 코드와 문자열 수치를 정리해 측정소 단위의 일관된 대기질 객체를 제공합니다.\n\n## Normalization notes\n\n- items 배열의 첫 측정값을 station/measuredAt 기준 단일 객체로 정규화합니다.\n- pm10/pm25/no2/o3/so2/co/khai 값을 { value, grade } 구조로 통일합니다.\n- '-'·빈 값은 null로 변환하고 등급 숫자는 good/moderate/bad/very_bad enum으로 매핑합니다.\n- dataTime 문자열을 ISO 8601 KST measuredAt 값으로 변환합니다.","operationId":"airkorea-realtime__realtime","requestBody":{"content":{"application/json":{"example":{"dataTerm":"DAILY","stationName":"동작구"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching real-time air quality data from AirKorea","properties":{"dataTerm":{"default":"DAILY","description":"Data period: DAILY, MONTH, or 3MONTH","type":"string"},"stationName":{"default":"동작구","description":"AirKorea monitoring station name such as a Seoul district name","type":"string"}},"required":["stationName","dataTerm"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"co":{"grade":"good","value":0.4},"khai":{"grade":"moderate","value":54},"measuredAt":"2025-03-22T14:00:00+09:00","no2":{"grade":"good","value":0.027},"o3":{"grade":"good","value":0.025},"pm10":{"grade":"moderate","value":45},"pm25":{"grade":"good","value":18},"so2":{"grade":"good","value":0.003},"station":"동작구"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"airkorea-realtime"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Real-time air quality data for all pollutants at a station","properties":{"co":{"additionalProperties":false,"description":"Carbon monoxide measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"khai":{"additionalProperties":false,"description":"Comprehensive Air Quality Index measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"measuredAt":{"description":"Measurement timestamp in ISO 8601 KST","type":"string"},"no2":{"additionalProperties":false,"description":"Nitrogen dioxide measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"o3":{"additionalProperties":false,"description":"Ozone measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"pm10":{"additionalProperties":false,"description":"PM10 fine dust measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"pm25":{"additionalProperties":false,"description":"PM2.5 ultra-fine dust measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"so2":{"additionalProperties":false,"description":"Sulfur dioxide measurement and grade","properties":{"grade":{"anyOf":[{"description":"Air quality grade level","enum":["good","moderate","bad","very_bad"],"type":"string"},{"type":"null"}],"description":"Air quality grade level or null if unavailable"},"value":{"anyOf":[{"description":"Measured pollutant concentration value","type":"number"},{"type":"null"}],"description":"Measured pollutant concentration value or null if unavailable"}},"required":["value","grade"],"type":"object"},"station":{"description":"Monitoring station name","type":"string"}},"required":["station","measuredAt","pm10","pm25","no2","o3","so2","co","khai"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR: Invalid or unregistered data.go.kr service key","x-apifuse-error-code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","x-apifuse-error-codes":[{"code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","description":"Invalid or unregistered data.go.kr service key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR: Daily API call quota exceeded (data.go.kr free tier: 1,000/day) Retryable.","x-apifuse-error-code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","x-apifuse-error-codes":[{"code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","description":"Daily API call quota exceeded (data.go.kr free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: AirKorea upstream returned a non-success result code Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"AirKorea upstream returned a non-success result code","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"에어코리아 실시간 대기오염","tags":["airkorea-realtime"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"에어코리아 실시간 대기오염","id":"airkorea-realtime"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","description":"Invalid or unregistered data.go.kr service key","retryable":false,"status":400},{"code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","description":"Daily API call quota exceeded (data.go.kr free tier: 1,000/day)","retryable":true,"status":429},{"code":"UPSTREAM_ERROR","description":"AirKorea upstream returned a non-success result code","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"realtime","x-apifuse-operation-key":"airkorea-realtime/realtime","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"airkorea-realtime","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"d7ab1ef4ab07c6f12d640db1603f5824f6956609f3eb2e4afcffe5a5df5b5d72","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"stationName":"종로구(종로구) 중구(중구) 용산구(용산구) 성동구(성동구) 광진구(광진구) 동대문구(동대문구) 중랑구(중랑구) 성북구(성북구) 강북구(강북구) 도봉구(도봉구) 노원구(노원구) 은평구(은평구) 서대문구(서대문구) 마포구(마포구) 양천구(양천구) 강서구(강서구) 구로구(구로구) 금천구(금천구) 영등포구(영등포구) 동작구(동작구) 관악구(관악구) 서초구(서초구) 강남구(강남구) 송파구(송파구) 강동구(강동구)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/catchtable/availability":{"post":{"description":"Checks available reservation dates or time slots for a restaurant on Catchtable. Use when the user wants to know when a restaurant has open reservations before booking. Do NOT use for making a reservation — use catchtable:reserve instead. Returns available date slots (if no date given) or time slots (if date specified) based on party size and table type.\n날짜 미지정 시 가능한 날짜 목록, 날짜 지정 시 가능한 시간 슬롯을 반환합니다.\n\n# CatchTable 예약 가능 슬롯\n\n날짜 미지정 시 가능한 날짜 목록, 날짜 지정 시 가능한 시간 슬롯을 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__availability","requestBody":{"content":{"application/json":{"example":{"person":2,"shop_ref":"shop-1","table_type":"_ALL_","visit_time":"19:00"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for checking reservation availability","properties":{"date":{"description":"Reservation date in YYYY-MM-DD format","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"person":{"default":2,"description":"Number of guests","maximum":20,"minimum":1,"type":"integer"},"shop_ref":{"description":"Catchtable shop reference ID","minLength":1,"type":"string"},"table_type":{"default":"_ALL_","description":"Table type filter","type":"string"},"visit_time":{"default":"19:00","description":"Preferred visit time in 24-hour HH:MM format, e.g. 19:00","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"}},"required":["shop_ref","person","table_type","visit_time"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"date_slots":["2026-03-25","2026-03-26"]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Available reservation date or time slots","properties":{"date_slots":{"description":"Available reservation dates","items":{"description":"Available date in YYYY-MM-DD format","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"type":"array"},"time_slots":{"description":"Available reservation times","items":{"description":"Available time in HH:MM format","type":"string"},"type":"array"}},"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"CatchTable 예약 가능 슬롯","tags":["catchtable"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"availability","x-apifuse-operation-key":"catchtable/availability","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"370374491bf9bce310be29176d936f5505e5954adc1d219f9d308ae25e695ebd","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/catchtable/cancel-reservation":{"post":{"description":"Cancels an existing restaurant reservation on Catchtable by reservation reference ID with an optional reason. Use when the user wants to cancel a previously made reservation. Do NOT use for cancelling waitings — use catchtable:cancel-waiting instead. Returns the cancelled reservation reference, updated status, and cancellation timestamp. Requires Catchtable authentication.\n예약 ref로 예약을 취소하고 취소 상태를 반환합니다.\n\n# CatchTable 예약 취소\n\n예약 ref로 예약을 취소하고 취소 상태를 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__cancel_reservation","requestBody":{"content":{"application/json":{"example":{"reason":"schedule_change","reservation_ref":"RES001"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for cancelling a reservation","properties":{"reason":{"description":"Cancellation reason text","type":"string"},"reason_code":{"description":"CatchTable cancellation reason code","type":"string"},"reason_text":{"description":"Explicit cancellation reason text","type":"string"},"reservation_ref":{"description":"Reservation reference ID to cancel","type":"string"}},"required":["reservation_ref"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"cancelled_at":"2026-03-25T10:00:00+09:00","reservation_ref":"RES001","status":"CANCELLED"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Reservation cancellation confirmation","properties":{"cancelled_at":{"description":"Cancellation timestamp in ISO 8601","type":"string"},"reservation_ref":{"description":"Cancelled reservation reference ID","type":"string"},"status":{"description":"Reservation status for a successful cancellation call","enum":["CANCELLED"],"type":"string"}},"required":["reservation_ref","status"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: CatchTable session cookie missing or expired","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable cancellation failed upstream Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable cancellation failed upstream","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"CatchTable 예약 취소","tags":["catchtable"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"CatchTable cancellation failed upstream","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"cancel-reservation","x-apifuse-operation-key":"catchtable/cancel-reservation","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"16e42cda80857424b52c6d4fe5aaf0e7ba2b990d2c5ff80b53ed47e0360e6218","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-requires-connection":true}},"/v1/catchtable/cancel-waiting":{"post":{"description":"Cancels an active waiting queue entry on Catchtable by waiting reference ID. Use when the user no longer wants to wait at a restaurant. Do NOT use for cancelling reservations — use catchtable:cancel-reservation instead. Returns the cancelled waiting reference and updated status. Requires Catchtable authentication.\n웨이팅 ref로 웨이팅을 취소합니다.\n\n# CatchTable 웨이팅 취소\n\n웨이팅 ref로 웨이팅을 취소합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__cancel_waiting","requestBody":{"content":{"application/json":{"example":{"waiting_ref":"WAIT001"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for cancelling a waiting registration","properties":{"reason":{"description":"Cancellation reason","type":"string"},"waiting_ref":{"description":"Waiting reference ID to cancel","type":"string"}},"required":["waiting_ref"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"status":"CANCELLED","waiting_ref":"WAIT001"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Waiting cancellation confirmation","properties":{"status":{"description":"Waiting status for a successful cancellation call","enum":["CANCELLED"],"type":"string"},"waiting_ref":{"description":"Cancelled waiting reference ID","type":"string"}},"required":["waiting_ref","status"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: CatchTable session cookie missing or expired","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable cancellation failed upstream Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable cancellation failed upstream","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"CatchTable 웨이팅 취소","tags":["catchtable"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"CatchTable cancellation failed upstream","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"cancel-waiting","x-apifuse-operation-key":"catchtable/cancel-waiting","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"5f684db974b115e40a6f4a5e0da9dd0b0b90626bd8302eb0b3ab7bcec2605811","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-requires-connection":true}},"/v1/catchtable/my-status":{"post":{"description":"Retrieves the current user's active reservations and waiting queue entries on Catchtable. Use when the user wants to see all their upcoming reservations and active waitings in one view. Do NOT use for details of a single reservation — use catchtable:reservation-detail instead. Returns lists of reservations and active waitings with status. Requires Catchtable authentication.\n사용자의 현재 예약 목록과 활성 웨이팅 목록을 반환합니다.\n\n# CatchTable 내 예약/웨이팅 현황\n\n사용자의 현재 예약 목록과 활성 웨이팅 목록을 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__my_status","requestBody":{"content":{"application/json":{"example":{},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching current user reservation and waiting status","properties":{},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"example":{"data":{"activeWaitings":[{"shopName":"우동 다이닝","status":"WAITING","waitingOrder":3,"waitingRef":"WAIT001"}],"reservations":[{"personCount":2,"reservationRef":"RES001","shopName":"스시 오마카세","status":"CONFIRMED","visitDate":"2026-04-01","visitTime":"19:00"}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Current user reservation and waiting status","properties":{"activeWaitings":{"description":"List of active waitings","items":{"additionalProperties":false,"description":"Summary of a single active waiting","properties":{"shopName":{"description":"Restaurant name","type":"string"},"status":{"description":"Upstream-extensible waiting status code","type":"string"},"waitingOrder":{"description":"Current position in the waiting queue","type":"number"},"waitingRef":{"description":"Waiting reference ID","type":"string"}},"required":["waitingRef","shopName","status"],"type":"object"},"type":"array"},"reservations":{"description":"List of active reservations","items":{"additionalProperties":false,"description":"Summary of a single reservation","properties":{"personCount":{"description":"Number of guests","type":"number"},"reservationRef":{"description":"Reservation reference ID","type":"string"},"shopName":{"description":"Restaurant name","type":"string"},"status":{"description":"Upstream-extensible reservation status code","type":"string"},"visitDate":{"description":"Visit date","type":"string"},"visitTime":{"description":"Visit time","type":"string"}},"required":["reservationRef","shopName","status"],"type":"object"},"type":"array"}},"required":["reservations","activeWaitings"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: CatchTable session cookie missing or expired","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable upstream error Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream error","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"CatchTable 내 예약/웨이팅 현황","tags":["catchtable"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"CatchTable upstream error","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"my-status","x-apifuse-operation-key":"catchtable/my-status","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"e271f05a934564aefa25ec9fbc2462a15c964b37fb17d5b0cc38479dbd2bc568","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":true}},"/v1/catchtable/register-waiting":{"post":{"description":"Registers the user in a restaurant's waiting queue on Catchtable for a specified table type and party size. Use when the user wants to join the waiting list at a restaurant that supports walk-in waitings. Do NOT use for reservations — use catchtable:reserve instead. Returns a waiting reference ID, queue position, and status. Requires Catchtable authentication.\n매장 ref와 테이블 ID, 인원 수로 웨이팅을 등록하고 웨이팅 ref와 순번을 반환합니다.\n\n# CatchTable 웨이팅 등록\n\n매장 ref와 테이블 ID, 인원 수로 웨이팅을 등록하고 웨이팅 ref와 순번을 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__register_waiting","requestBody":{"content":{"application/json":{"example":{"person":2,"shop_ref":"SHOP001","table_id":"TABLE_2"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for registering in a restaurant waiting queue","properties":{"person":{"description":"Number of guests","maximum":9007199254740991,"minimum":1,"type":"integer"},"shop_ref":{"description":"Catchtable shop reference ID","type":"string"},"table_id":{"description":"Table type ID to wait for; omitted to use the default waiting table","type":"string"}},"required":["shop_ref","person"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"shop_ref":"SHOP001","status":"WAITING","waiting_order":3,"waiting_ref":"WAIT001"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Waiting registration confirmation","properties":{"shop_ref":{"description":"Shop reference ID","type":"string"},"status":{"description":"Waiting status for a successful waiting registration call","enum":["WAITING"],"type":"string"},"waiting_order":{"description":"Position in the waiting queue","type":"number"},"waiting_ref":{"description":"Assigned waiting reference ID","type":"string"}},"required":["waiting_ref","shop_ref","status"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: CatchTable session cookie missing or expired","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable waiting registration failed upstream Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable waiting registration failed upstream","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"CatchTable 웨이팅 등록","tags":["catchtable"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"CatchTable waiting registration failed upstream","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"register-waiting","x-apifuse-operation-key":"catchtable/register-waiting","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"e6e93305912419b223e7ca0030f5754080268992a2aa4c5b558ca2364f6fc9b5","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-rate-limit":{"calls":60,"window":"minute"},"x-requires-connection":true}},"/v1/catchtable/reservation-detail":{"post":{"description":"Retrieves detailed information about a specific reservation on Catchtable by reservation reference ID, including restaurant name, status, visit date/time, and party size. Use when the user wants to check the details of an existing reservation. Do NOT use for listing all reservations — use catchtable:my-status instead. Returns full reservation details. Requires Catchtable authentication.\n예약 ref로 예약 상태, 방문 일시, 인원 등 상세 정보를 반환합니다.\n\n# CatchTable 예약 상세 조회\n\n예약 ref로 예약 상태, 방문 일시, 인원 등 상세 정보를 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__reservation_detail","requestBody":{"content":{"application/json":{"example":{"reservation_ref":"RES001"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching reservation details","properties":{"reservation_ref":{"description":"Reservation reference ID to look up","type":"string"}},"required":["reservation_ref"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"person_count":2,"reservation_ref":"RES001","shop_name":"맛있는 식당","shop_ref":"SHOP001","status":"CONFIRMED","visit_date":"2026-04-01","visit_time":"19:00"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Detailed reservation information","properties":{"person_count":{"description":"Number of guests","type":"number"},"reservation_ref":{"description":"Reservation reference ID","type":"string"},"shop_name":{"description":"Restaurant name","type":"string"},"shop_ref":{"description":"Shop reference ID","type":"string"},"status":{"description":"Upstream-extensible reservation status code","type":"string"},"visit_date":{"description":"Visit date","type":"string"},"visit_time":{"description":"Visit time","type":"string"}},"required":["reservation_ref","shop_ref","shop_name","status","person_count"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: CatchTable session cookie missing or expired","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Reservation not found or upstream error Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Reservation not found or upstream error","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"CatchTable 예약 상세 조회","tags":["catchtable"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Reservation not found or upstream error","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"reservation-detail","x-apifuse-operation-key":"catchtable/reservation-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"57eb3e97f98467ce71c45f8fbb389a56413a20be2da09bf0382366a92482a309","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":true}},"/v1/catchtable/reserve":{"post":{"description":"Creates a dining reservation at a restaurant on Catchtable for a specified date, time, and party size. Use when the user wants to book a table at a restaurant after checking availability. Do NOT use without first checking catchtable:availability. Returns a reservation reference ID, status, and confirmed visit details. Requires Catchtable authentication.\n날짜, 시각, 인원을 지정하여 예약을 생성하고 예약 ref를 반환합니다.\n\n# CatchTable 예약 생성\n\n날짜, 시각, 인원을 지정하여 예약을 생성하고 예약 ref를 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__reserve","requestBody":{"content":{"application/json":{"example":{"date":"2026-04-01","person":2,"shop_ref":"SHOP001","time":"19:00"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for creating a restaurant reservation","properties":{"date":{"description":"Reservation date in YYYY-MM-DD format","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"menu_set_seq":{"description":"Menu set sequence number","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"person":{"description":"Number of guests","maximum":9007199254740991,"minimum":1,"type":"integer"},"selected_addon_items":{"description":"Explicit addon selections","items":{"additionalProperties":false,"description":"CatchTable addon item selection","properties":{"count":{"description":"Addon item count","maximum":9007199254740991,"minimum":1,"type":"integer"},"itemId":{"description":"CatchTable addon item ID","type":"string"}},"required":["itemId","count"],"type":"object"},"type":"array"},"selected_menu_items":{"description":"Explicit menu items for required menu-set reservations","items":{"additionalProperties":false,"description":"CatchTable menu item selection","properties":{"count":{"description":"Menu item count","maximum":9007199254740991,"minimum":1,"type":"integer"},"menuItemSeq":{"description":"CatchTable menu item sequence","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["menuItemSeq","count"],"type":"object"},"type":"array"},"shop_ref":{"description":"Catchtable shop reference ID","type":"string"},"table_type":{"description":"Table type preference","type":"string"},"time":{"description":"Reservation time in 24-hour HH:MM format, e.g. 19:00","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","type":"string"}},"required":["shop_ref","date","time","person"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"person_count":2,"reservation_ref":"RES001","shop_ref":"SHOP001","status":"CONFIRMED","visit_date":"2026-04-01"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Created reservation confirmation","properties":{"person_count":{"description":"Confirmed number of guests","type":"number"},"reservation_ref":{"description":"Unique reservation reference ID","type":"string"},"shop_ref":{"description":"Shop reference ID","type":"string"},"status":{"description":"Reservation status for a successful create reservation call","enum":["CONFIRMED"],"type":"string"},"visit_date":{"description":"Confirmed visit date","type":"string"}},"required":["reservation_ref","status","shop_ref","visit_date","person_count"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: CatchTable session cookie missing or expired — re-authenticate","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired — re-authenticate","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable holding or reservation create failed Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable holding or reservation create failed","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"CatchTable 예약 생성","tags":["catchtable"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"CatchTable session cookie missing or expired — re-authenticate","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"CatchTable holding or reservation create failed","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"reserve","x-apifuse-operation-key":"catchtable/reserve","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"e1ad1ba9ab2968c5dd9c561cad2468f2d258f6c9c1057ce89f79ddefd0db7184","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-rate-limit":{"calls":60,"window":"minute"},"x-requires-connection":true}},"/v1/catchtable/reviews":{"post":{"description":"Fetches paginated reviews for a specific restaurant on Catchtable by shop reference ID, including author, rating, content, and date. Use when the user wants to read reviews or check ratings for a restaurant. Do NOT use for restaurant details — use catchtable:shop instead. Returns a list of reviews with total count for pagination.\n매장의 리뷰 목록을 페이지 단위로 반환합니다.\n\n# CatchTable 매장 리뷰\n\n매장의 리뷰 목록을 페이지 단위로 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__reviews","requestBody":{"content":{"application/json":{"example":{"limit":12,"page":1,"shop_ref":"shop-1"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching restaurant reviews","properties":{"limit":{"default":12,"description":"Reviews per page","maximum":100,"minimum":1,"type":"integer"},"page":{"default":1,"description":"Page number","maximum":9007199254740991,"minimum":1,"type":"integer"},"shop_ref":{"description":"Catchtable shop reference ID","minLength":1,"type":"string"}},"required":["shop_ref","page","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"reviews":[{"author":"홍길동","content":"맛있어요","date":"2026-03-25","id":"review-1","rating":5}],"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Restaurant reviews with pagination","properties":{"reviews":{"description":"List of reviews","items":{"additionalProperties":false,"description":"A single restaurant review","properties":{"author":{"description":"Review author name","type":"string"},"content":{"description":"Review text content","type":"string"},"date":{"description":"Review date","type":"string"},"id":{"description":"Unique review identifier","type":"string"},"rating":{"description":"Rating score","type":"number"}},"required":["id","author","rating","content","date"],"type":"object"},"type":"array"},"total":{"description":"Total number of reviews","type":"number"}},"required":["reviews","total"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"CatchTable 매장 리뷰","tags":["catchtable"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"reviews","x-apifuse-operation-key":"catchtable/reviews","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"48e62a267aeba994e9a8280a1449d8b1df5a53872fc3a532b7169b27f19f655d","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/catchtable/search":{"post":{"description":"Searches for restaurants on Catchtable by keyword, optionally filtered by proximity to coordinates and sorted by recommendation or rating. Use when the user wants to find restaurants by name, cuisine type, or area. Do NOT use for getting details about a specific restaurant — use catchtable:shop instead. Returns a list of matching restaurants with name, cuisine, address, rating, and review count.\n키워드와 위치 기반으로 캐치테이블에 등록된 레스토랑 목록을 반환합니다.\n\n# CatchTable 레스토랑 검색\n\n키워드와 위치 기반으로 캐치테이블에 등록된 레스토랑 목록을 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__search","requestBody":{"content":{"application/json":{"example":{"keyword":"스시","lat":37.5518333,"limit":20,"lon":126.9887774,"offset":0,"sort":"recommended"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching restaurants on Catchtable","properties":{"keyword":{"description":"Restaurant search keyword such as name, cuisine, or area","minLength":1,"type":"string"},"lat":{"description":"Latitude for proximity ranking","type":"number"},"limit":{"default":20,"description":"Maximum results to return","maximum":100,"minimum":1,"type":"integer"},"lon":{"description":"Longitude for proximity ranking","type":"number"},"offset":{"default":0,"description":"Pagination offset","maximum":9007199254740991,"minimum":0,"type":"integer"},"sort":{"default":"recommended","description":"Sort option such as recommended or rating","type":"string"}},"required":["keyword","limit","offset","sort"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"shops":[{"address":"서울 강남구","avgRating":4.8,"foodKind":"일식","reviewCount":128,"shopName":"스시 오마카세","shopRef":"shop-1"}],"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Restaurant search results from Catchtable","properties":{"shops":{"description":"List of matching restaurants","items":{"additionalProperties":false,"description":"A single restaurant search result","properties":{"address":{"description":"Restaurant address","type":"string"},"avgRating":{"description":"Average rating score","type":"number"},"foodKind":{"description":"Upstream cuisine label","type":"string"},"reviewCount":{"description":"Total review count","type":"number"},"shopName":{"description":"Restaurant name","type":"string"},"shopRef":{"description":"Unique shop reference ID","type":"string"}},"required":["shopRef","shopName","foodKind","address","reviewCount","avgRating"],"type":"object"},"type":"array"},"total":{"description":"Total number of matching restaurants","type":"number"}},"required":["shops","total"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: CatchTable rate limit exceeded — retry after backoff Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded — retry after backoff","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"CatchTable 레스토랑 검색","tags":["catchtable"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded — retry after backoff","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search","x-apifuse-operation-key":"catchtable/search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"acdcd5a0ef4ef298aa065851d73232cddde908b70e05f153c63d1f6f843b139d","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"keyword":"식당명, 음식 종류, 지역명"},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/catchtable/shop":{"post":{"description":"Retrieves detailed information about a specific restaurant on Catchtable by shop reference ID, including name, cuisine, address, phone, description, images, and ratings. Use when the user wants full details about a restaurant found via search. Do NOT use for reviews — use catchtable:reviews instead. Returns restaurant metadata with optional photo URLs.\nshop_ref로 특정 매장의 이름, 주소, 평점, 이미지 등 상세 정보를 반환합니다.\n\n# CatchTable 매장 상세\n\nshop_ref로 특정 매장의 이름, 주소, 평점, 이미지 등 상세 정보를 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__shop","requestBody":{"content":{"application/json":{"example":{"include_reviews":false,"review_limit":5,"shop_ref":"shop-1"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching restaurant details","properties":{"include_reviews":{"default":false,"description":"Whether to include reviews","type":"boolean"},"review_limit":{"default":5,"description":"Max reviews to include","maximum":50,"minimum":1,"type":"integer"},"shop_ref":{"description":"Catchtable shop reference ID","minLength":1,"type":"string"}},"required":["shop_ref","include_reviews","review_limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"address":"서울 강남구 테헤란로 1","avgRating":4.8,"description":"계절 코스 전문점","foodKind":"일식","images":["https://image.example.com/1.jpg"],"phone":"02-123-4567","reviewCount":128,"shopName":"스시 오마카세","shopRef":"shop-1"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Detailed restaurant information from Catchtable","properties":{"address":{"description":"Restaurant address","type":"string"},"avgRating":{"description":"Average rating score","type":"number"},"description":{"description":"Restaurant introduction text","type":"string"},"foodKind":{"description":"Upstream cuisine label","type":"string"},"images":{"description":"Restaurant photo URLs","items":{"description":"Image URL","type":"string"},"type":"array"},"phone":{"description":"Restaurant phone number","type":"string"},"reviewCount":{"description":"Total review count","type":"number"},"shopName":{"description":"Restaurant name","type":"string"},"shopRef":{"description":"Unique shop reference ID","type":"string"}},"required":["shopRef","shopName","foodKind","address","avgRating","reviewCount"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable upstream returned non-success response or shop not found Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response or shop not found","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"CatchTable 매장 상세","tags":["catchtable"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response or shop not found","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"shop","x-apifuse-operation-key":"catchtable/shop","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"b311de464b873a53a2738190891d51b2ea6a91048d35d62fbb8cd2178b8122cd","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/catchtable/waiting-info":{"post":{"description":"Retrieves the current waiting queue status at a restaurant on Catchtable, including the number of teams waiting, estimated wait time, and whether the restaurant is open. Use when the user wants to check how busy a restaurant is before joining the queue. Do NOT use for registering — use catchtable:register-waiting instead. Returns waiting count, estimated minutes, and open status.\n현재 웨이팅 팀 수, 예상 대기 시간, 영업 여부를 반환합니다.\n\n# CatchTable 웨이팅 현황\n\n현재 웨이팅 팀 수, 예상 대기 시간, 영업 여부를 반환합니다.\n\n## Normalization notes\n\n- 검색, 리뷰, 예약, 웨이팅 응답을 operation별 명시적 필드 구조로 평탄화합니다.\n- CatchTable 내부 ref 값은 shopRef/reservationRef/waitingRef처럼 의미가 드러나는 필드명으로 정규화합니다.\n- 예약·웨이팅 mutation 결과는 상태와 핵심 식별자를 우선적으로 반환해 후속 호출에 바로 재사용할 수 있게 합니다.","operationId":"catchtable__waiting_info","requestBody":{"content":{"application/json":{"example":{"shop_ref":"shop-1"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for checking current waiting queue status at a restaurant","properties":{"shop_ref":{"description":"Catchtable shop reference ID","minLength":1,"type":"string"}},"required":["shop_ref"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"estimated_wait_min":25,"is_open":true,"shop_ref":"shop-1","waiting_count":4},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"catchtable"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Current waiting queue status at a restaurant","properties":{"estimated_wait_min":{"description":"Estimated wait time in minutes","type":"number"},"is_open":{"description":"Whether the restaurant is currently accepting waitings","type":"boolean"},"shop_ref":{"description":"Shop reference ID","type":"string"},"waiting_count":{"description":"Current number of teams waiting","type":"number"}},"required":["shop_ref","waiting_count","is_open"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: CatchTable rate limit exceeded Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: CatchTable upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"CatchTable 웨이팅 현황","tags":["catchtable"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"CatchTable 레스토랑 검색 및 예약","id":"catchtable"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"CatchTable upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"CatchTable rate limit exceeded","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"waiting-info","x-apifuse-operation-key":"catchtable/waiting-info","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"catchtable","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"99c5e380694b8c29e3c9597d455ebb8f94c608cda02718516970e3faa9b286ea","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":60,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/cars-detail":{"post":{"description":"Use when a tenant already has a public Daangn cars listing URL and needs a best-effort normalized detail read without login or mutation. Detail URLs can disappear as listings close, so this operation preserves source URL evidence and declares live probing unsupported.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Cars Detail\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__cars_detail","requestBody":{"content":{"application/json":{"example":{"url":"https://www.daangn.com/kr/buy-sell/sample/"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for reading a public Daangn listing detail URL","properties":{"url":{"description":"Absolute or root-relative public Daangn listing URL","minLength":1,"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"item":{"id":"1","price":10000,"price_text":"10,000원","title":"샘플","url":"https://www.daangn.com/kr/buy-sell/sample/"},"source_url":"https://www.daangn.com/kr/buy-sell/sample/?_data=routes%2Fkr.buy-sell.%24buy_sell_id"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing detail result envelope","properties":{"item":{"additionalProperties":false,"description":"Normalized detail listing extracted from the public URL when present","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"source_url":{"description":"Upstream Daangn detail _data URL used for the request","type":"string"}},"required":["source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Cars Detail","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"cars-detail","x-apifuse-operation-key":"daangn-marketplace/cars-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"47d80e5ca92fee448abd8493566d2debb6ad2e84bccc8c93003f60b4c73bbd75","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/cars-search":{"post":{"description":"Use when a tenant needs read-only Daangn cars listings for a Korean region and optional keyword without a user login. It resolves the public region id first, requests the Remix _data route, returns normalized listing candidates, and preserves the effective region plus source URL for audit.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Cars Search\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__cars_search","requestBody":{"content":{"application/json":{"example":{"limit":3,"only_on_sale":true,"query":"맥북","region":"합정동"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching public Daangn listing verticals","properties":{"limit":{"default":10,"description":"Maximum number of listing candidates to return","maximum":50,"minimum":1,"type":"integer"},"only_on_sale":{"default":true,"description":"Whether to ask the upstream route for currently available listings when the vertical supports it","type":"boolean"},"query":{"default":"","description":"Optional listing keyword to pass to the public search route","type":"string"},"region":{"description":"Korean region keyword used to resolve Daangn region id, for example 합정동","minLength":1,"type":"string"}},"required":["region","query","limit","only_on_sale"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"effective_region":{"full_name":"서울특별시 마포구 합정동","id":"231","name":"합정동"},"items":[{"id":"1","price":10000,"price_text":"10,000원","region":"합정동","title":"샘플","url":"https://www.daangn.com/kr"}],"source_url":"https://www.daangn.com/kr","vertical":"cars"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing search result envelope","properties":{"effective_region":{"additionalProperties":false,"description":"Resolved Daangn region selected for the request","properties":{"full_name":{"description":"Full administrative region path when available","type":"string"},"id":{"description":"Daangn internal region identifier","type":"string"},"name":{"description":"Matched region display name","type":"string"}},"required":["id","name"],"type":"object"},"items":{"description":"Normalized listing candidates from the public Daangn route","items":{"additionalProperties":false,"description":"A normalized Daangn public listing candidate","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"type":"array"},"source_url":{"description":"Upstream Daangn _data URL used for the request","type":"string"},"vertical":{"description":"Daangn vertical queried by this operation","type":"string"}},"required":["vertical","items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Cars Search","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"cars-search","x-apifuse-operation-key":"daangn-marketplace/cars-search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"cb7697ac839a2af5f014a20f6d2b960c80eb3fee8fa9cbf591f08e064a258e3e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/jobs-detail":{"post":{"description":"Use when a tenant already has a public Daangn jobs listing URL and needs a best-effort normalized detail read without login or mutation. Detail URLs can disappear as listings close, so this operation preserves source URL evidence and declares live probing unsupported.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Jobs Detail\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__jobs_detail","requestBody":{"content":{"application/json":{"example":{"url":"https://www.daangn.com/kr/buy-sell/sample/"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for reading a public Daangn listing detail URL","properties":{"url":{"description":"Absolute or root-relative public Daangn listing URL","minLength":1,"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"item":{"id":"1","price":10000,"price_text":"10,000원","title":"샘플","url":"https://www.daangn.com/kr/buy-sell/sample/"},"source_url":"https://www.daangn.com/kr/buy-sell/sample/?_data=routes%2Fkr.buy-sell.%24buy_sell_id"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing detail result envelope","properties":{"item":{"additionalProperties":false,"description":"Normalized detail listing extracted from the public URL when present","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"source_url":{"description":"Upstream Daangn detail _data URL used for the request","type":"string"}},"required":["source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Jobs Detail","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"jobs-detail","x-apifuse-operation-key":"daangn-marketplace/jobs-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"47d80e5ca92fee448abd8493566d2debb6ad2e84bccc8c93003f60b4c73bbd75","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/jobs-search":{"post":{"description":"Use when a tenant needs read-only Daangn jobs listings for a Korean region and optional keyword without a user login. It resolves the public region id first, requests the Remix _data route, returns normalized listing candidates, and preserves the effective region plus source URL for audit.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Jobs Search\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__jobs_search","requestBody":{"content":{"application/json":{"example":{"limit":3,"only_on_sale":true,"query":"카페","region":"합정동"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching public Daangn listing verticals","properties":{"limit":{"default":10,"description":"Maximum number of listing candidates to return","maximum":50,"minimum":1,"type":"integer"},"only_on_sale":{"default":true,"description":"Whether to ask the upstream route for currently available listings when the vertical supports it","type":"boolean"},"query":{"default":"","description":"Optional listing keyword to pass to the public search route","type":"string"},"region":{"description":"Korean region keyword used to resolve Daangn region id, for example 합정동","minLength":1,"type":"string"}},"required":["region","query","limit","only_on_sale"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"effective_region":{"full_name":"서울특별시 마포구 합정동","id":"231","name":"합정동"},"items":[{"id":"1","price":10000,"price_text":"10,000원","region":"합정동","title":"샘플","url":"https://www.daangn.com/kr"}],"source_url":"https://www.daangn.com/kr","vertical":"jobs"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing search result envelope","properties":{"effective_region":{"additionalProperties":false,"description":"Resolved Daangn region selected for the request","properties":{"full_name":{"description":"Full administrative region path when available","type":"string"},"id":{"description":"Daangn internal region identifier","type":"string"},"name":{"description":"Matched region display name","type":"string"}},"required":["id","name"],"type":"object"},"items":{"description":"Normalized listing candidates from the public Daangn route","items":{"additionalProperties":false,"description":"A normalized Daangn public listing candidate","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"type":"array"},"source_url":{"description":"Upstream Daangn _data URL used for the request","type":"string"},"vertical":{"description":"Daangn vertical queried by this operation","type":"string"}},"required":["vertical","items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Jobs Search","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"jobs-search","x-apifuse-operation-key":"daangn-marketplace/jobs-search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"cb7697ac839a2af5f014a20f6d2b960c80eb3fee8fa9cbf591f08e064a258e3e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/realty-detail":{"post":{"description":"Use when a tenant already has a public Daangn realty listing URL and needs a best-effort normalized detail read without login or mutation. Detail URLs can disappear as listings close, so this operation preserves source URL evidence and declares live probing unsupported.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Realty Detail\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__realty_detail","requestBody":{"content":{"application/json":{"example":{"url":"https://www.daangn.com/kr/buy-sell/sample/"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for reading a public Daangn listing detail URL","properties":{"url":{"description":"Absolute or root-relative public Daangn listing URL","minLength":1,"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"item":{"id":"1","price":10000,"price_text":"10,000원","title":"샘플","url":"https://www.daangn.com/kr/buy-sell/sample/"},"source_url":"https://www.daangn.com/kr/buy-sell/sample/?_data=routes%2Fkr.buy-sell.%24buy_sell_id"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing detail result envelope","properties":{"item":{"additionalProperties":false,"description":"Normalized detail listing extracted from the public URL when present","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"source_url":{"description":"Upstream Daangn detail _data URL used for the request","type":"string"}},"required":["source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Realty Detail","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"realty-detail","x-apifuse-operation-key":"daangn-marketplace/realty-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"47d80e5ca92fee448abd8493566d2debb6ad2e84bccc8c93003f60b4c73bbd75","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/realty-search":{"post":{"description":"Use when a tenant needs read-only Daangn realty listings for a Korean region and optional keyword without a user login. It resolves the public region id first, requests the Remix _data route, returns normalized listing candidates, and preserves the effective region plus source URL for audit.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Realty Search\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__realty_search","requestBody":{"content":{"application/json":{"example":{"limit":3,"only_on_sale":true,"query":"맥북","region":"합정동"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching public Daangn listing verticals","properties":{"limit":{"default":10,"description":"Maximum number of listing candidates to return","maximum":50,"minimum":1,"type":"integer"},"only_on_sale":{"default":true,"description":"Whether to ask the upstream route for currently available listings when the vertical supports it","type":"boolean"},"query":{"default":"","description":"Optional listing keyword to pass to the public search route","type":"string"},"region":{"description":"Korean region keyword used to resolve Daangn region id, for example 합정동","minLength":1,"type":"string"}},"required":["region","query","limit","only_on_sale"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"effective_region":{"full_name":"서울특별시 마포구 합정동","id":"231","name":"합정동"},"items":[{"id":"1","price":10000,"price_text":"10,000원","region":"합정동","title":"샘플","url":"https://www.daangn.com/kr"}],"source_url":"https://www.daangn.com/kr","vertical":"realty"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing search result envelope","properties":{"effective_region":{"additionalProperties":false,"description":"Resolved Daangn region selected for the request","properties":{"full_name":{"description":"Full administrative region path when available","type":"string"},"id":{"description":"Daangn internal region identifier","type":"string"},"name":{"description":"Matched region display name","type":"string"}},"required":["id","name"],"type":"object"},"items":{"description":"Normalized listing candidates from the public Daangn route","items":{"additionalProperties":false,"description":"A normalized Daangn public listing candidate","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"type":"array"},"source_url":{"description":"Upstream Daangn _data URL used for the request","type":"string"},"vertical":{"description":"Daangn vertical queried by this operation","type":"string"}},"required":["vertical","items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Realty Search","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"realty-search","x-apifuse-operation-key":"daangn-marketplace/realty-search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"cb7697ac839a2af5f014a20f6d2b960c80eb3fee8fa9cbf591f08e064a258e3e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/used-goods-detail":{"post":{"description":"Use when a tenant already has a public Daangn used-goods listing URL and needs a best-effort normalized detail read without login or mutation. Detail URLs can disappear as listings close, so this operation preserves source URL evidence and declares live probing unsupported.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Used Goods Detail\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__used_goods_detail","requestBody":{"content":{"application/json":{"example":{"url":"https://www.daangn.com/kr/buy-sell/sample/"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for reading a public Daangn listing detail URL","properties":{"url":{"description":"Absolute or root-relative public Daangn listing URL","minLength":1,"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"item":{"id":"1","price":10000,"price_text":"10,000원","title":"샘플","url":"https://www.daangn.com/kr/buy-sell/sample/"},"source_url":"https://www.daangn.com/kr/buy-sell/sample/?_data=routes%2Fkr.buy-sell.%24buy_sell_id"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing detail result envelope","properties":{"item":{"additionalProperties":false,"description":"Normalized detail listing extracted from the public URL when present","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"source_url":{"description":"Upstream Daangn detail _data URL used for the request","type":"string"}},"required":["source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Used Goods Detail","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"used-goods-detail","x-apifuse-operation-key":"daangn-marketplace/used-goods-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"47d80e5ca92fee448abd8493566d2debb6ad2e84bccc8c93003f60b4c73bbd75","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daangn-marketplace/used-goods-search":{"post":{"description":"Use when a tenant needs read-only Daangn used-goods listings for a Korean region and optional keyword without a user login. It resolves the public region id first, requests the Remix _data route, returns normalized listing candidates, and preserves the effective region plus source URL for audit.\nResolves public regions and returns normalized listing candidates and details.\n\n# Daangn public listings Used Goods Search\n\nResolves public regions and returns normalized listing candidates and details.\n\n## Normalization notes\n\n- Region keyword resolution is preserved in output.\n- Valid empty result and extraction failure are kept separate by handlers/tests.","operationId":"daangn-marketplace__used_goods_search","requestBody":{"content":{"application/json":{"example":{"limit":3,"only_on_sale":true,"query":"맥북","region":"합정동"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching public Daangn listing verticals","properties":{"limit":{"default":10,"description":"Maximum number of listing candidates to return","maximum":50,"minimum":1,"type":"integer"},"only_on_sale":{"default":true,"description":"Whether to ask the upstream route for currently available listings when the vertical supports it","type":"boolean"},"query":{"default":"","description":"Optional listing keyword to pass to the public search route","type":"string"},"region":{"description":"Korean region keyword used to resolve Daangn region id, for example 합정동","minLength":1,"type":"string"}},"required":["region","query","limit","only_on_sale"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"effective_region":{"full_name":"서울특별시 마포구 합정동","id":"231","name":"합정동"},"items":[{"id":"1","price":10000,"price_text":"10,000원","region":"합정동","title":"샘플","url":"https://www.daangn.com/kr"}],"source_url":"https://www.daangn.com/kr","vertical":"used-goods"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daangn-marketplace"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daangn public listing search result envelope","properties":{"effective_region":{"additionalProperties":false,"description":"Resolved Daangn region selected for the request","properties":{"full_name":{"description":"Full administrative region path when available","type":"string"},"id":{"description":"Daangn internal region identifier","type":"string"},"name":{"description":"Matched region display name","type":"string"}},"required":["id","name"],"type":"object"},"items":{"description":"Normalized listing candidates from the public Daangn route","items":{"additionalProperties":false,"description":"A normalized Daangn public listing candidate","properties":{"id":{"description":"Daangn listing identifier when exposed by the public page","type":"string"},"metadata":{"additionalProperties":false,"description":"Provider-added metadata for interpreting the listing","properties":{"vertical":{"description":"Daangn vertical that produced this listing","enum":["used-goods","realty","jobs","cars"],"type":"string"}},"required":["vertical"],"type":"object"},"price":{"description":"Numeric listing price when the vertical exposes one","type":"number"},"price_text":{"description":"Human-readable price, rent, or salary label","type":"string"},"region":{"description":"Listing region or address label","type":"string"},"status":{"description":"Trade, sale, recruiting, or listing status label","type":"string"},"summary":{"description":"Short public listing summary when available","type":"string"},"title":{"description":"Listing title","type":"string"},"url":{"description":"Public Daangn listing URL when exposed","type":"string"}},"required":["title"],"type":"object"},"type":"array"},"source_url":{"description":"Upstream Daangn _data URL used for the request","type":"string"},"vertical":{"description":"Daangn vertical queried by this operation","type":"string"}},"required":["vertical","items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Daangn public listings Used Goods Search","tags":["daangn-marketplace"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Daangn public listings","id":"daangn-marketplace"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"used-goods-search","x-apifuse-operation-key":"daangn-marketplace/used-goods-search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daangn-marketplace","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"cb7697ac839a2af5f014a20f6d2b960c80eb3fee8fa9cbf591f08e064a258e3e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/browse_catalog":{"post":{"description":"Use this operation when you need Daiso catalog, category, or brand surfaces from the renewed HAR and want related read-only endpoints grouped into one response with per-endpoint summaries and optional sanitized source payloads.\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n# 다이소 카탈로그/추천/메타데이터 조회\n\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__browse_catalog","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped read-only Daiso metadata/catalog/recommendation operations","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for endpoints that support paging","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Page size for endpoints that support paging","maximum":100,"minimum":1,"type":"integer"},"product_id":{"description":"Optional Daiso product id for recommendation/detail-adjacent endpoint bodies","type":"string"},"query":{"description":"Optional keyword/query for search-related endpoints","type":"string"}},"required":["page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"endpoint_results":[{"endpoint_id":"post_fapi_daisomall_co_kr_ds_ctgr","summary":{"data":[]}}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_ds_ctgr"],"status":"complete"},"operation":"browse_catalog"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped read-only Daiso catalog/trend/recommendation/metadata/promotion response","properties":{"endpoint_results":{"description":"Per-endpoint sanitized summary results","items":{"additionalProperties":false,"description":"One grouped endpoint result summary","properties":{"endpoint_id":{"description":"Observed endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"summary":{"$ref":"#/$defs/__schema0","description":"Sanitized endpoint-level summary payload"}},"required":["endpoint_id","summary"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"operation":{"description":"Grouped Daiso read operation name","enum":["browse_catalog","get_search_trends","get_recommendations","get_site_metadata","get_promotions"],"type":"string"},"source_payloads":{"description":"Sanitized full upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"}},"required":["operation","endpoint_results","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 카탈로그/추천/메타데이터 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"browse_catalog","x-apifuse-operation-key":"daiso-api/browse_catalog","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1c11f77e531460882513af8a0b89179196e99e38a5228d095c9b0965d53bd8fa","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_product_availability":{"post":{"description":"Use this operation when you need a caller-friendly availability view for one Daiso product_id/store_code pair that combines renewed pickup stock and in-store location endpoints while preserving partial failures in meta.\n재고 수량, 판매 상태 코드, 매장 내 위치 정보를 반환합니다.\n\n# 다이소 상품 가용성 조회\n\n재고 수량, 판매 상태 코드, 매장 내 위치 정보를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_product_availability","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"product_id":"47946","store_code":"10386"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for direct Daiso product/store stock lookup","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"product_id":{"description":"Daiso product id","minLength":1,"type":"string"},"store_code":{"description":"Daiso store code","minLength":1,"type":"string"}},"required":["product_id","store_code","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"in_stock":true,"locations":[{"floor":"1","store_erp":"10386","zone":"4"}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":["post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo"],"required_endpoint_ids":["post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck"],"status":"complete"},"product_id":"47946","quantity":4,"sale_status_code":"1","store_code":"10386"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Combined Daiso product availability response","properties":{"in_stock":{"description":"Whether stock quantity is positive","type":"boolean"},"locations":{"description":"Product in-store location rows","items":{"additionalProperties":false,"properties":{"floor":{"description":"Store floor/stair number","type":"string"},"store_erp":{"description":"Store ERP code","type":"string"},"zone":{"description":"Store zone number","type":"string"}},"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"product_id":{"description":"Daiso product id","type":"string"},"quantity":{"description":"Pickup stock quantity","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"sale_status_code":{"description":"Opaque upstream sale status code","type":"string"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"store_code":{"description":"Daiso store code","type":"string"}},"required":["product_id","store_code","locations","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 상품 가용성 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_availability","x-apifuse-operation-key":"daiso-api/get_product_availability","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"90dd747e7cd2d10903372a5fabd626abf097d5bc2efdee7e568f6e4621c4a7cc","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_product_detail":{"post":{"description":"Gets grouped Daiso product detail by product ID, faning out to HAR-observed detail, description, notification, thumbnail, attribute, and review-count endpoints. Use after daiso:search_products/products when product_id is known. Optional endpoint failures are surfaced in meta.failed_endpoints instead of being silently dropped.\n상품 상세 핵심 필드와 fanout endpoint metadata/source payload를 반환합니다.\n\n# 다이소 상품 상세 조회\n\n상품 상세 핵심 필드와 fanout endpoint metadata/source payload를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_product_detail","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"product_id":"1026823"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped Daiso product detail lookup","properties":{"include_attributes":{"default":true,"description":"Fetch product attribute endpoint","type":"boolean"},"include_description":{"default":true,"description":"Fetch rich product description endpoint","type":"boolean"},"include_notifications":{"default":true,"description":"Fetch product disclosure/notification endpoint","type":"boolean"},"include_review_counts":{"default":true,"description":"Fetch option-level review count endpoint","type":"boolean"},"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"include_thumbnails":{"default":true,"description":"Fetch compact thumbnail/product card endpoint","type":"boolean"},"product_id":{"description":"Daiso product ID","minLength":1,"type":"string"}},"required":["product_id","include_attributes","include_description","include_notifications","include_thumbnails","include_review_counts","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo"],"status":"complete"},"product":{"attributes":[],"categories":[{"category_id":"CTGR_00002","level":"large","name":"주방용품"}],"delivery_available":true,"display_name":"양손 주방 가위","image_url":"https://img.daisomall.co.kr/file/PD/20250116/SrTo6ocZV9IL0RYiKATE1026823_00_00SrTo6ocZV9IL0RYiKATE.jpg","images":[{"image_url":"https://img.daisomall.co.kr/file/PD/20250116/SrTo6ocZV9IL0RYiKATE1026823_00_00SrTo6ocZV9IL0RYiKATE.jpg"}],"name":"양손 주방 가위","notifications":[],"pickup_available":true,"price":1000,"product_id":"1026823","product_type_code":"01","quick_delivery_available":true,"review_option_counts":[],"sale_status_code":"03","sold_out":true}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped Daiso product detail response","properties":{"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"product":{"additionalProperties":false,"description":"Normalized product detail","properties":{"attributes":{"description":"Sanitized product attribute rows preserved from upstream","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"brand":{"description":"Brand name","type":"string"},"categories":{"description":"Category breadcrumb rows","items":{"additionalProperties":false,"description":"Daiso product category breadcrumb item","properties":{"category_id":{"description":"Daiso category id","type":"string"},"level":{"description":"Category tree level","enum":["large","medium","small"],"type":"string"},"name":{"description":"Category display name","type":"string"}},"required":["level"],"type":"object"},"type":"array"},"delivery_available":{"description":"Whether parcel delivery is available","type":"boolean"},"detail_html":{"description":"HTML product description from upstream","type":"string"},"display_name":{"description":"Daiso display product name","type":"string"},"image_url":{"description":"Primary product image URL","type":"string"},"images":{"description":"Product images/content assets","items":{"additionalProperties":false,"description":"Product image/content asset","properties":{"content_type_code":{"description":"Opaque upstream product content type code","type":"string"},"image_url":{"description":"Product/content image URL","type":"string"},"rank":{"description":"Upstream image ordering rank","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["image_url"],"type":"object"},"type":"array"},"name":{"description":"Normalized product name","type":"string"},"notifications":{"description":"Product notification/disclosure rows","items":{"additionalProperties":false,"description":"Product statutory/detail notification row","properties":{"code":{"description":"Upstream notification code","type":"string"},"group_name":{"description":"Notification group name","type":"string"},"item_code":{"description":"Upstream notification item code","type":"string"},"item_content":{"description":"Notification item content","type":"string"},"item_name":{"description":"Notification item name","type":"string"}},"type":"object"},"type":"array"},"order_max_quantity":{"description":"Maximum order quantity","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"order_min_quantity":{"description":"Minimum order quantity","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"pickup_available":{"description":"Whether pickup ordering is available","type":"boolean"},"price":{"description":"Product price in KRW","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"product_id":{"description":"Daiso product ID","type":"string"},"product_type_code":{"description":"Opaque upstream product type code","type":"string"},"quick_delivery_available":{"description":"Whether quick delivery is available","type":"boolean"},"review_option_counts":{"description":"Option-level review count rows","items":{"additionalProperties":false,"description":"Option-level review count row","properties":{"online_product_id":{"description":"Online product id for this option row","type":"string"},"option_name":{"description":"Option display name","type":"string"},"product_id":{"description":"Product id for this option row","type":"string"},"review_count":{"description":"Review count when upstream provides it","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"row_id":{"description":"Opaque upstream row id","type":"string"}},"type":"object"},"type":"array"},"sale_status_code":{"description":"Opaque upstream sale status code","type":"string"},"sold_out":{"description":"Whether upstream marks the product as sold out","type":"boolean"}},"required":["product_id","name","categories","images","notifications","attributes","review_option_counts"],"type":"object"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"}},"required":["product","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"403":{"description":"BLOCKED: Daiso blocked an endpoint branch Retryable.","x-apifuse-error-code":"BLOCKED","x-apifuse-error-codes":[{"code":"BLOCKED","description":"Daiso blocked an endpoint branch","retryable":true,"status":403}],"x-apifuse-retryable":true},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_SCHEMA_CHANGED: Required Daiso product detail endpoint changed shape or omitted required identity fields Retryable.","x-apifuse-error-code":"UPSTREAM_SCHEMA_CHANGED","x-apifuse-error-codes":[{"code":"UPSTREAM_SCHEMA_CHANGED","description":"Required Daiso product detail endpoint changed shape or omitted required identity fields","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"다이소 상품 상세 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_SCHEMA_CHANGED","description":"Required Daiso product detail endpoint changed shape or omitted required identity fields","retryable":true,"status":502},{"code":"BLOCKED","description":"Daiso blocked an endpoint branch","retryable":true,"status":403}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_detail","x-apifuse-operation-key":"daiso-api/get_product_detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"0d8cfc6dafc027063cf2d5164e6399f504ca94e1771f8e99a80c537b21db27a9","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_product_reviews":{"post":{"description":"Use this operation when you need grouped Daiso product reviews by product ID, faning out to HAR-observed review list/content/attribute and AI summary/recommendation/keyword endpoints while surfacing optional failures in meta.\n리뷰 데이터와 partial failure/source payload metadata를 반환합니다.\n\n# 다이소 상품 리뷰 조회\n\n리뷰 데이터와 partial failure/source payload metadata를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_product_reviews","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"page":1,"page_size":10,"product_id":"1026823","sort":"RCM"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped Daiso product review lookup","properties":{"include_ai_keywords":{"default":true,"description":"Fetch AI review keyword endpoint","type":"boolean"},"include_ai_recommendations":{"default":true,"description":"Fetch AI recommended review endpoint","type":"boolean"},"include_ai_summary":{"default":true,"description":"Fetch AI review summary endpoint","type":"boolean"},"include_review_attributes":{"default":true,"description":"Fetch review attribute summary endpoint","type":"boolean"},"include_review_contents":{"default":true,"description":"Fetch review content image rows","type":"boolean"},"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Review page number","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":10,"description":"Review rows per page","maximum":50,"minimum":1,"type":"integer"},"product_id":{"description":"Daiso product ID","minLength":1,"type":"string"},"sort":{"default":"RCM","description":"Review sort condition","enum":["RCM","LATEST"],"type":"string"}},"required":["product_id","page","page_size","sort","include_review_contents","include_review_attributes","include_ai_summary","include_ai_recommendations","include_ai_keywords","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"attributes":[],"keywords":[],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist"],"status":"complete"},"product_id":"1026823","recommended_reviews":[],"review_images":[],"reviews":[{"content":"좋아요","product_id":"1026823","review_id":"1754171","score":5}],"summary":{"ai_summary":"가성비가 뛰어나다는 후기가 있습니다.","average_score":4.7,"positive_percent":94,"review_count":374}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped Daiso product review response","properties":{"attributes":{"description":"Sanitized review attribute rows and distributions","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"keywords":{"description":"Sanitized AI keyword rows","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"product_id":{"description":"Daiso product ID","type":"string"},"recommended_reviews":{"description":"AI-selected recommended review rows","items":{"additionalProperties":false,"description":"Daiso review row","properties":{"content":{"description":"Review body text","type":"string"},"created_at":{"description":"Review created timestamp when provided","type":"string"},"helpful_count":{"description":"Helpful/recommendation count when provided","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"image_url":{"description":"Review image or video URL","type":"string"},"option_text":{"description":"Reviewed option text","type":"string"},"product_id":{"description":"Daiso product id","type":"string"},"review_id":{"description":"Daiso review id","type":"string"},"score":{"description":"Review score/star value","type":"number"}},"type":"object"},"type":"array"},"review_images":{"description":"Review content image rows","items":{"additionalProperties":false,"description":"Review content image row","properties":{"content_type_code":{"description":"Opaque upstream product content type code","type":"string"},"image_url":{"description":"Review content image URL","type":"string"},"review_id":{"description":"Review id that owns the content image","type":"string"},"total_count":{"description":"Total content count when upstream provides it","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"type":"object"},"type":"array"},"reviews":{"description":"Review rows","items":{"additionalProperties":false,"description":"Daiso review row","properties":{"content":{"description":"Review body text","type":"string"},"created_at":{"description":"Review created timestamp when provided","type":"string"},"helpful_count":{"description":"Helpful/recommendation count when provided","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"image_url":{"description":"Review image or video URL","type":"string"},"option_text":{"description":"Reviewed option text","type":"string"},"product_id":{"description":"Daiso product id","type":"string"},"review_id":{"description":"Daiso review id","type":"string"},"score":{"description":"Review score/star value","type":"number"}},"type":"object"},"type":"array"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"summary":{"additionalProperties":false,"description":"Review summary metrics","properties":{"ai_summary":{"description":"AI-generated review summary","type":"string"},"average_score":{"description":"Average review score","type":"number"},"positive_percent":{"description":"Positive review percentage","type":"number"},"review_count":{"description":"Total review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"type":"object"}},"required":["product_id","summary","reviews","review_images","attributes","recommended_reviews","keywords","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"403":{"description":"BLOCKED: Daiso blocked a review endpoint branch Retryable.","x-apifuse-error-code":"BLOCKED","x-apifuse-error-codes":[{"code":"BLOCKED","description":"Daiso blocked a review endpoint branch","retryable":true,"status":403}],"x-apifuse-retryable":true},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_SCHEMA_CHANGED: Required Daiso review endpoint changed shape Retryable.","x-apifuse-error-code":"UPSTREAM_SCHEMA_CHANGED","x-apifuse-error-codes":[{"code":"UPSTREAM_SCHEMA_CHANGED","description":"Required Daiso review endpoint changed shape","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"다이소 상품 리뷰 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_SCHEMA_CHANGED","description":"Required Daiso review endpoint changed shape","retryable":true,"status":502},{"code":"BLOCKED","description":"Daiso blocked a review endpoint branch","retryable":true,"status":403}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_reviews","x-apifuse-operation-key":"daiso-api/get_product_reviews","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"130ad1fb8363275dba9e4b21937fadc6df734159075823e32d90803dab3534b6","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_promotions":{"post":{"description":"Use this operation when you need Daiso promotion, banner, exhibition, or corner content surfaces observed in the renewed HAR, grouped into a single read-only response with endpoint-level coverage metadata.\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n# 다이소 카탈로그/추천/메타데이터 조회\n\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_promotions","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped read-only Daiso metadata/catalog/recommendation operations","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for endpoints that support paging","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Page size for endpoints that support paging","maximum":100,"minimum":1,"type":"integer"},"product_id":{"description":"Optional Daiso product id for recommendation/detail-adjacent endpoint bodies","type":"string"},"query":{"description":"Optional keyword/query for search-related endpoints","type":"string"}},"required":["page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"endpoint_results":[{"endpoint_id":"post_fapi_daisomall_co_kr_ds_exh_selbanr","summary":{"data":[]}}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_ds_exh_selbanr"],"status":"complete"},"operation":"get_promotions"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped read-only Daiso catalog/trend/recommendation/metadata/promotion response","properties":{"endpoint_results":{"description":"Per-endpoint sanitized summary results","items":{"additionalProperties":false,"description":"One grouped endpoint result summary","properties":{"endpoint_id":{"description":"Observed endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"summary":{"$ref":"#/$defs/__schema0","description":"Sanitized endpoint-level summary payload"}},"required":["endpoint_id","summary"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"operation":{"description":"Grouped Daiso read operation name","enum":["browse_catalog","get_search_trends","get_recommendations","get_site_metadata","get_promotions"],"type":"string"},"source_payloads":{"description":"Sanitized full upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"}},"required":["operation","endpoint_results","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 카탈로그/추천/메타데이터 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_promotions","x-apifuse-operation-key":"daiso-api/get_promotions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1c11f77e531460882513af8a0b89179196e99e38a5228d095c9b0965d53bd8fa","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_recommendations":{"post":{"description":"Use this operation when you need Daiso recommendation surfaces around a product detail or search context, including detail-with, good-review-product, BLUX, and together endpoints grouped into one metadata-rich response.\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n# 다이소 카탈로그/추천/메타데이터 조회\n\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_recommendations","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"product_id":"1026823"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped read-only Daiso metadata/catalog/recommendation operations","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for endpoints that support paging","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Page size for endpoints that support paging","maximum":100,"minimum":1,"type":"integer"},"product_id":{"description":"Optional Daiso product id for recommendation/detail-adjacent endpoint bodies","type":"string"},"query":{"description":"Optional keyword/query for search-related endpoints","type":"string"}},"required":["page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"endpoint_results":[{"endpoint_id":"post_fapi_daisomall_co_kr_ds_recommend_dtlwith","summary":{"data":[]}}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_ds_recommend_dtlwith"],"status":"complete"},"operation":"get_recommendations"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped read-only Daiso catalog/trend/recommendation/metadata/promotion response","properties":{"endpoint_results":{"description":"Per-endpoint sanitized summary results","items":{"additionalProperties":false,"description":"One grouped endpoint result summary","properties":{"endpoint_id":{"description":"Observed endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"summary":{"$ref":"#/$defs/__schema0","description":"Sanitized endpoint-level summary payload"}},"required":["endpoint_id","summary"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"operation":{"description":"Grouped Daiso read operation name","enum":["browse_catalog","get_search_trends","get_recommendations","get_site_metadata","get_promotions"],"type":"string"},"source_payloads":{"description":"Sanitized full upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"}},"required":["operation","endpoint_results","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 카탈로그/추천/메타데이터 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_recommendations","x-apifuse-operation-key":"daiso-api/get_recommendations","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1c11f77e531460882513af8a0b89179196e99e38a5228d095c9b0965d53bd8fa","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_search_trends":{"post":{"description":"Use this operation when you need Daiso search trend terms or recommended keyword surfaces for a query and want the observed trendSearch and selRcmKeywd endpoints grouped with partial-failure metadata.\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n# 다이소 카탈로그/추천/메타데이터 조회\n\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_search_trends","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"query":"수세미"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped read-only Daiso metadata/catalog/recommendation operations","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for endpoints that support paging","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Page size for endpoints that support paging","maximum":100,"minimum":1,"type":"integer"},"product_id":{"description":"Optional Daiso product id for recommendation/detail-adjacent endpoint bodies","type":"string"},"query":{"description":"Optional keyword/query for search-related endpoints","type":"string"}},"required":["page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"endpoint_results":[{"endpoint_id":"get_www_daisomall_co_kr_ssn_search_trendsearch","summary":{"data":[]}}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["get_www_daisomall_co_kr_ssn_search_trendsearch"],"status":"complete"},"operation":"get_search_trends"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped read-only Daiso catalog/trend/recommendation/metadata/promotion response","properties":{"endpoint_results":{"description":"Per-endpoint sanitized summary results","items":{"additionalProperties":false,"description":"One grouped endpoint result summary","properties":{"endpoint_id":{"description":"Observed endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"summary":{"$ref":"#/$defs/__schema0","description":"Sanitized endpoint-level summary payload"}},"required":["endpoint_id","summary"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"operation":{"description":"Grouped Daiso read operation name","enum":["browse_catalog","get_search_trends","get_recommendations","get_site_metadata","get_promotions"],"type":"string"},"source_payloads":{"description":"Sanitized full upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"}},"required":["operation","endpoint_results","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 카탈로그/추천/메타데이터 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_search_trends","x-apifuse-operation-key":"daiso-api/get_search_trends","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1c11f77e531460882513af8a0b89179196e99e38a5228d095c9b0965d53bd8fa","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":20000}},"/v1/daiso-api/get_site_metadata":{"post":{"description":"Use this operation when you need Daiso site metadata such as common codes, delivery parameters, placeholders, holiday delivery information, or store search keywords from the renewed HAR endpoints.\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n# 다이소 카탈로그/추천/메타데이터 조회\n\n각 endpoint별 summary, source_payload, partial failure metadata를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_site_metadata","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for grouped read-only Daiso metadata/catalog/recommendation operations","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for endpoints that support paging","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Page size for endpoints that support paging","maximum":100,"minimum":1,"type":"integer"},"product_id":{"description":"Optional Daiso product id for recommendation/detail-adjacent endpoint bodies","type":"string"},"query":{"description":"Optional keyword/query for search-related endpoints","type":"string"}},"required":["page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"endpoint_results":[{"endpoint_id":"post_fapi_daisomall_co_kr_cmmn_selcmmncd","summary":{"data":[]}}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_cmmn_selcmmncd"],"status":"complete"},"operation":"get_site_metadata"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Grouped read-only Daiso catalog/trend/recommendation/metadata/promotion response","properties":{"endpoint_results":{"description":"Per-endpoint sanitized summary results","items":{"additionalProperties":false,"description":"One grouped endpoint result summary","properties":{"endpoint_id":{"description":"Observed endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"summary":{"$ref":"#/$defs/__schema0","description":"Sanitized endpoint-level summary payload"}},"required":["endpoint_id","summary"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"operation":{"description":"Grouped Daiso read operation name","enum":["browse_catalog","get_search_trends","get_recommendations","get_site_metadata","get_promotions"],"type":"string"},"source_payloads":{"description":"Sanitized full upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"}},"required":["operation","endpoint_results","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 카탈로그/추천/메타데이터 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_site_metadata","x-apifuse-operation-key":"daiso-api/get_site_metadata","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1c11f77e531460882513af8a0b89179196e99e38a5228d095c9b0965d53bd8fa","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/daiso-api/get_store_detail":{"post":{"description":"Use this operation when you already have a Daiso store_code and need the renewed store-detail payload, pickup date window, holiday signal, and source-aware metadata from the HAR-observed /dl/dla-api/selStrInfo endpoint.\n매장 상세 및 휴일/픽업 메타데이터를 반환합니다.\n\n# 다이소 매장 상세 조회\n\n매장 상세 및 휴일/픽업 메타데이터를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_store_detail","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"store_code":"00001"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Daiso store detail lookup","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"store_code":{"description":"Daiso store code","minLength":1,"type":"string"}},"required":["store_code","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"holidays":[],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo"],"status":"complete"},"store":{"store_code":"00001","store_name":"00001"}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daiso store detail response","properties":{"holidays":{"description":"Sanitized holiday rows","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"pickup_end_date":{"description":"Pickup end date when upstream provides it","type":"string"},"pickup_start_date":{"description":"Pickup start date when upstream provides it","type":"string"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"store":{"additionalProperties":false,"description":"Daiso store detail","properties":{"address":{"description":"Store address","type":"string"},"closing_time":{"description":"Closing time","type":"string"},"detail_address":{"description":"Store detail address","type":"string"},"distance_km":{"description":"Distance from caller coordinates in kilometers","type":"number"},"elevator_available":{"description":"Whether an elevator is available","type":"boolean"},"latitude":{"description":"Store latitude when upstream provides it","type":"number"},"longitude":{"description":"Store longitude when upstream provides it","type":"number"},"opening_time":{"description":"Opening time","type":"string"},"parking_available":{"description":"Whether parking is available","type":"boolean"},"phone":{"description":"Store phone number","type":"string"},"pickup_available":{"description":"Whether pickup is available","type":"boolean"},"store_code":{"description":"Daiso store code","type":"string"},"store_name":{"description":"Daiso store name","type":"string"},"use_yn":{"description":"Upstream store use flag","enum":["Y","N"],"type":"string"}},"required":["store_code","store_name"],"type":"object"},"today_holiday":{"description":"Whether upstream marks today as a holiday","type":"boolean"}},"required":["store","holidays","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 매장 상세 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_store_detail","x-apifuse-operation-key":"daiso-api/get_store_detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"7e46367e141c38a83a5db319022830c46c2f3de6c467e3af867926004bf052ca","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/get_store_inventory":{"post":{"description":"Use this operation when you have one Daiso product_id and store_code and need the renewed pickup-stock result from the HAR-observed selStrPkupStck endpoint, including resolved, blocked, no-data, or partial metadata.\n상품 ID와 현재 위치로 근처 매장의 재고 여부와 수량을 반환합니다.\n\n# 다이소 매장 재고 조회\n\n상품 ID와 현재 위치로 근처 매장의 재고 여부와 수량을 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_store_inventory","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"product_id":"47946","store_code":"10386"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for direct Daiso product/store stock lookup","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"product_id":{"description":"Daiso product id","minLength":1,"type":"string"},"store_code":{"description":"Daiso store code","minLength":1,"type":"string"}},"required":["product_id","store_code","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck"],"status":"complete"},"product_id":"47946","retrieval_status":"resolved","stores":[{"address":"","in_stock":true,"inventory_label":"in_stock","quantity":4,"store_code":"10386","store_name":""}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Direct Daiso store inventory response","properties":{"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"product_id":{"description":"Daiso product identifier used","type":"string"},"retrieval_status":{"description":"Whether the pickup-stock lookup was resolved or blocked","enum":["resolved","blocked","no_store","upstream_error"],"type":"string"},"selected_store":{"additionalProperties":false,"description":"Store selected for pickup-stock lookup","properties":{"address":{"description":"Selected store address","type":"string"},"store_code":{"description":"Selected Daiso store code","type":"string"},"store_name":{"description":"Selected store name","type":"string"}},"required":["store_name","store_code","address"],"type":"object"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"stores":{"description":"List of stores with inventory status for the product","items":{"additionalProperties":false,"description":"Inventory status at a single Daiso store","properties":{"address":{"description":"Store address","type":"string"},"in_stock":{"description":"Whether the product is in stock at this store","type":"boolean"},"inventory_label":{"description":"Human-readable inventory status","type":"string"},"quantity":{"description":"Available quantity in stock","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"store_code":{"description":"Daiso store code","type":"string"},"store_name":{"description":"Store name","type":"string"}},"required":["store_name","address","in_stock"],"type":"object"},"type":"array"}},"required":["product_id","retrieval_status","stores","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 매장 재고 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_store_inventory","x-apifuse-operation-key":"daiso-api/get_store_inventory","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"0406917da243c0c4c16f07e6e6cf7c23bb86df042f53311a12ff83512e7e8dac","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/get_store_product_location":{"post":{"description":"Use this operation when you have one Daiso product_id and store_code and need the renewed in-store floor, zone, or shelf-location rows from selIntPdStDispInfo without also fetching pickup stock.\n재고 수량, 판매 상태 코드, 매장 내 위치 정보를 반환합니다.\n\n# 다이소 상품 가용성 조회\n\n재고 수량, 판매 상태 코드, 매장 내 위치 정보를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__get_store_product_location","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"product_id":"47946","store_code":"10386"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for direct Daiso product/store stock lookup","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"product_id":{"description":"Daiso product id","minLength":1,"type":"string"},"store_code":{"description":"Daiso store code","minLength":1,"type":"string"}},"required":["product_id","store_code","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"locations":[{"floor":"1","store_erp":"10386","zone":"4"}],"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo"],"status":"complete"},"product_id":"47946","store_code":"10386"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daiso in-store product location response","properties":{"locations":{"description":"Product in-store location rows","items":{"additionalProperties":false,"properties":{"floor":{"description":"Store floor/stair number","type":"string"},"store_erp":{"description":"Store ERP code","type":"string"},"zone":{"description":"Store zone number","type":"string"}},"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"product_id":{"description":"Daiso product id","type":"string"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"store_code":{"description":"Daiso store code","type":"string"}},"required":["product_id","store_code","locations","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 상품 가용성 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_store_product_location","x-apifuse-operation-key":"daiso-api/get_store_product_location","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"d818eb18eaa1e8983b91d29d7293765e409501d7ba48486ae0af2a59c34e7073","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/inventory":{"post":{"description":"Checks real-time inventory availability for a specific Daiso product at nearby stores, using coordinates for proximity ranking. Use when the user wants to know if a product is in stock at a particular Daiso branch or nearby stores. Do NOT use for product search — use daiso:products first to get the product_id. Returns a list of stores with stock status and quantity.\n상품 ID와 현재 위치로 근처 매장의 재고 여부와 수량을 반환합니다.\n\n# 다이소 매장 재고 조회\n\n상품 ID와 현재 위치로 근처 매장의 재고 여부와 수량을 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__inventory","requestBody":{"content":{"application/json":{"example":{"latitude":37.5665,"longitude":126.978,"product_id":"10345678","store_query":"강남"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for checking Daiso product inventory at nearby stores","properties":{"latitude":{"default":37.5665,"description":"Current latitude for nearby store ranking","type":"number"},"longitude":{"default":126.978,"description":"Current longitude for nearby store ranking","type":"number"},"product_id":{"description":"Daiso product ID to check inventory for","minLength":1,"type":"string"},"store_query":{"default":"","description":"Store name or area keyword to filter stores","type":"string"}},"required":["product_id","store_query","latitude","longitude"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"product_id":"1041176","retrieval_status":"resolved","selected_store":{"address":"서울 강남구 강남대로 000","store_code":"10224","store_name":"강남역2호점"},"stores":[{"address":"서울 강남구 강남대로 000","in_stock":true,"inventory_label":"in_stock","quantity":4,"store_code":"10224","store_name":"강남역2호점"}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daiso product inventory status across nearby stores","properties":{"product_id":{"description":"Daiso product identifier used","type":"string"},"retrieval_status":{"description":"Whether the pickup-stock lookup was resolved or blocked","enum":["resolved","blocked","no_store","upstream_error"],"type":"string"},"selected_store":{"additionalProperties":false,"description":"Store selected for pickup-stock lookup","properties":{"address":{"description":"Selected store address","type":"string"},"store_code":{"description":"Selected Daiso store code","type":"string"},"store_name":{"description":"Selected store name","type":"string"}},"required":["store_name","store_code","address"],"type":"object"},"stores":{"description":"List of stores with inventory status for the product","items":{"additionalProperties":false,"description":"Inventory status at a single Daiso store","properties":{"address":{"description":"Store address","type":"string"},"in_stock":{"description":"Whether the product is in stock at this store","type":"boolean"},"inventory_label":{"description":"Human-readable inventory status","type":"string"},"quantity":{"description":"Available quantity in stock","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"store_code":{"description":"Daiso store code","type":"string"},"store_name":{"description":"Store name","type":"string"}},"required":["store_name","address","in_stock"],"type":"object"},"type":"array"}},"required":["product_id","retrieval_status","stores"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: Rate limit exceeded — limit to 5 RPM recommended Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — limit to 5 RPM recommended","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Daiso inventory API returned error or empty response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso inventory API returned error or empty response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"다이소 매장 재고 조회","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso inventory API returned error or empty response","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — limit to 5 RPM recommended","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"inventory","x-apifuse-operation-key":"daiso-api/inventory","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"976d45373888a5ab32ca0d4227d925cc0ceb80ea0efd81c52220af736b8a8603","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"storeCode":"강남점(00034) 명동점(00036) 홍대점(00125) 잠실점(00228) 판교점(00332)"},"x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/products":{"post":{"description":"Searches the Daiso online product catalog by keyword, returning product name, price, ID, image, and category. Use when the user wants to find specific Daiso products, check prices, or browse items by keyword. Do NOT use for checking in-store availability — use daiso:inventory instead. Returns paginated product results with optional total count.\n키워드로 다이소 상품명, 가격, 상품 ID, 이미지, 카테고리를 반환합니다.\n\n# 다이소 상품 검색\n\n키워드로 다이소 상품명, 가격, 상품 ID, 이미지, 카테고리를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__products","requestBody":{"content":{"application/json":{"example":{"page":1,"page_size":30,"query":"정리함"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Daiso products by keyword","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for pagination","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":30,"description":"Number of results per page","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Product search keyword","minLength":1,"type":"string"}},"required":["query","page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"category":"수납","image_url":"https://img.daisomall.co.kr/files/product.jpg","name":"투명 정리함","price":3000,"product_id":"10345678"}],"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daiso product search results with pagination info","properties":{"items":{"description":"List of matching products","items":{"additionalProperties":false,"description":"A single Daiso product search result","properties":{"brand":{"description":"Brand name when upstream provides one","type":"string"},"category":{"description":"Product category name","type":"string"},"delivery_available":{"description":"Whether parcel delivery ordering is available","type":"boolean"},"display_name":{"description":"Display product name when upstream provides a separate display label","type":"string"},"image_url":{"description":"Product image URL","type":"string"},"name":{"description":"Product name","type":"string"},"pickup_available":{"description":"Whether pickup ordering is available","type":"boolean"},"price":{"description":"Product price in KRW","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"product_id":{"description":"Unique product identifier","type":"string"},"sale_status_code":{"description":"Opaque upstream sale status code observed in Daiso search/detail fixtures","type":"string"},"sold_out":{"description":"Whether upstream marks the product as sold out","type":"boolean"},"source_keyword":{"description":"Search keyword/result relation text from upstream","type":"string"}},"required":["name","price","product_id"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"total":{"description":"Total number of search results","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: Rate limit exceeded — limit to 5 RPM recommended Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — limit to 5 RPM recommended","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Daiso product API returned error or empty response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso product API returned error or empty response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"다이소 상품 검색","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso product API returned error or empty response","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — limit to 5 RPM recommended","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"products","x-apifuse-operation-key":"daiso-api/products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"19baa8dad3e791009d800cf16f6feda8a5561b6b520eb279d55b2b958e1c447b","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/search_pickup_stores":{"post":{"description":"Use this operation when you need Daiso pickup-capable store candidates by keyword or nearby coordinates and want the renewed /mb/mbc/selPkupStrList endpoint response normalized with source payload coverage metadata.\n매장 코드, 이름, 주소, 거리, 영업시간, 픽업/편의시설 플래그를 반환합니다.\n\n# 다이소 매장 검색\n\n매장 코드, 이름, 주소, 거리, 영업시간, 픽업/편의시설 플래그를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__search_pickup_stores","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"keyword":"강남","page":1,"page_size":20},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for renewed Daiso fapi store search","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"keyword":{"default":"","description":"Store name or area keyword","type":"string"},"latitude":{"default":37.5665,"description":"Current latitude for nearby sorting","type":"number"},"longitude":{"default":126.978,"description":"Current longitude for nearby sorting","type":"number"},"page":{"default":1,"description":"Store search page","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Store rows per page","maximum":100,"minimum":1,"type":"integer"},"pickup_only":{"default":false,"description":"Whether to request pickup-capable stores","type":"boolean"}},"required":["keyword","latitude","longitude","page","page_size","pickup_only","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist"],"status":"complete"},"stores":[]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Renewed Daiso fapi store search response","properties":{"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"stores":{"description":"Matching Daiso stores","items":{"additionalProperties":false,"description":"Renewed Daiso fapi store row","properties":{"address":{"description":"Store address","type":"string"},"closing_time":{"description":"Closing time","type":"string"},"detail_address":{"description":"Store detail address","type":"string"},"distance_km":{"description":"Distance from caller coordinates in kilometers","type":"number"},"elevator_available":{"description":"Whether an elevator is available","type":"boolean"},"latitude":{"description":"Store latitude when upstream provides it","type":"number"},"longitude":{"description":"Store longitude when upstream provides it","type":"number"},"opening_time":{"description":"Opening time","type":"string"},"parking_available":{"description":"Whether parking is available","type":"boolean"},"phone":{"description":"Store phone number","type":"string"},"pickup_available":{"description":"Whether pickup is available","type":"boolean"},"store_code":{"description":"Daiso store code","type":"string"},"store_name":{"description":"Daiso store name","type":"string"},"use_yn":{"description":"Upstream store use flag","enum":["Y","N"],"type":"string"}},"required":["store_code","store_name"],"type":"object"},"type":"array"},"total":{"description":"Total store count when upstream provides it","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["stores","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 매장 검색","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search_pickup_stores","x-apifuse-operation-key":"daiso-api/search_pickup_stores","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"90b3abb5cc496bb8abbd8485cfea5ce0e4b027869d009714ac8b7bcae2e15445","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/search_products":{"post":{"description":"Use this operation when you need renewed Daiso Mall product discovery by keyword through the HAR-observed FindStoreGoods endpoint. It returns product name, price, ID, image, availability flags, metadata, and optional sanitized source payloads.\n키워드로 다이소 상품명, 가격, 상품 ID, 이미지, 카테고리를 반환합니다.\n\n# 다이소 상품 검색\n\n키워드로 다이소 상품명, 가격, 상품 ID, 이미지, 카테고리를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__search_products","requestBody":{"content":{"application/json":{"example":{"page":1,"page_size":30,"query":"정리함"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Daiso products by keyword","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"page":{"default":1,"description":"Page number for pagination","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":30,"description":"Number of results per page","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Product search keyword","minLength":1,"type":"string"}},"required":["query","page","page_size","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"category":"수납","image_url":"https://img.daisomall.co.kr/files/product.jpg","name":"투명 정리함","price":3000,"product_id":"10345678"}],"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daiso product search results with pagination info","properties":{"items":{"description":"List of matching products","items":{"additionalProperties":false,"description":"A single Daiso product search result","properties":{"brand":{"description":"Brand name when upstream provides one","type":"string"},"category":{"description":"Product category name","type":"string"},"delivery_available":{"description":"Whether parcel delivery ordering is available","type":"boolean"},"display_name":{"description":"Display product name when upstream provides a separate display label","type":"string"},"image_url":{"description":"Product image URL","type":"string"},"name":{"description":"Product name","type":"string"},"pickup_available":{"description":"Whether pickup ordering is available","type":"boolean"},"price":{"description":"Product price in KRW","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"product_id":{"description":"Unique product identifier","type":"string"},"sale_status_code":{"description":"Opaque upstream sale status code observed in Daiso search/detail fixtures","type":"string"},"sold_out":{"description":"Whether upstream marks the product as sold out","type":"boolean"},"source_keyword":{"description":"Search keyword/result relation text from upstream","type":"string"}},"required":["name","price","product_id"],"type":"object"},"type":"array"},"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"total":{"description":"Total number of search results","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: Rate limit exceeded — limit to 5 RPM recommended Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — limit to 5 RPM recommended","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Daiso product API returned error or empty response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso product API returned error or empty response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"다이소 상품 검색","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso product API returned error or empty response","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — limit to 5 RPM recommended","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search_products","x-apifuse-operation-key":"daiso-api/search_products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"19baa8dad3e791009d800cf16f6feda8a5561b6b520eb279d55b2b958e1c447b","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/search_stores":{"post":{"description":"Use this operation when you need Daiso stores from the renewed fapi /ms/msg/selStr endpoint and want store_code, pickup flags, distance, hours, facility fields, and source-aware metadata instead of the legacy HTML-backed daiso:stores path.\n매장 코드, 이름, 주소, 거리, 영업시간, 픽업/편의시설 플래그를 반환합니다.\n\n# 다이소 매장 검색\n\n매장 코드, 이름, 주소, 거리, 영업시간, 픽업/편의시설 플래그를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__search_stores","requestBody":{"content":{"application/json":{"example":{"include_source_payloads":false,"keyword":"강남","latitude":37.5665,"longitude":126.978,"page":1,"page_size":20},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for renewed Daiso fapi store search","properties":{"include_source_payloads":{"default":false,"description":"Whether to include sanitized upstream source_payloads for no-field-loss/debugging","type":"boolean"},"keyword":{"default":"","description":"Store name or area keyword","type":"string"},"latitude":{"default":37.5665,"description":"Current latitude for nearby sorting","type":"number"},"longitude":{"default":126.978,"description":"Current longitude for nearby sorting","type":"number"},"page":{"default":1,"description":"Store search page","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":20,"description":"Store rows per page","maximum":100,"minimum":1,"type":"integer"},"pickup_only":{"default":false,"description":"Whether to request pickup-capable stores","type":"boolean"}},"required":["keyword","latitude","longitude","page","page_size","pickup_only","include_source_payloads"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"meta":{"failed_endpoints":[],"optional_endpoint_ids":[],"required_endpoint_ids":["post_fapi_daisomall_co_kr_ms_msg_selstr"],"status":"complete"},"stores":[{"address":"서울특별시 서초구 서초중앙로 36","pickup_available":true,"store_code":"10433","store_name":"남부터미널점"}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"anyOf":[{"description":"JSON string value","type":"string"},{"description":"JSON numeric value","type":"number"},{"description":"JSON boolean value","type":"boolean"},{"description":"JSON null value","type":"null"},{"description":"JSON array value","items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"JSON object value","propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Renewed Daiso fapi store search response","properties":{"meta":{"additionalProperties":false,"description":"Endpoint coverage and partial-failure metadata","properties":{"failed_endpoints":{"description":"Endpoint branches that failed or were degraded","items":{"additionalProperties":false,"description":"Failure details for one endpoint branch in a grouped Daiso operation","properties":{"code":{"description":"Stable failure code","enum":["UPSTREAM_HTTP_ERROR","UPSTREAM_SCHEMA_CHANGED","BLOCKED","OPTIONAL_ENDPOINT_FAILED","AUTH_BOOTSTRAP_FAILED"],"type":"string"},"endpoint_id":{"description":"Failed observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"message":{"description":"Human-readable failure summary","minLength":1,"type":"string"},"required":{"description":"Whether this failed branch was required for the grouped operation","type":"boolean"},"status":{"description":"Upstream HTTP status when available","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","code","message","required"],"type":"object"},"type":"array"},"optional_endpoint_ids":{"description":"Optional endpoint ids attempted for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"required_endpoint_ids":{"description":"Required endpoint ids for this grouped operation","items":{"description":"Observed Daiso HAR endpoint id preserved in providers/daiso/__fixtures__/har-evidence/endpoint-manifest.json","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"type":"array"},"status":{"description":"Overall grouped operation status","enum":["complete","partial","degraded","blocked","no_data"],"type":"string"}},"required":["status","required_endpoint_ids","optional_endpoint_ids","failed_endpoints"],"type":"object"},"source_payloads":{"description":"Sanitized upstream payloads when include_source_payloads is true","items":{"additionalProperties":false,"description":"Optional sanitized upstream source payload for evidence and debugging, not a stable business contract","properties":{"endpoint_id":{"description":"Observed HAR endpoint id","enum":["post_fapi_daisomall_co_kr_ai_review_selaireviewkeyword","post_fapi_daisomall_co_kr_ai_review_selaireviewrecommendlist","post_fapi_daisomall_co_kr_ai_review_selaireviewsummary","get_fapi_daisomall_co_kr_auth_request","post_fapi_daisomall_co_kr_cmmn_selcmmncd","post_fapi_daisomall_co_kr_common_dla_api_seldlvparmdtall","get_fapi_daisomall_co_kr_dl_dla_api_selstrinfo","post_fapi_daisomall_co_kr_dl_dlp_api_seldlvcpkupplcyinfo","post_fapi_daisomall_co_kr_ds_brand","post_fapi_daisomall_co_kr_ds_cnr_selcnrlist","post_fapi_daisomall_co_kr_ds_ctgr","post_fapi_daisomall_co_kr_ds_dsl_selrcmkeywd","post_fapi_daisomall_co_kr_ds_exh_selbanr","post_fapi_daisomall_co_kr_ds_exh_selplaceholder","post_fapi_daisomall_co_kr_ds_recommend_dtlwith","post_fapi_daisomall_co_kr_ev_evb_selpddwldpsbcpnlist","post_fapi_daisomall_co_kr_ev_evf_selcustbnfinfo","post_fapi_daisomall_co_kr_mb_mbb_getmbinfobytoken","post_fapi_daisomall_co_kr_mb_mbc_selpkupstrlist","post_fapi_daisomall_co_kr_ms_msg_selgeolocationagryn","post_fapi_daisomall_co_kr_ms_msg_selstr","post_fapi_daisomall_co_kr_ms_msg_selstrsrchkeyword","post_fapi_daisomall_co_kr_pd_pdh_selstrpkupstck","post_fapi_daisomall_co_kr_pd_pdr_pddtl_blux_rcm_prs","post_fapi_daisomall_co_kr_pd_pdr_pddtl_recommend_goodrevwpd","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpdattr","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtldesc","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlinfo","post_fapi_daisomall_co_kr_pd_pdr_pddtl_selpddtlntfc","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwattr","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwctts","post_fapi_daisomall_co_kr_pd_pds_revw_selrevwlist","post_fapi_daisomall_co_kr_pdo_pdoptrevwcnt","post_fapi_daisomall_co_kr_pdo_pdthumbcompact","post_fapi_daisomall_co_kr_pdo_selintpdstdispinfo","post_www_daisomall_co_kr_api_cmmn_selcmmncd","post_www_daisomall_co_kr_api_ds_ctgr","post_www_daisomall_co_kr_api_ds_exh_selbanr","post_www_daisomall_co_kr_api_ds_exh_selexh","get_www_daisomall_co_kr_api_ds_holiday_deliveryinfo","post_www_daisomall_co_kr_api_ms_msg_selstrsrchkeyword","get_www_daisomall_co_kr_ssn_search_findstoregoods","get_www_daisomall_co_kr_ssn_search_goodsbestbrand","get_www_daisomall_co_kr_ssn_search_goodscategorysmall","get_www_daisomall_co_kr_ssn_search_goodstogether","get_www_daisomall_co_kr_ssn_search_trendsearch"],"type":"string"},"host":{"description":"Daiso upstream host","enum":["fapi.daisomall.co.kr","www.daisomall.co.kr"],"type":"string"},"json_pointers":{"description":"JSON pointers preserved from the sanitized payload for no-field-loss audits","items":{"type":"string"},"type":"array"},"method":{"description":"HTTP method used for the upstream call","enum":["GET","POST"],"type":"string"},"path":{"description":"Daiso upstream path","minLength":1,"type":"string"},"payload":{"$ref":"#/$defs/__schema0","description":"Sanitized upstream JSON payload. Open-world by design because Daiso response objects are undocumented and endpoint-specific; stable normalized fields are exposed separately."},"status":{"description":"HTTP status returned by upstream","maximum":599,"minimum":100,"type":"integer"}},"required":["endpoint_id","method","host","path","payload","json_pointers"],"type":"object"},"type":"array"},"stores":{"description":"Matching Daiso stores","items":{"additionalProperties":false,"description":"Renewed Daiso fapi store row","properties":{"address":{"description":"Store address","type":"string"},"closing_time":{"description":"Closing time","type":"string"},"detail_address":{"description":"Store detail address","type":"string"},"distance_km":{"description":"Distance from caller coordinates in kilometers","type":"number"},"elevator_available":{"description":"Whether an elevator is available","type":"boolean"},"latitude":{"description":"Store latitude when upstream provides it","type":"number"},"longitude":{"description":"Store longitude when upstream provides it","type":"number"},"opening_time":{"description":"Opening time","type":"string"},"parking_available":{"description":"Whether parking is available","type":"boolean"},"phone":{"description":"Store phone number","type":"string"},"pickup_available":{"description":"Whether pickup is available","type":"boolean"},"store_code":{"description":"Daiso store code","type":"string"},"store_name":{"description":"Daiso store name","type":"string"},"use_yn":{"description":"Upstream store use flag","enum":["Y","N"],"type":"string"}},"required":["store_code","store_name"],"type":"object"},"type":"array"},"total":{"description":"Total store count when upstream provides it","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["stores","meta"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"다이소 매장 검색","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search_stores","x-apifuse-operation-key":"daiso-api/search_stores","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"90b3abb5cc496bb8abbd8485cfea5ce0e4b027869d009714ac8b7bcae2e15445","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/daiso-api/stores":{"post":{"description":"Searches for Daiso store locations by keyword, province, district, or neighborhood in South Korea. Use when the user wants to find nearby Daiso stores or locate a specific branch by name or area. Do NOT use for product search or inventory — use daiso:products or daiso:inventory instead. Returns store name, address, phone number, and coordinates for each matching location.\n키워드나 시도/구군/동으로 다이소 매장 이름, 주소, 전화번호, 좌표를 반환합니다.\n\n# 다이소 매장 찾기\n\n키워드나 시도/구군/동으로 다이소 매장 이름, 주소, 전화번호, 좌표를 반환합니다.\n\n## Normalization notes\n\n- 상품, 매장, 재고 응답을 operation별로 분리된 배열/객체 구조로 정리합니다.\n- 재고 수량과 보유 여부를 명시적 숫자/boolean 필드로 변환합니다.\n- 매장 검색 결과는 이름, 주소, 좌표, 연락처 중심의 일관된 필드명으로 정규화합니다.","operationId":"daiso-api__stores","requestBody":{"content":{"application/json":{"example":{"dong":"","gugun":"강남구","keyword":"강남","limit":50,"sido":"서울"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Daiso store locations","properties":{"dong":{"default":"","description":"Neighborhood or dong name","type":"string"},"gugun":{"default":"","description":"District or county name","type":"string"},"keyword":{"default":"","description":"Store name or address keyword","type":"string"},"limit":{"default":50,"description":"Maximum number of results to return","maximum":100,"minimum":1,"type":"integer"},"sido":{"default":"","description":"Province or metropolitan city name","type":"string"}},"required":["keyword","sido","gugun","dong","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"stores":[{"address":"서울 강남구 강남대로 000","lat":37.4979,"lng":127.0276,"name":"다이소 강남점","phone":"0212345678"}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"daiso-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Daiso store search results","properties":{"stores":{"description":"List of matching Daiso stores","items":{"additionalProperties":false,"description":"A single Daiso store location","properties":{"address":{"description":"Store address","type":"string"},"lat":{"description":"Store latitude in WGS84","type":"number"},"lng":{"description":"Store longitude in WGS84","type":"number"},"name":{"description":"Store name","type":"string"},"phone":{"description":"Store phone number","type":"string"}},"required":["name","address"],"type":"object"},"type":"array"}},"required":["stores"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: Rate limit exceeded — Daiso is a web scraping target, limit to 5 RPM Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — Daiso is a web scraping target, limit to 5 RPM","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Daiso website returned non-HTML or error response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso website returned non-HTML or error response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"다이소 매장 찾기","tags":["daiso-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"다이소 상품 및 매장 데이터","id":"daiso-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Daiso website returned non-HTML or error response","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — Daiso is a web scraping target, limit to 5 RPM","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"stores","x-apifuse-operation-key":"daiso-api/stores","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"daiso-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"3f6b9b75fb940fcfd65d93ccbce315f9a74b1aac78025ceaa9f2b756258af152","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"gugun":"강남구(강남구) 서초구(서초구) 종로구(종로구) 마포구(마포구) 영등포구(영등포구) 송파구(송파구) 용산구(용산구) 성동구(성동구) 광진구(광진구) 중구(중구)","sido":"서울(서울) 경기(경기) 인천(인천) 부산(부산) 대구(대구) 대전(대전) 광주(광주) 울산(울산) 세종(세종) 강원(강원) 충북(충북) 충남(충남) 전북(전북) 전남(전남) 경북(경북) 경남(경남) 제주(제주)"},"x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/danawa-price/compare-products":{"post":{"description":"Use when a tenant wants a compact Danawa price comparison from a keyword in one read-only call. It searches public product candidates, enriches top products with mall offer rows, preserves payment-condition signals, and returns source URLs for diagnosing upstream changes.\nNormalizes product candidates and offer rows with shipping/card/conditional pricing labels.\n\n# Danawa price comparison Compare Products\n\nNormalizes product candidates and offer rows with shipping/card/conditional pricing labels.\n\n## Normalization notes\n\n- Conditional price badges are preserved.\n- Shipping is included in total_price when available.","operationId":"danawa-price__compare_products","requestBody":{"content":{"application/json":{"example":{"offers_per_product":2,"product_limit":1,"query":"맥북"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Danawa and enriching top products with offers","properties":{"offers_per_product":{"default":5,"description":"Maximum number of offer rows to return per product","maximum":10,"minimum":1,"type":"integer"},"product_limit":{"default":3,"description":"Maximum number of search candidates to enrich with offers","maximum":5,"minimum":1,"type":"integer"},"query":{"description":"Danawa product search keyword","minLength":1,"type":"string"}},"required":["query","product_limit","offers_per_product"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"products":[{"offers":[{"is_conditional_price":false,"mall":"샘플몰","payment_condition_types":[],"price":1000000}],"product":{"pcode":"99126182","title":"Apple MacBook"}}],"query":"맥북","source_url":"https://search.danawa.com/dsearch.php?query=%EB%A7%A5%EB%B6%81"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"danawa-price"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Danawa search plus offer comparison result envelope","properties":{"products":{"description":"Danawa comparison rows","items":{"additionalProperties":false,"description":"A product candidate and its offer rows","properties":{"offers":{"description":"Offer rows fetched for this product candidate","items":{"additionalProperties":false,"description":"A normalized Danawa mall offer row","properties":{"card_price":{"description":"Card-specific price in KRW when Danawa marks one","type":"number"},"is_conditional_price":{"description":"Whether the offer price depends on a card, cash, coupon, point, membership, or similar condition","type":"boolean"},"mall":{"description":"Selling mall name as displayed by Danawa","type":"string"},"payment_condition_label":{"description":"Comma-separated condition labels such as card, coupon, cash, or point","type":"string"},"payment_condition_types":{"default":[],"description":"Normalized payment condition types","items":{"description":"Normalized payment condition type","type":"string"},"type":"array"},"price":{"description":"Base offer price in KRW when parsed","type":"number"},"shipping_fee":{"description":"Shipping fee in KRW; zero means free shipping when detected","type":"number"},"total_price":{"description":"Price plus shipping fee when enough data is available","type":"number"},"url":{"description":"Mall or offer URL when present in the upstream row","type":"string"}},"required":["mall","payment_condition_types","is_conditional_price"],"type":"object"},"type":"array"},"product":{"additionalProperties":false,"description":"Danawa product candidate included in the comparison","properties":{"image_url":{"description":"Product image URL when exposed in the search result","type":"string"},"pcode":{"description":"Danawa product code when the search result exposes one","type":"string"},"price":{"description":"Representative product price in KRW when parsed","type":"number"},"title":{"description":"Danawa product title","type":"string"},"url":{"description":"Public Danawa product detail URL when a pcode is available","type":"string"}},"required":["title"],"type":"object"}},"required":["product","offers"],"type":"object"},"type":"array"},"query":{"description":"Echoed Danawa product search keyword","type":"string"},"source_url":{"description":"Upstream Danawa search URL used for the request","type":"string"}},"required":["query","products","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Danawa price comparison Compare Products","tags":["danawa-price"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Danawa price comparison","id":"danawa-price"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"compare-products","x-apifuse-operation-key":"danawa-price/compare-products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"danawa-price","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"9db202754a90a8205eadc3d86e1b47cedbd194b941a064017712b19c04a191d1","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":3,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/danawa-price/get-offers":{"post":{"description":"Use when a tenant already has a Danawa pcode and needs read-only mall offer rows from the public price-comparison AJAX surface. It extracts seller names, base price, shipping, total price, card price, conditional payment labels, and source evidence without logging in.\nNormalizes product candidates and offer rows with shipping/card/conditional pricing labels.\n\n# Danawa price comparison Get Offers\n\nNormalizes product candidates and offer rows with shipping/card/conditional pricing labels.\n\n## Normalization notes\n\n- Conditional price badges are preserved.\n- Shipping is included in total_price when available.","operationId":"danawa-price__get_offers","requestBody":{"content":{"application/json":{"example":{"limit":3,"pcode":"99126182"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching Danawa mall offer rows","properties":{"limit":{"default":10,"description":"Maximum number of mall offer rows to return","maximum":50,"minimum":1,"type":"integer"},"pcode":{"description":"Danawa product code from search results","minLength":1,"type":"string"}},"required":["pcode","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"offers":[{"is_conditional_price":false,"mall":"샘플몰","payment_condition_types":[],"price":1000000,"shipping_fee":0,"total_price":1000000}],"pcode":"99126182","source_url":"https://prod.danawa.com/info/ajax/getAllPriceCompareMallList.ajax.php"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"danawa-price"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Danawa offer list result envelope","properties":{"offers":{"description":"Normalized Danawa mall offer rows","items":{"additionalProperties":false,"description":"A normalized Danawa mall offer row","properties":{"card_price":{"description":"Card-specific price in KRW when Danawa marks one","type":"number"},"is_conditional_price":{"description":"Whether the offer price depends on a card, cash, coupon, point, membership, or similar condition","type":"boolean"},"mall":{"description":"Selling mall name as displayed by Danawa","type":"string"},"payment_condition_label":{"description":"Comma-separated condition labels such as card, coupon, cash, or point","type":"string"},"payment_condition_types":{"default":[],"description":"Normalized payment condition types","items":{"description":"Normalized payment condition type","type":"string"},"type":"array"},"price":{"description":"Base offer price in KRW when parsed","type":"number"},"shipping_fee":{"description":"Shipping fee in KRW; zero means free shipping when detected","type":"number"},"total_price":{"description":"Price plus shipping fee when enough data is available","type":"number"},"url":{"description":"Mall or offer URL when present in the upstream row","type":"string"}},"required":["mall","payment_condition_types","is_conditional_price"],"type":"object"},"type":"array"},"pcode":{"description":"Echoed Danawa product code","type":"string"},"source_url":{"description":"Upstream Danawa offer AJAX URL used for the request","type":"string"}},"required":["pcode","offers","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Danawa price comparison Get Offers","tags":["danawa-price"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Danawa price comparison","id":"danawa-price"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get-offers","x-apifuse-operation-key":"danawa-price/get-offers","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"danawa-price","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"92c3d9bd9d6e2680bab202f95d733e09f012f28f492f09dd72123c0f343a1aa5","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/danawa-price/search-products":{"post":{"description":"Use when a tenant needs read-only Danawa product candidates from public search results for a Korean keyword. It parses visible HTML, extracts product code, title, representative price, image, and product URL when available, and returns the upstream source URL for audit.\nNormalizes product candidates and offer rows with shipping/card/conditional pricing labels.\n\n# Danawa price comparison Search Products\n\nNormalizes product candidates and offer rows with shipping/card/conditional pricing labels.\n\n## Normalization notes\n\n- Conditional price badges are preserved.\n- Shipping is included in total_price when available.","operationId":"danawa-price__search_products","requestBody":{"content":{"application/json":{"example":{"limit":3,"query":"맥북"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Danawa public product results","properties":{"limit":{"default":10,"description":"Maximum number of product candidates to return","maximum":20,"minimum":1,"type":"integer"},"query":{"description":"Danawa product search keyword","minLength":1,"type":"string"}},"required":["query","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"pcode":"99126182","price":1000000,"title":"Apple MacBook","url":"https://prod.danawa.com/info/?pcode=99126182"}],"query":"맥북","source_url":"https://search.danawa.com/dsearch.php?query=%EB%A7%A5%EB%B6%81"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"danawa-price"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Danawa product search result envelope","properties":{"items":{"description":"Normalized Danawa product candidates","items":{"additionalProperties":false,"description":"A normalized Danawa product candidate","properties":{"image_url":{"description":"Product image URL when exposed in the search result","type":"string"},"pcode":{"description":"Danawa product code when the search result exposes one","type":"string"},"price":{"description":"Representative product price in KRW when parsed","type":"number"},"title":{"description":"Danawa product title","type":"string"},"url":{"description":"Public Danawa product detail URL when a pcode is available","type":"string"}},"required":["title"],"type":"object"},"type":"array"},"query":{"description":"Echoed Danawa product search keyword","type":"string"},"source_url":{"description":"Upstream Danawa search URL used for the request","type":"string"}},"required":["query","items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Danawa price comparison Search Products","tags":["danawa-price"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Danawa price comparison","id":"danawa-price"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search-products","x-apifuse-operation-key":"danawa-price/search-products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"danawa-price","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"252a8b7d1a321b81e33c3692a8613ae30d54f9690c23a5b565813c46de5dac8f","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/delivery-api/carriers":{"post":{"description":"Lists all supported Korean delivery carriers with their IDs and names. Use when the user needs to know which carriers are available or wants to look up a carrier ID before tracking. Do NOT use for tracking a specific parcel — use delivery:status or delivery:track instead. Returns an array of carrier objects with carrier_id, name, and country code.\nCJ대한통운, 한진, 롯데, 우체국, 로젠 5개 택배사의 ID와 이름을 반환합니다.\n\n# 택배사 목록 조회\n\nCJ대한통운, 한진, 롯데, 우체국, 로젠 5개 택배사의 ID와 이름을 반환합니다.\n\n## Normalization notes\n\n- 택배사 메타데이터와 이벤트 히스토리를 provider 공통 스키마로 통일합니다.\n- 최신 상태 조회는 전체 이력에서 핵심 상태와 마지막 이벤트만 추려 빠르게 사용할 수 있게 합니다.\n- 시간, 위치, 상태 필드를 downstream에서 바로 사용할 수 있는 명시적 구조로 유지합니다.","operationId":"delivery-api__carriers","requestBody":{"content":{"application/json":{"example":{},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for listing supported delivery carriers","properties":{"country_code":{"description":"Lowercase ISO 3166-1 alpha-2 country code filter such as kr","pattern":"^[a-z]{2}$","type":"string"}},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"example":{"data":{"carriers":[{"carrier_id":"kr.cjlogistics","country":"kr","name":"CJ대한통운"},{"carrier_id":"kr.hanjin","country":"kr","name":"한진택배"},{"carrier_id":"kr.lotte","country":"kr","name":"롯데택배"},{"carrier_id":"kr.epost","country":"kr","name":"우체국택배"},{"carrier_id":"kr.logen","country":"kr","name":"로젠택배"}],"total":5},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"delivery-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"List of supported delivery carriers with total count","properties":{"carriers":{"description":"List of supported delivery carriers","items":{"additionalProperties":false,"description":"A single supported delivery carrier","properties":{"carrier_id":{"description":"Unique carrier identifier such as kr.cjlogistics","type":"string"},"country":{"description":"Lowercase ISO 3166-1 alpha-2 country code of the carrier","pattern":"^[a-z]{2}$","type":"string"},"name":{"description":"Carrier display name in Korean","type":"string"}},"required":["carrier_id","name","country"],"type":"object"},"type":"array"},"total":{"description":"Total number of carriers returned","type":"number"}},"required":["carriers","total"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"택배사 목록 조회","tags":["delivery-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"택배사 목록 및 배송 추적","id":"delivery-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"carriers","x-apifuse-operation-key":"delivery-api/carriers","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"delivery-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"52d4041e419338d87c89d35e7da17cafc68a4cafdfb8d5989523401fe8a1ab68","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/delivery-api/status":{"post":{"description":"Retrieves the current delivery status and most recent tracking event for a parcel identified by carrier ID and tracking number. Use when the user wants a quick status check on a package without the full history. Do NOT use for full event history — use delivery:track instead. Returns carrier info, current status code/text, and the latest event with time, location, and description.\n전체 히스토리 없이 현재 배송 상태와 마지막 이벤트만 빠르게 반환합니다.\n\n# 택배 최신 배송 상태\n\n전체 히스토리 없이 현재 배송 상태와 마지막 이벤트만 빠르게 반환합니다.\n\n## Normalization notes\n\n- 택배사 메타데이터와 이벤트 히스토리를 provider 공통 스키마로 통일합니다.\n- 최신 상태 조회는 전체 이력에서 핵심 상태와 마지막 이벤트만 추려 빠르게 사용할 수 있게 합니다.\n- 시간, 위치, 상태 필드를 downstream에서 바로 사용할 수 있는 명시적 구조로 유지합니다.","operationId":"delivery-api__status","requestBody":{"content":{"application/json":{"example":{"carrier_id":"kr.cjlogistics","tracking_number":"1234567890"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for tracking a parcel by carrier and tracking number","properties":{"carrier_id":{"description":"Carrier ID such as kr.cjlogistics or kr.hanjin","type":"string"},"tracking_number":{"description":"Parcel tracking number (운송장 번호)","type":"string"}},"required":["carrier_id","tracking_number"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"carrier":{"id":"kr.cjlogistics","name":"CJ대한통운"},"latest_event":{"description":"배달완료","location":{"name":"강남구"},"status":{"id":"DELIVERED","text":"배달완료"},"time":"2026-03-24T14:00:00+09:00"},"status":{"id":"DELIVERED","text":"배달완료"},"tracking_number":"1234567890"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"delivery-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Current delivery status with the latest event only","properties":{"carrier":{"additionalProperties":false,"description":"Carrier that handles this parcel","properties":{"id":{"description":"Carrier identifier","type":"string"},"name":{"description":"Carrier display name in Korean","type":"string"}},"required":["id","name"],"type":"object"},"latest_event":{"anyOf":[{"additionalProperties":false,"description":"Most recent tracking event","properties":{"description":{"anyOf":[{"description":"Event description text","type":"string"},{"type":"null"}],"description":"Event description text or null"},"location":{"anyOf":[{"additionalProperties":false,"description":"Location where the event occurred","properties":{"name":{"anyOf":[{"description":"Location name","type":"string"},{"type":"null"}],"description":"Location name or null if unknown"}},"required":["name"],"type":"object"},{"type":"null"}],"description":"Location where the event occurred or null"},"status":{"additionalProperties":false,"description":"Delivery status at this event","properties":{"id":{"description":"Machine-readable status code","enum":["UNKNOWN","INFORMATION_RECEIVED","AT_PICKUP","IN_TRANSIT","OUT_FOR_DELIVERY","ATTEMPT_FAIL","DELIVERED","AVAILABLE_FOR_PICKUP","EXCEPTION"],"type":"string"},"text":{"description":"Human-readable status text in Korean","type":"string"}},"required":["id","text"],"type":"object"},"time":{"description":"Event timestamp in ISO 8601 KST format","type":"string"}},"required":["time","status","location","description"],"type":"object"},{"type":"null"}],"description":"Most recent tracking event or null if none"},"status":{"additionalProperties":false,"description":"Current overall delivery status","properties":{"id":{"description":"Machine-readable status code","enum":["UNKNOWN","INFORMATION_RECEIVED","AT_PICKUP","IN_TRANSIT","OUT_FOR_DELIVERY","ATTEMPT_FAIL","DELIVERED","AVAILABLE_FOR_PICKUP","EXCEPTION"],"type":"string"},"text":{"description":"Human-readable status text in Korean","type":"string"}},"required":["id","text"],"type":"object"},"tracking_number":{"description":"Parcel tracking number","type":"string"}},"required":["carrier","tracking_number","status","latest_event"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"UNSUPPORTED_CARRIER: Carrier ID not in the supported list — call delivery:carriers first","x-apifuse-error-code":"UNSUPPORTED_CARRIER","x-apifuse-error-codes":[{"code":"UNSUPPORTED_CARRIER","description":"Carrier ID not in the supported list — call delivery:carriers first","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"not_found: Tracking number not found at the specified carrier","x-apifuse-error-code":"not_found","x-apifuse-error-codes":[{"code":"not_found","description":"Tracking number not found at the specified carrier","retryable":false,"status":404}],"x-apifuse-retryable":false},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Carrier website returned an error or is temporarily unavailable Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Carrier website returned an error or is temporarily unavailable","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"택배 최신 배송 상태","tags":["delivery-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"택배사 목록 및 배송 추적","id":"delivery-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"not_found","description":"Tracking number not found at the specified carrier","retryable":false,"status":404},{"code":"UNSUPPORTED_CARRIER","description":"Carrier ID not in the supported list — call delivery:carriers first","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"Carrier website returned an error or is temporarily unavailable","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"status","x-apifuse-operation-key":"delivery-api/status","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"delivery-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"72c3a6a018fecf8e4f996f258f69ae9cbb75cbf767c12006502b5c9b1a970fa5","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"carrier_id":"CJ대한통운(kr.cjlogistics) 한진택배(kr.hanjin) 롯데택배(kr.lotte) 우체국택배(kr.epost) 로젠택배(kr.logen) 대신택배(kr.daesin) 경동택배(kr.kyungdong) GSpostbox(kr.cvsnet)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/delivery-api/track":{"post":{"description":"Retrieves the full delivery tracking history for a parcel identified by carrier ID and tracking number, including all transit events. Use when the user wants to see every step of the delivery journey from pickup to delivery. Do NOT use for a quick status check — use delivery:status instead. Returns carrier info, current status, and a chronological list of events with timestamps, locations, and descriptions.\n운송장 번호로 배송의 전체 이벤트 목록(시각, 상태, 위치)을 반환합니다.\n\n# 택배 배송 추적 (전체 이벤트)\n\n운송장 번호로 배송의 전체 이벤트 목록(시각, 상태, 위치)을 반환합니다.\n\n## Normalization notes\n\n- 택배사 메타데이터와 이벤트 히스토리를 provider 공통 스키마로 통일합니다.\n- 최신 상태 조회는 전체 이력에서 핵심 상태와 마지막 이벤트만 추려 빠르게 사용할 수 있게 합니다.\n- 시간, 위치, 상태 필드를 downstream에서 바로 사용할 수 있는 명시적 구조로 유지합니다.","operationId":"delivery-api__track","requestBody":{"content":{"application/json":{"example":{"carrier_id":"kr.cjlogistics","tracking_number":"1234567890"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for tracking a parcel by carrier and tracking number","properties":{"carrier_id":{"description":"Carrier ID such as kr.cjlogistics or kr.hanjin","type":"string"},"tracking_number":{"description":"Parcel tracking number (운송장 번호)","type":"string"}},"required":["carrier_id","tracking_number"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"carrier":{"id":"kr.cjlogistics","name":"CJ대한통운"},"events":[{"description":"집화처리","location":{"name":"서울물류센터"},"status":{"id":"IN_TRANSIT","text":"이동중"},"time":"2026-03-24T10:00:00+09:00"},{"description":"배달완료","location":{"name":"강남구"},"status":{"id":"DELIVERED","text":"배달완료"},"time":"2026-03-24T14:00:00+09:00"}],"status":{"id":"DELIVERED","text":"배달완료"},"tracking_number":"1234567890"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"delivery-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Full delivery tracking history with all events","properties":{"carrier":{"additionalProperties":false,"description":"Carrier that handles this parcel","properties":{"id":{"description":"Carrier identifier","type":"string"},"name":{"description":"Carrier display name in Korean","type":"string"}},"required":["id","name"],"type":"object"},"events":{"description":"Chronological list of tracking events","items":{"additionalProperties":false,"description":"A single delivery tracking event","properties":{"description":{"anyOf":[{"description":"Event description text","type":"string"},{"type":"null"}],"description":"Event description text or null"},"location":{"anyOf":[{"additionalProperties":false,"description":"Location where the event occurred","properties":{"name":{"anyOf":[{"description":"Location name","type":"string"},{"type":"null"}],"description":"Location name or null if unknown"}},"required":["name"],"type":"object"},{"type":"null"}],"description":"Location where the event occurred or null"},"status":{"additionalProperties":false,"description":"Delivery status at this event","properties":{"id":{"description":"Machine-readable status code","enum":["UNKNOWN","INFORMATION_RECEIVED","AT_PICKUP","IN_TRANSIT","OUT_FOR_DELIVERY","ATTEMPT_FAIL","DELIVERED","AVAILABLE_FOR_PICKUP","EXCEPTION"],"type":"string"},"text":{"description":"Human-readable status text in Korean","type":"string"}},"required":["id","text"],"type":"object"},"time":{"description":"Event timestamp in ISO 8601 KST format","type":"string"}},"required":["time","status","location","description"],"type":"object"},"type":"array"},"status":{"additionalProperties":false,"description":"Current overall delivery status","properties":{"id":{"description":"Machine-readable status code","enum":["UNKNOWN","INFORMATION_RECEIVED","AT_PICKUP","IN_TRANSIT","OUT_FOR_DELIVERY","ATTEMPT_FAIL","DELIVERED","AVAILABLE_FOR_PICKUP","EXCEPTION"],"type":"string"},"text":{"description":"Human-readable status text in Korean","type":"string"}},"required":["id","text"],"type":"object"},"tracking_number":{"description":"Parcel tracking number","type":"string"}},"required":["carrier","tracking_number","status","events"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"UNSUPPORTED_CARRIER: Carrier ID not in the supported list — call delivery:carriers first","x-apifuse-error-code":"UNSUPPORTED_CARRIER","x-apifuse-error-codes":[{"code":"UNSUPPORTED_CARRIER","description":"Carrier ID not in the supported list — call delivery:carriers first","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"not_found: Tracking number not found at the specified carrier","x-apifuse-error-code":"not_found","x-apifuse-error-codes":[{"code":"not_found","description":"Tracking number not found at the specified carrier","retryable":false,"status":404}],"x-apifuse-retryable":false},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Carrier website returned an error or is temporarily unavailable Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Carrier website returned an error or is temporarily unavailable","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"택배 배송 추적 (전체 이벤트)","tags":["delivery-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"택배사 목록 및 배송 추적","id":"delivery-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"not_found","description":"Tracking number not found at the specified carrier","retryable":false,"status":404},{"code":"UNSUPPORTED_CARRIER","description":"Carrier ID not in the supported list — call delivery:carriers first","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"Carrier website returned an error or is temporarily unavailable","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"track","x-apifuse-operation-key":"delivery-api/track","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"delivery-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"007f3777c1e784c4c077693b9cbf11450a9b76ec3739fbdd85fc5a8778ec0174","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"carrier_id":"CJ대한통운(kr.cjlogistics) 한진택배(kr.hanjin) 롯데택배(kr.lotte) 우체국택배(kr.epost) 로젠택배(kr.logen) 대신택배(kr.daesin) 경동택배(kr.kyungdong) GSpostbox(kr.cvsnet)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/bicycle-directions":{"post":{"description":"Calculates bicycle directions between two coordinate points via KakaoMap, returning distance and estimated cycling time. Use when the user asks how to cycle between two locations or wants bike route distance and time. Do NOT use for driving, walking, or transit routes — use the corresponding kakaomap direction operations. Returns distance in meters and duration in seconds. Coordinates can be obtained via kakaomap:geocode.\n자전거 경로의 거리(m)와 소요시간(초)을 반환합니다. 평균 속도로 slow/moderate/fast 옵션 지정 가능.\n\n# 카카오맵 자전거 길찾기\n\n자전거 경로의 거리(m)와 소요시간(초)을 반환합니다. 평균 속도로 slow/moderate/fast 옵션 지정 가능.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__bicycle_directions","requestBody":{"content":{"application/json":{"example":{"dest_lat":37.566295,"dest_lng":126.977945,"origin_lat":37.570377,"origin_lng":126.976804,"speed":18},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for bicycle directions between two coordinates","properties":{"dest_lat":{"description":"Destination latitude in WGS84","type":"number"},"dest_lng":{"description":"Destination longitude in WGS84","type":"number"},"origin_lat":{"description":"Origin latitude in WGS84","type":"number"},"origin_lng":{"description":"Origin longitude in WGS84","type":"number"},"speed":{"description":"Average cycling speed in km/h","exclusiveMinimum":0,"type":"number"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"distance_m":1650,"duration_sec":420},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Walking route summary with distance and duration","properties":{"distance_m":{"description":"Total walking distance in meters","type":"number"},"duration_sec":{"description":"Estimated walking time in seconds","type":"number"}},"required":["distance_m","duration_sec"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 자전거 길찾기","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"bicycle-directions","x-apifuse-operation-key":"kakaomap-api/bicycle-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"ad466a0b81a61d651a507ee28e76a20bc741cfcc2c7e2b93a58c9a411de9c515","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"dest_lat,dest_lng":"Obtain via kakaomap:geocode from an address or place name","origin_lat,origin_lng":"Obtain via kakaomap:geocode from an address or place name"},"x-hints":{"dest_lat,dest_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)","origin_lat,origin_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)"},"x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/car-directions":{"post":{"description":"Calculates car driving directions between two coordinate points via KakaoMap, returning distance, estimated duration, and fare. Use when the user asks how to drive between two locations or wants driving time and distance. Do NOT use for walking, cycling, or transit — use the corresponding kakaomap direction operations. Returns distance in meters, duration in seconds, and optional taxi/toll fare in KRW. Coordinates can be obtained via kakaomap:geocode.\n출발지·목적지 좌표로 자동차 경로의 거리(m), 소요시간(초), 예상 요금을 반환합니다.\n\n# 카카오맵 자동차 길찾기\n\n출발지·목적지 좌표로 자동차 경로의 거리(m), 소요시간(초), 예상 요금을 반환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__car_directions","requestBody":{"content":{"application/json":{"example":{"dest_lat":37.394287,"dest_lng":127.111152,"origin_lat":37.554722,"origin_lng":126.970833,"priority":"RECOMMEND"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for car driving directions between two coordinates","properties":{"dest_lat":{"description":"Destination latitude in WGS84","type":"number"},"dest_lng":{"description":"Destination longitude in WGS84","type":"number"},"origin_lat":{"description":"Origin latitude in WGS84","type":"number"},"origin_lng":{"description":"Origin longitude in WGS84","type":"number"},"priority":{"description":"Route priority: RECOMMEND, TIME, or DISTANCE","enum":["RECOMMEND","TIME","DISTANCE"],"type":"string"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"distance_m":25840,"duration_sec":2140,"fare":28600},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Car driving route summary with distance, duration, and fare","properties":{"distance_m":{"description":"Total driving distance in meters","type":"number"},"duration_sec":{"description":"Estimated driving time in seconds","type":"number"},"fare":{"description":"Estimated taxi or toll fare in KRW","type":"number"}},"required":["distance_m","duration_sec"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 자동차 길찾기","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"car-directions","x-apifuse-operation-key":"kakaomap-api/car-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"fe4389552ec345104bd0d4044e7e5c5e9510ea8a6d8ba6590499365210bc5704","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"dest_lat,dest_lng":"Obtain via kakaomap:geocode from an address or place name","origin_lat,origin_lng":"Obtain via kakaomap:geocode from an address or place name"},"x-hints":{"dest_lat,dest_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)","origin_lat,origin_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)"},"x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/geocode":{"post":{"description":"Converts a Korean address or place name into geographic coordinates (latitude and longitude) via KakaoMap geocoding. Use when the user provides an address or landmark name and you need coordinates for directions or weather lookup. Do NOT use for searching multiple places by keyword — use kakaomap:search instead. Returns one or more address matches with lat/lng and address type.\n도로명·지번 주소를 위도/경도 좌표로 변환합니다.\n\n# 카카오맵 주소 → 좌표 변환\n\n도로명·지번 주소를 위도/경도 좌표로 변환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__geocode","requestBody":{"content":{"application/json":{"example":{"address":"서울 강남구 강남대로 390"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for geocoding an address or place name to coordinates","properties":{"address":{"description":"Korean address or place name to geocode","minLength":1,"type":"string"}},"required":["address"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"address_name":"서울 강남구 역삼동 820-9","address_type":"REGION_ADDR","lat":37.497952,"lng":127.02861},{"address_name":"서울 강남구 강남대로 390","address_type":"ROAD_ADDR","lat":37.49795,"lng":127.028592}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Geocoding results with coordinates for the given address","properties":{"items":{"description":"List of geocoded address results","items":{"additionalProperties":false,"description":"A single geocoding result","properties":{"address_name":{"description":"Resolved address string","type":"string"},"address_type":{"description":"Address type such as REGION_ADDR or ROAD_ADDR","type":"string"},"lat":{"description":"Latitude in WGS84","type":"number"},"lng":{"description":"Longitude in WGS84","type":"number"}},"required":["address_name","lat","lng","address_type"],"type":"object"},"type":"array"}},"required":["items"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 주소 → 좌표 변환","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"geocode","x-apifuse-operation-key":"kakaomap-api/geocode","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"cbd034e804d86bf9f0f3f40b80d20c2c0e8afba481365af6b273989641cb5c4b","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/place":{"post":{"description":"Retrieves detailed information for a single place on KakaoMap by its confirm_id, including name, address, coordinates, menus, reviews, and photos. Use when the user wants full details about a specific restaurant, cafe, or shop found via search. Do NOT use for searching places by keyword — use kakaomap:search instead. Returns place metadata, menu list, review counts, and user-generated tags.\nconfirm_id로 메뉴, 태그, 리뷰 수, 사진 수 등 장소 상세 정보를 반환합니다.\n\n# 카카오맵 장소 상세\n\nconfirm_id로 메뉴, 태그, 리뷰 수, 사진 수 등 장소 상세 정보를 반환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__place","requestBody":{"content":{"application/json":{"example":{"confirm_id":"18085497"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching place details by KakaoMap confirm_id","properties":{"confirm_id":{"description":"KakaoMap confirm_id that uniquely identifies a place","minLength":1,"type":"string"}},"required":["confirm_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"address":"서울 강남구 역삼동 820-11","blog_review_count":18,"category":"칼국수,만두","confirm_id":"18085497","homepage":"https://gangnamgyojahouse.example.com","lat":37.498168,"lng":127.027636,"menus":[{"description":"진한 사골 육수와 쫄깃한 면발","is_recommend":true,"name":"칼국수","price":11000,"price_text":"11,000원"},{"description":"육즙 가득한 대표 메뉴","is_recommend":false,"name":"교자만두","price":12000,"price_text":"12,000원"}],"name":"강남교자 본점","phone":"02-123-4567","photo_count":42,"review_count":127,"road_address":"서울 강남구 강남대로96길 16","status":"OPEN","summary":"강남교자 본점 (칼국수,만두)","tags":["#혼밥","#만두맛집","#주차가능"]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Detailed information about a KakaoMap place","properties":{"address":{"description":"Legacy jibeon address","type":"string"},"blog_review_count":{"description":"Blog review count","type":"number"},"category":{"description":"Place category such as 칼국수,만두","type":"string"},"confirm_id":{"description":"KakaoMap confirm_id of the place","type":"string"},"homepage":{"description":"Homepage URL","type":"string"},"lat":{"description":"Latitude in WGS84","type":"number"},"lng":{"description":"Longitude in WGS84","type":"number"},"menus":{"description":"List of menu items offered by the place","items":{"additionalProperties":false,"description":"A single menu item offered by the place","properties":{"description":{"description":"Menu item description","type":"string"},"is_recommend":{"description":"Whether recommended by the restaurant","type":"boolean"},"name":{"description":"Menu item name","type":"string"},"price":{"description":"Price in KRW","type":"number"},"price_text":{"description":"Formatted price with currency","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"name":{"description":"Place name","type":"string"},"phone":{"description":"Phone number","type":"string"},"photo_count":{"description":"Total uploaded photo count","type":"number"},"review_count":{"description":"Total KakaoMap user review count","type":"number"},"road_address":{"description":"Road-name doromyeong address","type":"string"},"status":{"description":"Business status such as OPEN or CLOSED","type":"string"},"summary":{"description":"One-line summary combining name and category","type":"string"},"tags":{"description":"User-generated hashtags for the place","items":{"description":"A user-generated tag","type":"string"},"type":"array"}},"required":["confirm_id","name","lat","lng","menus","tags"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 장소 상세","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"place","x-apifuse-operation-key":"kakaomap-api/place","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"c6d712628fa16cd48ffab40a8404f7ed78126db6dafe542a510fad349bd937ba","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/place-reviews":{"post":{"description":"Fetches user reviews and blog reviews for a specific KakaoMap place identified by confirm_id. Use when the user wants to read reviews, ratings, or opinions about a restaurant or shop. Do NOT use for place details like menus or hours — use kakaomap:place instead. Returns a list of reviews with author, rating, content, date, and total count.\n카카오 리뷰와 블로그 리뷰를 통합하여 반환합니다.\n\n# 카카오맵 장소 리뷰\n\n카카오 리뷰와 블로그 리뷰를 통합하여 반환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__place_reviews","requestBody":{"content":{"application/json":{"example":{"confirm_id":"18085497","include_blog":true,"page":1},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching reviews of a KakaoMap place","properties":{"confirm_id":{"description":"KakaoMap confirm_id of the place to fetch reviews for","minLength":1,"type":"string"},"include_blog":{"description":"Whether to include blog reviews","type":"boolean"},"page":{"description":"Page number for pagination","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["confirm_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"reviews":[{"author":"미식가A","content":"칼국수 국물이 진하고 만두가 정말 맛있어요.","date":"2026-03-21T18:10:00+09:00","rating":5},{"author":"직장인B","content":"웨이팅이 있었지만 회전이 빨라 괜찮았습니다.","date":"2026-03-20T12:40:00+09:00","rating":4},{"author":"푸드블로거C","content":"교자와 칼국수 조합이 훌륭했고 가성비도 좋았습니다.","date":"2026-03-19T09:00:00+09:00","rating":null}],"total":3},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Reviews and total count for a KakaoMap place","properties":{"reviews":{"description":"List of reviews for the place","items":{"additionalProperties":false,"description":"A single user or blog review","properties":{"author":{"description":"Review author nickname","type":"string"},"content":{"description":"Review text content","type":"string"},"date":{"description":"Review date in ISO 8601 format","type":"string"},"rating":{"anyOf":[{"description":"Star rating 1-5","type":"number"},{"type":"null"}],"description":"Star rating 1-5 or null for blog reviews"}},"required":["author","rating","content","date"],"type":"object"},"type":"array"},"total":{"description":"Total number of reviews including blog reviews","type":"number"}},"required":["reviews","total"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 장소 리뷰","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"place-reviews","x-apifuse-operation-key":"kakaomap-api/place-reviews","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"87b54d6d95b130af8968bc12d4a15086bfafd0c42ab41da5d2b32e5b2897d89d","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/search":{"post":{"description":"Searches for places on KakaoMap by keyword, optionally filtered by proximity to given coordinates. Use when the user asks to find restaurants, cafes, shops, or any POI near a location or by name. Do NOT use for getting detailed info about a known place — use kakaomap:place instead. Returns a list of matching places with name, address, coordinates, and confirm_id for further lookup.\n키워드와 선택적 위치로 카카오맵 장소를 검색해 이름, 좌표, 주소, 카테고리를 반환합니다.\n\n# 카카오맵 장소 검색\n\n키워드와 선택적 위치로 카카오맵 장소를 검색해 이름, 좌표, 주소, 카테고리를 반환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__search","requestBody":{"content":{"application/json":{"example":{"lat":37.498095,"lng":127.02761,"page":1,"query":"강남역 맛집","radius":1500},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching places on KakaoMap","properties":{"lat":{"description":"Latitude for proximity ranking","type":"number"},"lng":{"description":"Longitude for proximity ranking","type":"number"},"page":{"description":"Page number for pagination","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"query":{"description":"Search keyword such as place name, category, or area","minLength":1,"type":"string"},"radius":{"description":"Search radius in meters","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"address":"서울 강남구 강남대로96길 16","category":"음식점 > 한식 > 국수","confirm_id":"18085497","distance":82,"lat":37.498168,"lng":127.027636,"name":"강남교자 본점","place_url":""},{"address":"서울 강남구 봉은사로4길 36","category":"음식점 > 분식","confirm_id":"2052938852","distance":236,"lat":37.497308,"lng":127.026121,"name":"또보겠지떡볶이집 강남헬로몽키점","place_url":""}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Search results from KakaoMap place search","properties":{"items":{"description":"List of matching places","items":{"additionalProperties":false,"description":"A single place search result","properties":{"address":{"description":"Road-name or legacy address","type":"string"},"category":{"description":"Upstream KakaoMap category path taxonomy","type":"string"},"confirm_id":{"description":"KakaoMap confirm_id for fetching details","type":"string"},"distance":{"description":"Distance from search center in meters","type":"number"},"lat":{"description":"Latitude in WGS84","type":"number"},"lng":{"description":"Longitude in WGS84","type":"number"},"name":{"description":"Place name","type":"string"},"place_url":{"description":"KakaoMap place page URL","type":"string"}},"required":["name","lat","lng","confirm_id","address","category","place_url"],"type":"object"},"type":"array"}},"required":["items"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 장소 검색","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search","x-apifuse-operation-key":"kakaomap-api/search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"4b65043971e1635c7dce24ae6e3e0bf11faaefecd29181700d0328e2d02dc88f","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"lat,lng":"강남역(37.497942,127.027621) 홍대(37.557527,126.925726) 이태원(37.534511,126.994092) 명동(37.560987,126.986325) 판교(37.394770,127.111304) 여의도(37.521624,126.924191) 잠실(37.513282,127.100180) 신촌(37.555134,126.936893)"},"x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/transit-directions":{"post":{"description":"Calculates public transit directions between two coordinate points via KakaoMap, returning multiple itinerary options with duration breakdown. Use when the user asks how to get somewhere by bus or subway, or wants transit travel time. Do NOT use for driving, walking, or cycling — use the corresponding kakaomap direction operations. Returns itineraries with total duration, walk time, and transit time in seconds. Coordinates can be obtained via kakaomap:geocode.\n대중교통 경로 목록과 총 소요시간, 도보 시간, 대중교통 시간을 반환합니다.\n\n# 카카오맵 대중교통 길찾기\n\n대중교통 경로 목록과 총 소요시간, 도보 시간, 대중교통 시간을 반환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__transit_directions","requestBody":{"content":{"application/json":{"example":{"departure_time":"0830","dest_lat":37.566295,"dest_lng":126.977945,"origin_lat":37.554722,"origin_lng":126.970833,"sort":"time"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for public transit directions between two coordinates","properties":{"departure_time":{"description":"Departure time in 24-hour HHmm format such as 0830","pattern":"^([01]\\d|2[0-3])[0-5]\\d$","type":"string"},"dest_lat":{"description":"Destination latitude in WGS84","type":"number"},"dest_lng":{"description":"Destination longitude in WGS84","type":"number"},"origin_lat":{"description":"Origin latitude in WGS84","type":"number"},"origin_lng":{"description":"Origin longitude in WGS84","type":"number"},"sort":{"description":"Sort criteria: time or transfer","enum":["time","transfer"],"type":"string"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"itineraries":[{"duration":1800,"transitTime":1200,"walkTime":600},{"duration":2100,"transitTime":1500,"walkTime":600}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Public transit route options with duration breakdown","properties":{"itineraries":{"description":"List of transit route itinerary options","items":{"additionalProperties":false,"description":"A single transit route itinerary option","properties":{"duration":{"description":"Total trip duration in seconds","type":"number"},"transitTime":{"description":"Time spent on transit vehicles in seconds","type":"number"},"walkTime":{"description":"Total walking time in seconds","type":"number"}},"required":["duration","walkTime","transitTime"],"type":"object"},"type":"array"}},"required":["itineraries"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 대중교통 길찾기","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"transit-directions","x-apifuse-operation-key":"kakaomap-api/transit-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"09f8da2850de106af0967eda1d5e4c0da795c4ca37675246c6b91c68286efc52","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"dest_lat,dest_lng":"Obtain via kakaomap:geocode from an address or place name","origin_lat,origin_lng":"Obtain via kakaomap:geocode from an address or place name"},"x-hints":{"dest_lat,dest_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)","origin_lat,origin_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)"},"x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/transit-info":{"post":{"description":"Retrieves real-time information about a specific bus stop, bus line, or subway station from KakaoMap. Use when the user asks about bus arrival times at a stop, a bus line route, or subway station details. Do NOT use for route planning between two points — use kakaomap:transit-directions instead. Returns a structured transit branch whose fields vary by info_type (bus_stop, bus_line, or subway).\ninfo_type으로 버스 정류장·노선·지하철역 정보를 조회합니다.\n\n# 카카오맵 버스/지하철 정보\n\ninfo_type으로 버스 정류장·노선·지하철역 정보를 조회합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__transit_info","requestBody":{"content":{"application/json":{"example":{"info_type":"bus_stop","stop_id":"BS526045"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching transit stop, line, or station information","properties":{"info_type":{"description":"Type of transit info: bus_stop, bus_line, or subway","enum":["bus_stop","bus_line","subway"],"type":"string"},"line_id":{"description":"Bus line ID for bus_line info_type","type":"string"},"station_id":{"description":"Subway station ID for subway info_type","type":"string"},"stop_id":{"description":"Bus stop ID for bus_stop info_type","type":"string"}},"required":["info_type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"info":{"buslines":[{"arrivals":[{"busstop_count":2,"remain_sec":180}],"busline":{"line_id":"BL98765","name":"740","type":"간선"}}],"stop":{"busstop_id":"BS526045","lat":37.49794,"lon":127.02758,"name":"강남역","realtime":true}}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Transit information for the requested stop, line, or station","properties":{"info":{"anyOf":[{"additionalProperties":false,"description":"KakaoMap bus stop information","properties":{"buslines":{"description":"Bus lines serving the stop","items":{"additionalProperties":false,"description":"Bus line and arrival row for the stop","properties":{"arrivals":{"description":"Real-time arrival estimates for this line","items":{"additionalProperties":false,"description":"KakaoMap bus arrival estimate","properties":{"busstop_count":{"description":"Number of stops remaining before arrival","type":"number"},"remain_sec":{"description":"Seconds until arrival","type":"number"}},"type":"object"},"type":"array"},"busline":{"additionalProperties":false,"description":"Bus line serving the stop","properties":{"line_id":{"description":"KakaoMap bus line identifier","type":"string"},"name":{"description":"Bus line display name","type":"string"},"type":{"description":"Bus line type label from KakaoMap","type":"string"}},"required":["line_id","name"],"type":"object"}},"required":["busline","arrivals"],"type":"object"},"type":"array"},"stop":{"additionalProperties":false,"description":"Bus stop metadata","properties":{"busstop_id":{"description":"KakaoMap bus stop identifier","type":"string"},"lat":{"description":"Bus stop latitude","type":"number"},"lon":{"description":"Bus stop longitude","type":"number"},"name":{"description":"Bus stop display name","type":"string"},"realtime":{"description":"Whether KakaoMap marks real-time arrival support","type":"boolean"}},"required":["busstop_id","name"],"type":"object"}},"required":["stop","buslines"],"type":"object"},{"additionalProperties":false,"description":"KakaoMap bus line real-time information","properties":{"busLocationList":{"description":"Real-time bus vehicle locations for the requested line","items":{"additionalProperties":false,"description":"KakaoMap bus vehicle location row","properties":{"busstop_count":{"description":"Number of stops remaining for this vehicle","type":"number"},"lat":{"description":"Vehicle latitude when available","type":"number"},"lon":{"description":"Vehicle longitude when available","type":"number"},"plate_no":{"description":"Vehicle plate number when KakaoMap exposes it","type":"string"},"remain_sec":{"description":"Seconds until this vehicle reaches a reference stop","type":"number"},"vehicle_id":{"description":"Vehicle identifier when KakaoMap exposes it","type":"string"}},"type":"object"},"type":"array"},"realtimeStateMessage":{"description":"KakaoMap real-time operation state message","type":"string"}},"required":["busLocationList","realtimeStateMessage"],"type":"object"},{"additionalProperties":false,"description":"KakaoMap subway station information","properties":{"id":{"description":"KakaoMap subway station identifier","type":"string"},"lat":{"description":"Subway station latitude when available","type":"number"},"lon":{"description":"Subway station longitude when available","type":"number"},"simpleName":{"description":"Subway station display name","type":"string"},"subwaySimpleName":{"description":"Subway line display name","type":"string"}},"required":["id","simpleName","subwaySimpleName"],"type":"object"}],"description":"Transit information object whose explicit branch depends on info_type"}},"required":["info"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 버스/지하철 정보","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"transit-info","x-apifuse-operation-key":"kakaomap-api/transit-info","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"b351521aa6423e5472d2cee580e3541bad9de9cdee0c7be532186abe8e605998","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kakaomap-api/walk-directions":{"post":{"description":"Calculates walking directions between two coordinate points via KakaoMap, returning distance and estimated walking time. Use when the user asks how to walk between two nearby locations or wants walking distance and time. Do NOT use for driving, cycling, or transit routes — use the corresponding kakaomap direction operations. Returns distance in meters and duration in seconds. Coordinates can be obtained via kakaomap:geocode.\n도보 경로의 거리(m)와 소요시간(초)을 반환합니다.\n\n# 카카오맵 도보 길찾기\n\n도보 경로의 거리(m)와 소요시간(초)을 반환합니다.\n\n## Normalization notes\n\n- 검색, 상세, 길찾기 결과를 장소/경로 중심의 일관된 필드명으로 정리합니다.\n- 거리와 소요시간은 숫자 기반 필드로 유지해 후속 계산과 비교가 쉽도록 합니다.\n- 대중교통·도보·자전거·자동차 경로는 transport-specific 필드를 유지하면서 공통 구조를 공유합니다.","operationId":"kakaomap-api__walk_directions","requestBody":{"content":{"application/json":{"example":{"dest_lat":37.556201,"dest_lng":126.972992,"origin_lat":37.554722,"origin_lng":126.970833},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for walking directions between two coordinates","properties":{"dest_lat":{"description":"Destination latitude in WGS84","type":"number"},"dest_lng":{"description":"Destination longitude in WGS84","type":"number"},"origin_lat":{"description":"Origin latitude in WGS84","type":"number"},"origin_lng":{"description":"Origin longitude in WGS84","type":"number"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"distance_m":420,"duration_sec":540},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kakaomap-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Walking route summary with distance and duration","properties":{"distance_m":{"description":"Total walking distance in meters","type":"number"},"duration_sec":{"description":"Estimated walking time in seconds","type":"number"}},"required":["distance_m","duration_sec"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid coordinates, confirm_id, or search keyword","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KakaoMap upstream returned non-success response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"카카오맵 도보 길찾기","tags":["kakaomap-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"카카오맵 장소 검색 및 길찾기","id":"kakaomap-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KakaoMap upstream returned non-success response","retryable":true,"status":502},{"code":"429","description":"KakaoMap rate limit exceeded (free tier: 100,000/day, ~100 RPM)","retryable":true,"status":429},{"code":"INVALID_INPUT","description":"Invalid coordinates, confirm_id, or search keyword","retryable":false,"status":400}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"walk-directions","x-apifuse-operation-key":"kakaomap-api/walk-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kakaomap-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"fb04568986a4fe8747b643802fcccdee188ca1f17266cf84946efb8e353c07f4","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"dest_lat,dest_lng":"Obtain via kakaomap:geocode from an address or place name","origin_lat,origin_lng":"Obtain via kakaomap:geocode from an address or place name"},"x-hints":{"dest_lat,dest_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)","origin_lat,origin_lng":"서울역(37.554722,126.970833) 강남역(37.497942,127.027621) 홍대입구역(37.557527,126.925726) 신촌역(37.555134,126.936893) 잠실역(37.513282,127.100180) 여의도역(37.521624,126.924191) 명동역(37.560987,126.986325) 종로3가역(37.571607,126.991806) 신림역(37.484205,126.929688) 판교역(37.394770,127.111304)"},"x-idempotent":true,"x-rate-limit":{"calls":100,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/kma-forecast/mid-forecast":{"post":{"description":"Retrieves KMA mid-term temperature forecast for a Korean region, providing daily min/max temperatures with confidence ranges for days 3 through 10. Use when the user asks about weather forecasts for the coming week or beyond 2 days. Do NOT use for current weather or hourly data — use kma:short-forecast instead. Returns an array of daily forecasts with temperature ranges.\ntaMin3~taMax10 형태의 펼쳐진 필드를 dayOffset 기반 배열로 재구성해 소비하기 쉽게 제공합니다.\n\n# 기상청 중기예보\n\ntaMin3~taMax10 형태의 펼쳐진 필드를 dayOffset 기반 배열로 재구성해 소비하기 쉽게 제공합니다.\n\n## Normalization notes\n\n- response.body.items.item envelope을 언랩한 뒤 regId와 예보 필드를 추출합니다.\n- taMin/taMax 및 low/high 범위 값을 모두 number 타입으로 정규화합니다.\n- 존재하는 일자만 dayOffset 기준 forecasts 배열에 포함합니다.\n- 요청 파라미터 regionId는 upstream regId로 변환되고 dataType/page 파라미터가 자동 주입됩니다.","operationId":"kma-forecast__mid_forecast","requestBody":{"content":{"application/json":{"example":{"regionId":"11B10101","tmFc":"202503220600"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching KMA mid-term temperature forecast","properties":{"regionId":{"default":"11B10101","description":"KMA mid-term forecast region code such as 11B10101 for Seoul","type":"string"},"tmFc":{"description":"Announcement time in YYYYMMDDHHmm format, defaults to today 0600","pattern":"^\\d{8}([01]\\d|2[0-3])[0-5]\\d$","type":"string"}},"required":["regionId"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"forecasts":[{"dayOffset":3,"maxTemp":18,"maxTempHigh":20,"maxTempLow":17,"minTemp":8,"minTempHigh":10,"minTempLow":7}],"regionId":"11B10101"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kma-forecast"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Mid-term temperature forecast data for a region","properties":{"forecasts":{"description":"Daily temperature forecasts for days 3 through 10","items":{"additionalProperties":false,"description":"Daily temperature forecast for a single day","properties":{"dayOffset":{"description":"Number of days from announcement date (3 to 10)","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"maxTemp":{"anyOf":[{"description":"Maximum temperature in Celsius","type":"number"},{"type":"null"}],"description":"Maximum temperature in Celsius or null"},"maxTempHigh":{"anyOf":[{"description":"Upper bound of maximum temperature range","type":"number"},{"type":"null"}],"description":"Upper bound of maximum temperature range or null"},"maxTempLow":{"anyOf":[{"description":"Lower bound of maximum temperature range","type":"number"},{"type":"null"}],"description":"Lower bound of maximum temperature range or null"},"minTemp":{"anyOf":[{"description":"Minimum temperature in Celsius","type":"number"},{"type":"null"}],"description":"Minimum temperature in Celsius or null"},"minTempHigh":{"anyOf":[{"description":"Upper bound of minimum temperature range","type":"number"},{"type":"null"}],"description":"Upper bound of minimum temperature range or null"},"minTempLow":{"anyOf":[{"description":"Lower bound of minimum temperature range","type":"number"},{"type":"null"}],"description":"Lower bound of minimum temperature range or null"}},"required":["dayOffset","minTemp","maxTemp","minTempLow","minTempHigh","maxTempLow","maxTempHigh"],"type":"object"},"type":"array"},"regionId":{"description":"Region code used for the forecast","type":"string"}},"required":["regionId","forecasts"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR: Invalid or unregistered data.go.kr service key","x-apifuse-error-code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","x-apifuse-error-codes":[{"code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","description":"Invalid or unregistered data.go.kr service key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"NO_DATA: No mid-term forecast data available for the given region","x-apifuse-error-code":"NO_DATA","x-apifuse-error-codes":[{"code":"NO_DATA","description":"No mid-term forecast data available for the given region","retryable":false,"status":404}],"x-apifuse-retryable":false},"429":{"description":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR: Daily API call quota exceeded (data.go.kr free tier: 1,000/day) Retryable.","x-apifuse-error-code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","x-apifuse-error-codes":[{"code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","description":"Daily API call quota exceeded (data.go.kr free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KMA API returned a non-success result code Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KMA API returned a non-success result code","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"기상청 중기예보","tags":["kma-forecast"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"기상청 예보 데이터","id":"kma-forecast"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","description":"Invalid or unregistered data.go.kr service key","retryable":false,"status":400},{"code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","description":"Daily API call quota exceeded (data.go.kr free tier: 1,000/day)","retryable":true,"status":429},{"code":"UPSTREAM_ERROR","description":"KMA API returned a non-success result code","retryable":true,"status":502},{"code":"NO_DATA","description":"No mid-term forecast data available for the given region","retryable":false,"status":404}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"mid-forecast","x-apifuse-operation-key":"kma-forecast/mid-forecast","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kma-forecast","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"260f0a8304345b20984e9442dad9e3db445b516f1516f2aab3d3c0163afc2a15","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"regionId":"서울(11B10101) 경기(11B20000) 강원(11D10000) 대전(11C20000) 세종(11C20000) 충남(11C20000) 충북(11C10000) 광주(11F20000) 전남(11F20000) 전북(11F10000) 대구(11H10000) 경북(11H10000) 부산(11H20000) 울산(11H20000) 경남(11H20000) 제주(11G00000) 인천(11B20000)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/kma-forecast/short-forecast":{"post":{"description":"Retrieves KMA current observation and short-term village forecast for a grid coordinate in South Korea, including tomorrow forecasts when available. Use when the user asks about current weather, today, tomorrow, or hourly weather at a Korean location. Do NOT use for forecasts beyond 2 days — use kma:mid-forecast instead. Returns current observation plus forecast entries in KST timezone; null values indicate data unavailable. Grid coordinates can be obtained via kakaomap:geocode.\n복잡한 data.go.kr envelope과 카테고리 코드를 평탄화해 즉시 활용 가능한 날씨 객체로 제공합니다.\n\n# 기상청 단기예보\n\n복잡한 data.go.kr envelope과 카테고리 코드를 평탄화해 즉시 활용 가능한 날씨 객체로 제공합니다.\n\n## Normalization notes\n\n- response.body.items.item envelope을 언랩하고 category 코드를 pivot 형태로 합칩니다.\n- T1H/REH/WSD를 숫자 필드로 변환하고 RN1의 한국어 null 패턴을 null로 치환합니다.\n- PTY/SKY 코드를 none/rain/sleet/snow 및 clear/mostly_cloudy/overcast enum으로 매핑합니다.\n- baseDate/baseTime을 ISO 8601 KST observedAt 값으로 변환합니다.","operationId":"kma-forecast__short_forecast","requestBody":{"content":{"application/json":{"example":{"baseDate":"20250322","baseTime":"1400","gridX":60,"gridY":127},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching KMA ultra-short-term weather observation","properties":{"baseDate":{"description":"Base date in YYYYMMDD format, defaults to today","pattern":"^\\d{8}$","type":"string"},"baseTime":{"description":"Base time in 24-hour HHmm format, defaults to current hour","pattern":"^([01]\\d|2[0-3])[0-5]\\d$","type":"string"},"gridX":{"description":"KMA grid X coordinate (nx) for the forecast location","maximum":149,"minimum":1,"type":"integer"},"gridY":{"description":"KMA grid Y coordinate (ny) for the forecast location","maximum":253,"minimum":1,"type":"integer"}},"required":["gridX","gridY"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"forecasts":[],"grid":{"x":60,"y":127},"humidity":38,"observedAt":"2025-03-22T14:00:00+09:00","precipitation1h":null,"precipitationType":"none","sky":"clear","temperature":18.4,"windSpeed":2.1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kma-forecast"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Current observation plus short-term forecast data for a KMA grid point","properties":{"forecasts":{"description":"Short-term forecast entries, including tomorrow when available","items":{"additionalProperties":false,"description":"Short-term forecast entry for one forecast timestamp","properties":{"date":{"description":"Forecast date in YYYYMMDD","type":"string"},"forecastAt":{"description":"Forecast timestamp in ISO 8601 KST","type":"string"},"maxTemperature":{"anyOf":[{"description":"Daily maximum temperature in Celsius","type":"number"},{"type":"null"}],"description":"Daily maximum temperature in Celsius or null when unavailable"},"minTemperature":{"anyOf":[{"description":"Daily minimum temperature in Celsius","type":"number"},{"type":"null"}],"description":"Daily minimum temperature in Celsius or null when unavailable"},"precipitationAmount":{"anyOf":[{"description":"Forecast precipitation amount text","type":"string"},{"type":"null"}],"description":"Forecast precipitation amount text or null when unavailable"},"precipitationProbability":{"anyOf":[{"description":"Precipitation probability percentage","type":"number"},{"type":"null"}],"description":"Precipitation probability percentage or null when unavailable"},"precipitationType":{"anyOf":[{"description":"Precipitation type: none, rain, sleet, or snow","type":"string"},{"type":"null"}],"description":"Precipitation type or null if unavailable"},"sky":{"anyOf":[{"description":"Sky condition: clear, mostly_cloudy, or overcast","type":"string"},{"type":"null"}],"description":"Sky condition or null if unavailable"},"temperature":{"anyOf":[{"description":"Forecast temperature in Celsius","type":"number"},{"type":"null"}],"description":"Forecast temperature in Celsius or null if unavailable"},"time":{"description":"Forecast time in HHmm","type":"string"}},"required":["forecastAt","date","time","temperature","minTemperature","maxTemperature","precipitationProbability","precipitationAmount","precipitationType","sky"],"type":"object"},"type":"array"},"grid":{"additionalProperties":false,"description":"KMA grid coordinates of the observation point","properties":{"x":{"description":"Grid X coordinate used","type":"number"},"y":{"description":"Grid Y coordinate used","type":"number"}},"required":["x","y"],"type":"object"},"humidity":{"anyOf":[{"description":"Relative humidity percentage","type":"number"},{"type":"null"}],"description":"Relative humidity percentage or null if unavailable"},"observedAt":{"description":"Observation timestamp in ISO 8601 KST","type":"string"},"precipitation1h":{"anyOf":[{"description":"1-hour precipitation in mm","type":"number"},{"type":"null"}],"description":"1-hour precipitation in mm or null if no precipitation"},"precipitationType":{"anyOf":[{"description":"Precipitation type: none, rain, sleet, or snow","type":"string"},{"type":"null"}],"description":"Precipitation type or null if unavailable"},"sky":{"anyOf":[{"description":"Sky condition: clear, mostly_cloudy, or overcast","type":"string"},{"type":"null"}],"description":"Sky condition or null if unavailable"},"temperature":{"anyOf":[{"description":"Temperature in Celsius","type":"number"},{"type":"null"}],"description":"Temperature in Celsius or null if unavailable"},"windSpeed":{"anyOf":[{"description":"Wind speed in m/s","type":"number"},{"type":"null"}],"description":"Wind speed in m/s or null if unavailable"}},"required":["observedAt","grid","temperature","humidity","windSpeed","precipitation1h","precipitationType","sky","forecasts"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR: Invalid or unregistered data.go.kr service key","x-apifuse-error-code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","x-apifuse-error-codes":[{"code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","description":"Invalid or unregistered data.go.kr service key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"NO_DATA: No forecast data available for the given grid and base time","x-apifuse-error-code":"NO_DATA","x-apifuse-error-codes":[{"code":"NO_DATA","description":"No forecast data available for the given grid and base time","retryable":false,"status":404}],"x-apifuse-retryable":false},"429":{"description":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR: Daily API call quota exceeded (data.go.kr free tier: 1,000/day) Retryable.","x-apifuse-error-code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","x-apifuse-error-codes":[{"code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","description":"Daily API call quota exceeded (data.go.kr free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: KMA API returned a non-success result code Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"KMA API returned a non-success result code","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"기상청 단기예보","tags":["kma-forecast"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"기상청 예보 데이터","id":"kma-forecast"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"SERVICE_KEY_IS_NOT_REGISTERED_ERROR","description":"Invalid or unregistered data.go.kr service key","retryable":false,"status":400},{"code":"LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_ERROR","description":"Daily API call quota exceeded (data.go.kr free tier: 1,000/day)","retryable":true,"status":429},{"code":"UPSTREAM_ERROR","description":"KMA API returned a non-success result code","retryable":true,"status":502},{"code":"NO_DATA","description":"No forecast data available for the given grid and base time","retryable":false,"status":404}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"short-forecast","x-apifuse-operation-key":"kma-forecast/short-forecast","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kma-forecast","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"5757878f1bbe51b291da23d47ec9b6607e4ee1d56c05b8b8e41656b776b4269f","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"gridX,gridY":"서울(60,127) 인천(55,124) 수원(60,121) 대전(67,100) 대구(89,90) 부산(98,76) 광주(58,74) 울산(102,84) 세종(66,103) 제주(52,38) 춘천(73,134) 강릉(92,131) 청주(69,106) 전주(63,89) 포항(102,94) 창원(90,77)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/kma-forecast/weather-by-address":{"post":{"description":"Retrieves KMA current observation and short-term forecast for a Korean address or place name. The operation geocodes the address, converts WGS84 coordinates to KMA grid coordinates, and then calls the same KMA forecast APIs used by short-forecast. Use when callers have an address/place instead of KMA nx/ny grid coordinates.\n기상청의 비표준 nx/ny 격자 입력을 주소 기반 호출로 감싼 정식 KMA operation입니다.\n\n# 기상청 예보 데이터 Weather By Address\n\n기상청의 비표준 nx/ny 격자 입력을 주소 기반 호출로 감싼 정식 KMA operation입니다.\n\n## Normalization notes\n\n- Kakao 주소 검색 결과 중 첫 번째 후보를 선택하고 나머지는 alternatives로 보존합니다.\n- WGS84 lat/lng를 기상청 Lambert 격자 x/y로 변환한 뒤 short-forecast와 동일한 정규화 로직을 재사용합니다.\n- 응답 forecast.grid는 변환된 location.grid와 일치해야 합니다.","operationId":"kma-forecast__weather_by_address","requestBody":{"content":{"application/json":{"example":{"address":"서울 종로구 사직로 161","baseDate":"20250322","baseTime":"1400"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for resolving a Korean address to KMA grid weather","properties":{"address":{"description":"Korean address or place name (for example 대방동, 강남역, 서울특별시 영등포구)","minLength":1,"type":"string"},"baseDate":{"description":"Forecast base date in YYYYMMDD (KST). Defaults to today.","pattern":"^\\d{8}$","type":"string"},"baseTime":{"description":"Forecast base time in HHmm (KST). Defaults automatically.","pattern":"^([01]\\d|2[0-3])[0-5]\\d$","type":"string"}},"required":["address"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"alternatives":[],"forecast":{"forecasts":[],"grid":{"x":60,"y":127},"humidity":38,"observedAt":"2025-03-22T14:00:00+09:00","precipitation1h":null,"precipitationType":"none","sky":"clear","temperature":18.4,"windSpeed":2.1},"location":{"grid":{"x":60,"y":127},"input":"서울 종로구 사직로 161","lat":37.5788,"lng":126.977,"resolvedAddress":"서울 종로구 세종로 1-91"}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"kma-forecast"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"KMA short forecast resolved from a Korean address","properties":{"alternatives":{"description":"Additional geocoding candidates, if any","items":{"additionalProperties":false,"description":"Additional geocoding candidate","properties":{"lat":{"description":"Alternative candidate WGS84 latitude","type":"number"},"lng":{"description":"Alternative candidate WGS84 longitude","type":"number"},"resolvedAddress":{"description":"Alternative address candidate returned by geocoding","type":"string"}},"required":["resolvedAddress","lat","lng"],"type":"object"},"type":"array"},"forecast":{"additionalProperties":false,"description":"Current observation and short-term forecast for the derived KMA grid","properties":{"forecasts":{"description":"Short-term forecast entries, including tomorrow when available","items":{"additionalProperties":false,"description":"Short-term forecast entry for one forecast timestamp","properties":{"date":{"description":"Forecast date in YYYYMMDD","type":"string"},"forecastAt":{"description":"Forecast timestamp in ISO 8601 KST","type":"string"},"maxTemperature":{"anyOf":[{"description":"Daily maximum temperature in Celsius","type":"number"},{"type":"null"}],"description":"Daily maximum temperature in Celsius or null when unavailable"},"minTemperature":{"anyOf":[{"description":"Daily minimum temperature in Celsius","type":"number"},{"type":"null"}],"description":"Daily minimum temperature in Celsius or null when unavailable"},"precipitationAmount":{"anyOf":[{"description":"Forecast precipitation amount text","type":"string"},{"type":"null"}],"description":"Forecast precipitation amount text or null when unavailable"},"precipitationProbability":{"anyOf":[{"description":"Precipitation probability percentage","type":"number"},{"type":"null"}],"description":"Precipitation probability percentage or null when unavailable"},"precipitationType":{"anyOf":[{"description":"Precipitation type: none, rain, sleet, or snow","type":"string"},{"type":"null"}],"description":"Precipitation type or null if unavailable"},"sky":{"anyOf":[{"description":"Sky condition: clear, mostly_cloudy, or overcast","type":"string"},{"type":"null"}],"description":"Sky condition or null if unavailable"},"temperature":{"anyOf":[{"description":"Forecast temperature in Celsius","type":"number"},{"type":"null"}],"description":"Forecast temperature in Celsius or null if unavailable"},"time":{"description":"Forecast time in HHmm","type":"string"}},"required":["forecastAt","date","time","temperature","minTemperature","maxTemperature","precipitationProbability","precipitationAmount","precipitationType","sky"],"type":"object"},"type":"array"},"grid":{"additionalProperties":false,"description":"KMA grid coordinates of the observation point","properties":{"x":{"description":"Grid X coordinate used","type":"number"},"y":{"description":"Grid Y coordinate used","type":"number"}},"required":["x","y"],"type":"object"},"humidity":{"anyOf":[{"description":"Relative humidity percentage","type":"number"},{"type":"null"}],"description":"Relative humidity percentage or null if unavailable"},"observedAt":{"description":"Observation timestamp in ISO 8601 KST","type":"string"},"precipitation1h":{"anyOf":[{"description":"1-hour precipitation in mm","type":"number"},{"type":"null"}],"description":"1-hour precipitation in mm or null if no precipitation"},"precipitationType":{"anyOf":[{"description":"Precipitation type: none, rain, sleet, or snow","type":"string"},{"type":"null"}],"description":"Precipitation type or null if unavailable"},"sky":{"anyOf":[{"description":"Sky condition: clear, mostly_cloudy, or overcast","type":"string"},{"type":"null"}],"description":"Sky condition or null if unavailable"},"temperature":{"anyOf":[{"description":"Temperature in Celsius","type":"number"},{"type":"null"}],"description":"Temperature in Celsius or null if unavailable"},"windSpeed":{"anyOf":[{"description":"Wind speed in m/s","type":"number"},{"type":"null"}],"description":"Wind speed in m/s or null if unavailable"}},"required":["observedAt","grid","temperature","humidity","windSpeed","precipitation1h","precipitationType","sky","forecasts"],"type":"object"},"location":{"additionalProperties":false,"description":"Resolved location used for the forecast","properties":{"grid":{"additionalProperties":false,"description":"KMA grid coordinates derived from lat/lng","properties":{"x":{"description":"KMA grid X coordinate","type":"number"},"y":{"description":"KMA grid Y coordinate","type":"number"}},"required":["x","y"],"type":"object"},"input":{"description":"Original address query","type":"string"},"lat":{"description":"WGS84 latitude","type":"number"},"lng":{"description":"WGS84 longitude","type":"number"},"resolvedAddress":{"description":"Address selected by geocoding","type":"string"}},"required":["input","resolvedAddress","lat","lng","grid"],"type":"object"}},"required":["location","forecast"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"NO_DATA: No geocode result or forecast data available for the given address","x-apifuse-error-code":"NO_DATA","x-apifuse-error-codes":[{"code":"NO_DATA","description":"No geocode result or forecast data available for the given address","retryable":false,"status":404}],"x-apifuse-retryable":false},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Kakao or KMA API returned an unexpected response Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Kakao or KMA API returned an unexpected response","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"기상청 예보 데이터 Weather By Address","tags":["kma-forecast"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"기상청 예보 데이터","id":"kma-forecast"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"NO_DATA","description":"No geocode result or forecast data available for the given address","retryable":false,"status":404},{"code":"UPSTREAM_ERROR","description":"Kakao or KMA API returned an unexpected response","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"weather-by-address","x-apifuse-operation-key":"kma-forecast/weather-by-address","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"kma-forecast","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"ba313db4ab639e852382a2acf91dbf9bdda4efd60de00b10eb4fdf3f67a8779f","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"address":"한국 주소 또는 장소명(예: 서울 종로구 사직로 161, 강남역, 대방동). 3일 이상 예보는 mid-forecast를 사용하세요."},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/law-service/compare":{"post":{"description":"Retrieves law.go.kr old/new law list, three-way comparison list, or HTML-only legislative history data. Use when the user wants to find comparison/history entries before opening upstream detail links. Do NOT use for reading current law text — use law:detail instead. The response exposes only evidence-backed list envelope fields and preserves target-specific rows as upstream JSON objects because row keys differ by law.go.kr target.\n법령의 개정 전후 조문 비교(신구대조표), 3단비교, 이력을 조회합니다.\n\n# 법령 신구조문 비교\n\n법령의 개정 전후 조문 비교(신구대조표), 3단비교, 이력을 조회합니다.\n\n## Normalization notes\n\n- XML/JSON 혼합 응답을 검색 결과, 조문 목록, 용어 정의, 비교 정보 구조로 정리합니다.\n- 법령명, 시행일, 조문, 링크 등 핵심 필드를 일관된 snake_case 출력으로 정규화합니다.\n- 원본 응답의 반복/중첩 구조를 AI가 소비하기 쉬운 배열 중심 형태로 평탄화합니다.","operationId":"law-service__compare","requestBody":{"content":{"application/json":{"example":{"compare_type":"oldAndNew","law_name":"민법"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for comparing law versions or amendments","properties":{"compare_type":{"default":"oldAndNew","description":"Comparison type: oldAndNew, thdCmp, or lsHstInf","enum":["oldAndNew","thdCmp","lsHstInf"],"type":"string"},"law_name":{"description":"Korean law name to compare","type":"string"}},"required":["law_name","compare_type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"compare_type":"oldAndNew","items":[{"id":1,"공포번호":10429,"공포일자":20110307,"법령구분명":"법률","소관부처명":"법무부","시행일자":20110307,"신구법ID":"000170","신구법명":"민법","신구법일련번호":122682,"제개정구분명":"일부개정"}],"law_name":"민법","raw_format":"json","summary":{"keyword":"민법","num_of_rows":20,"page":1,"result_code":"00","result_message":"success","section":"lawNm","total_count":1},"upstream_target":"oldAndNew"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"law-service"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Law comparison results","properties":{"compare_type":{"description":"Type of comparison performed","enum":["oldAndNew","thdCmp","lsHstInf"],"type":"string"},"html":{"description":"Raw HTML response for law.go.kr HTML-only branches, including lsHistory.","type":"string"},"items":{"description":"Unmodified upstream list rows. Open-world because oldAndNew and thdCmp publish target-specific row fields, while lsHistory is documented for HTML only.","items":{"additionalProperties":{"anyOf":[{"description":"Upstream string value","type":"string"},{"description":"Upstream number value","type":"number"},{"description":"Upstream boolean value","type":"boolean"},{"description":"Upstream null value","type":"null"}],"description":"Upstream row field value"},"description":"Opaque upstream row object. Open-world because law.go.kr publishes target-specific Korean row fields and not every branch has a stable JSON response contract; callers should depend on the stable envelope fields instead.","propertyNames":{"description":"Upstream row field name","type":"string"},"type":"object"},"type":"array"},"law_name":{"description":"Law name that was compared","type":"string"},"raw_format":{"description":"Actual law.go.kr response format requested","enum":["json","html"],"type":"string"},"summary":{"additionalProperties":false,"description":"Stable list metadata documented by law.go.kr when JSON is available","properties":{"keyword":{"description":"Search keyword echoed by law.go.kr when present","type":"string"},"num_of_rows":{"description":"Number of rows per page from the law.go.kr list response","type":"number"},"page":{"description":"Current page number from the law.go.kr list response","type":"number"},"result_code":{"description":"resultCode from the law.go.kr list response","type":"string"},"result_message":{"description":"resultMsg from the law.go.kr list response","type":"string"},"section":{"description":"Search section echoed by law.go.kr when present","type":"string"},"total_count":{"description":"totalCnt from the law.go.kr list response","type":"number"}},"type":"object"},"upstream_target":{"description":"Actual law.go.kr target used for the upstream request","enum":["oldAndNew","thdCmp","lsHistory"],"type":"string"}},"required":["law_name","compare_type","upstream_target","raw_format","summary","items"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_API_KEY: Invalid or missing law.go.kr API key","x-apifuse-error-code":"INVALID_API_KEY","x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: law.go.kr daily quota exceeded (free tier: 1,000/day) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: law.go.kr upstream returned error or malformed XML Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"법령 신구조문 비교","tags":["law-service"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"국가법령정보 검색 및 조회","id":"law-service"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502},{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"compare","x-apifuse-operation-key":"law-service/compare","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"law-service","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"d51df56c8e69d7a3f780f63e39550e59f5eccb23b852a6f1288d5ffb7309ed09","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"compare_type":"oldAndNew(신구법 목록) thdCmp(3단 비교 목록) lsHstInf(법령 연혁 HTML)","law_name":"민법(민법) 형법(형법) 상법(상법) 헌법(대한민국헌법) 근로기준법(근로기준법) 도로교통법(도로교통법)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/law-service/detail":{"post":{"description":"Retrieves the full text of a Korean law by name, including individual articles with numbers, titles, and content. Use when the user wants to read specific articles or the complete text of a law. Do NOT use for searching laws by keyword — use law:search instead. Returns law name, ID, enforcement date, and an array of articles.\n법령명으로 전체 조문 목록과 시행일, 법령 ID를 반환합니다.\n\n# 법령 조문 조회\n\n법령명으로 전체 조문 목록과 시행일, 법령 ID를 반환합니다.\n\n## Normalization notes\n\n- XML/JSON 혼합 응답을 검색 결과, 조문 목록, 용어 정의, 비교 정보 구조로 정리합니다.\n- 법령명, 시행일, 조문, 링크 등 핵심 필드를 일관된 snake_case 출력으로 정규화합니다.\n- 원본 응답의 반복/중첩 구조를 AI가 소비하기 쉬운 배열 중심 형태로 평탄화합니다.","operationId":"law-service__detail","requestBody":{"content":{"application/json":{"example":{"law_name":"민법"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for fetching detailed law content by name","properties":{"article_number":{"description":"Specific article number such as 제1조","type":"string"},"include_english":{"description":"Whether to include English translation","type":"boolean"},"include_history":{"description":"Whether to include amendment history","type":"boolean"},"include_related":{"description":"Whether to include related laws","type":"boolean"},"law_name":{"description":"Korean law name to look up","type":"string"}},"required":["law_name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"articles":[{"content":"이 법은 권리와 의무에 관한 사항을 규정함을 목적으로 한다.","number":"1","title":"목적"}],"enforcement_date":"20260101","law_id":"001234","law_name":"민법"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"law-service"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Detailed law content with articles","properties":{"articles":{"description":"List of law articles","items":{"additionalProperties":false,"description":"A single law article with number, title, and content","properties":{"content":{"description":"Full article text content","type":"string"},"number":{"description":"Article number such as 1 or 2","type":"string"},"title":{"description":"Article title","type":"string"}},"required":["number","content"],"type":"object"},"type":"array"},"enforcement_date":{"description":"Enforcement date in YYYYMMDD format","type":"string"},"law_id":{"description":"Unique law identifier from law.go.kr","type":"string"},"law_name":{"description":"Official law name in Korean","type":"string"}},"required":["law_name","articles"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_API_KEY: Invalid or missing law.go.kr API key","x-apifuse-error-code":"INVALID_API_KEY","x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: law.go.kr daily quota exceeded (free tier: 1,000/day) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: law.go.kr upstream returned error or malformed XML Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"법령 조문 조회","tags":["law-service"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"국가법령정보 검색 및 조회","id":"law-service"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502},{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"detail","x-apifuse-operation-key":"law-service/detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"law-service","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"bfcfdea07fba368da4660427d6828412c0e71b0d25591cd916905500c4ada8dc","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"law_name":"민법(민법) 형법(형법) 상법(상법) 헌법(대한민국헌법) 민사소송법(민사소송법) 형사소송법(형사소송법) 근로기준법(근로기준법) 부동산등기법(부동산등기법) 도로교통법(도로교통법) 개인정보보호법(개인정보보호법)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/law-service/search":{"post":{"description":"Searches the Korean National Law Information Center for laws, precedents, and administrative rules by keyword. Use when the user asks about a specific Korean law, legal case, or regulation by name or topic. Do NOT use for reading full law text — use law:detail instead. Returns a list of matching results with type, ID, name, date, and direct link to law.go.kr.\n국가법령정보센터에서 법령명, 판례, 행정규칙 등을 키워드로 검색합니다.\n\n# 법령 검색\n\n국가법령정보센터에서 법령명, 판례, 행정규칙 등을 키워드로 검색합니다.\n\n## Normalization notes\n\n- XML/JSON 혼합 응답을 검색 결과, 조문 목록, 용어 정의, 비교 정보 구조로 정리합니다.\n- 법령명, 시행일, 조문, 링크 등 핵심 필드를 일관된 snake_case 출력으로 정규화합니다.\n- 원본 응답의 반복/중첩 구조를 AI가 소비하기 쉬운 배열 중심 형태로 평탄화합니다.","operationId":"law-service__search","requestBody":{"content":{"application/json":{"example":{"query":"민법"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Korean laws and legal precedents","properties":{"max_results_per_type":{"default":10,"description":"Maximum results per search target type","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Search keyword for law name or content","type":"string"},"search_body":{"description":"Whether to search within law body text","enum":["0","1"],"type":"string"},"sort":{"description":"Sort order: efYd for enforcement date, lasc for name","enum":["efYd","lasc"],"type":"string"},"targets":{"description":"Search target types such as law, prec, expc","items":{"description":"Search target type code","enum":["law","prec","expc","admrul","ordin","admrv","ccourt"],"type":"string"},"type":"array"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"query":"민법","results":[{"date":"20260101","id":"001234","link":"https://www.law.go.kr/LSW/lsInfoP.do?lsiSeq=001234","name":"민법","type":"law"}],"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"law-service"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Law search results with total count","properties":{"query":{"description":"Echo of the search query used","type":"string"},"results":{"description":"List of matching law results","items":{"additionalProperties":false,"description":"A single law search result item","properties":{"date":{"description":"Enforcement or ruling date in YYYYMMDD","type":"string"},"id":{"description":"Unique law or precedent identifier","type":"string"},"link":{"description":"Direct link to the law on law.go.kr","type":"string"},"name":{"description":"Law name or case name in Korean","type":"string"},"type":{"description":"Result type such as law, prec, terms, or other","enum":["law","prec","terms","other"],"type":"string"}},"required":["type","id","name"],"type":"object"},"type":"array"},"total":{"description":"Total number of matching results","type":"number"}},"required":["results","total","query"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_API_KEY: Invalid or missing law.go.kr API key","x-apifuse-error-code":"INVALID_API_KEY","x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: law.go.kr daily quota exceeded (free tier: 1,000/day) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: law.go.kr upstream returned error or malformed XML Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"법령 검색","tags":["law-service"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"국가법령정보 검색 및 조회","id":"law-service"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502},{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search","x-apifuse-operation-key":"law-service/search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"law-service","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"36ee09c9ea17bdfe2993f2a61fa9e2ff9c2d7260c3d1b451521dd10fed2e50a8","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"query":"민법(민법) 형법(형법) 상법(상법) 헌법(헌법) 민사소송법(민사소송법) 형사소송법(형사소송법) 근로기준법(근로기준법) 부동산등기법(부동산등기법) 도로교통법(도로교통법) 개인정보보호법(개인정보보호법)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/law-service/terms":{"post":{"description":"Looks up definitions of Korean legal terms from the National Law Information Center, optionally including references to the laws that define them. Use when the user asks about the meaning of a legal term such as 소멸시효, 선의취득, or 불법행위. Do NOT use for searching laws by name — use law:search instead. Returns matching terms with definitions and source law names.\n법령 용어의 정의와 출처 법령명을 반환합니다.\n\n# 법령 용어 사전\n\n법령 용어의 정의와 출처 법령명을 반환합니다.\n\n## Normalization notes\n\n- XML/JSON 혼합 응답을 검색 결과, 조문 목록, 용어 정의, 비교 정보 구조로 정리합니다.\n- 법령명, 시행일, 조문, 링크 등 핵심 필드를 일관된 snake_case 출력으로 정규화합니다.\n- 원본 응답의 반복/중첩 구조를 AI가 소비하기 쉬운 배열 중심 형태로 평탄화합니다.","operationId":"law-service__terms","requestBody":{"content":{"application/json":{"example":{"term":"계약"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for looking up Korean legal term definitions","properties":{"include_related_laws":{"description":"Whether to include related law references","type":"boolean"},"term":{"description":"Legal term to look up such as 소멸시효 or 불법행위","type":"string"}},"required":["term"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"terms":[{"definition":"당사자 간의 법률행위로 이루어지는 합의","law_name":"민법","term":"계약"}],"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"law-service"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Legal term lookup results","properties":{"terms":{"description":"List of matching legal terms","items":{"additionalProperties":false,"description":"A single legal term with its definition","properties":{"definition":{"description":"Definition text of the legal term","type":"string"},"law_name":{"description":"Name of the law that defines this term","type":"string"},"term":{"description":"Legal term name in Korean","type":"string"}},"required":["term","definition"],"type":"object"},"type":"array"},"total":{"description":"Total number of matching terms","type":"number"}},"required":["terms","total"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_API_KEY: Invalid or missing law.go.kr API key","x-apifuse-error-code":"INVALID_API_KEY","x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"429: law.go.kr daily quota exceeded (free tier: 1,000/day) Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: law.go.kr upstream returned error or malformed XML Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"법령 용어 사전","tags":["law-service"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"국가법령정보 검색 및 조회","id":"law-service"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_API_KEY","description":"Invalid or missing law.go.kr API key","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"law.go.kr upstream returned error or malformed XML","retryable":true,"status":502},{"code":"429","description":"law.go.kr daily quota exceeded (free tier: 1,000/day)","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"terms","x-apifuse-operation-key":"law-service/terms","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"law-service","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"e290bc9be724f234ea8f7e6fce392d95adae909d0ac738d520464710f88c73b7","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"term":"소멸시효(소멸시효) 선의취득(선의취득) 채무불이행(채무불이행) 불법행위(불법행위) 공소시효(공소시효) 정당방위(정당방위) 손해배상(손해배상) 부당이득(부당이득) 점유권(점유권) 저당권(저당권)"},"x-idempotent":true,"x-rate-limit":{"calls":1000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/market-kurly/count-products":{"post":{"description":"Use when a tenant needs the current Market Kurly public result count for a keyword before deciding whether to fetch product rows. It calls the lightweight count endpoint, does not require a user session, and returns a stable numeric count plus the upstream source URL.\nReturns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.\n\n# Market Kurly product data Count Products\n\nReturns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.\n\n## Normalization notes\n\n- Search/count JSON is normalized into stable product fields.\n- Product detail reads public SSR page data when available.","operationId":"market-kurly__count_products","requestBody":{"content":{"application/json":{"example":{"query":"우유"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for counting Market Kurly search results","properties":{"query":{"description":"Product search keyword to count","minLength":1,"type":"string"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"count":477,"query":"우유","source_url":"https://api.kurly.com/search/v3/sites/market/normal-search/count?keyword=%EC%9A%B0%EC%9C%A0&filters=&allow_replace=true"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"market-kurly"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Market Kurly search count result envelope","properties":{"count":{"description":"Reported Market Kurly result count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"query":{"description":"Echoed product search keyword","type":"string"},"source_url":{"description":"Upstream Market Kurly count URL used for the request","type":"string"}},"required":["query","count","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Market Kurly product data Count Products","tags":["market-kurly"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Market Kurly product data","id":"market-kurly"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"count-products","x-apifuse-operation-key":"market-kurly/count-products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"market-kurly","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"3a382d43a2923d6a29968f0c5524835b770d41c9d81392cafbb11673564469e0","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/market-kurly/product-detail":{"post":{"description":"Use when a tenant already has a Market Kurly product identifier and needs best-effort public detail-page data without login. It reads SSR page data, normalizes the first matching product row, and reports the source URL so callers can diagnose upstream schema changes.\nReturns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.\n\n# Market Kurly product data Product Detail\n\nReturns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.\n\n## Normalization notes\n\n- Search/count JSON is normalized into stable product fields.\n- Product detail reads public SSR page data when available.","operationId":"market-kurly__product_detail","requestBody":{"content":{"application/json":{"example":{"product_id":"5063110"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for reading a Market Kurly product detail page","properties":{"product_id":{"description":"Market Kurly product identifier from search results","minLength":1,"type":"string"}},"required":["product_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"item":{"current_price":2400,"delivery_types":[],"name":"전용목장우유","product_id":"5063110","product_url":"https://www.kurly.com/goods/5063110","sold_out":false},"source_url":"https://www.kurly.com/goods/5063110"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"market-kurly"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Market Kurly product detail result envelope","properties":{"item":{"additionalProperties":false,"description":"Normalized product row extracted from the detail page when present","properties":{"current_price":{"description":"Current selling price in KRW","type":"number"},"delivery_types":{"description":"Delivery type labels","items":{"description":"Delivery type label","type":"string"},"type":"array"},"discount_rate":{"description":"Discount rate percentage","type":"number"},"image_url":{"description":"Product image URL","type":"string"},"name":{"description":"Product name","type":"string"},"original_price":{"description":"Original or sales price in KRW","type":"number"},"product_id":{"description":"Market Kurly product identifier","type":"string"},"product_url":{"description":"Public product URL","type":"string"},"sold_out":{"description":"Whether the product is sold out","type":"boolean"}},"required":["product_id","name","sold_out","delivery_types","product_url"],"type":"object"},"source_url":{"description":"Public Market Kurly product detail URL used for the request","type":"string"}},"required":["source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Market Kurly product data Product Detail","tags":["market-kurly"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Market Kurly product data","id":"market-kurly"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"product-detail","x-apifuse-operation-key":"market-kurly/product-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"market-kurly","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"6573aa500807298f37bbf9c349acf7d12f19abd2d7fb577e674d754e7f30feec","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/market-kurly/search-products":{"post":{"description":"Use when a tenant needs a read-only Market Kurly keyword search from public web/API surfaces without a user login. It returns normalized product identifiers, names, prices, discount signals, sold-out state, delivery labels, and product URLs while preserving the upstream source URL for audit.\nReturns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.\n\n# Market Kurly product data Search Products\n\nReturns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.\n\n## Normalization notes\n\n- Search/count JSON is normalized into stable product fields.\n- Product detail reads public SSR page data when available.","operationId":"market-kurly__search_products","requestBody":{"content":{"application/json":{"example":{"limit":3,"page":1,"query":"우유"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Market Kurly public products","properties":{"limit":{"default":20,"description":"Maximum items","maximum":50,"minimum":1,"type":"integer"},"page":{"default":1,"description":"Page number","maximum":9007199254740991,"minimum":1,"type":"integer"},"query":{"description":"Product search keyword","minLength":1,"type":"string"}},"required":["query","page","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"current_price":2400,"delivery_types":["샛별배송"],"name":"전용목장우유","original_price":2400,"product_id":"5063110","product_url":"https://www.kurly.com/goods/5063110","sold_out":false}],"page":1,"query":"우유","source_url":"https://api.kurly.com/search/v4/sites/market/normal-search?keyword=%EC%9A%B0%EC%9C%A0&page=1"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"market-kurly"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Market Kurly product search result envelope","properties":{"items":{"description":"Normalized Market Kurly product rows","items":{"additionalProperties":false,"description":"A normalized Market Kurly product row","properties":{"current_price":{"description":"Current selling price in KRW","type":"number"},"delivery_types":{"description":"Delivery type labels","items":{"description":"Delivery type label","type":"string"},"type":"array"},"discount_rate":{"description":"Discount rate percentage","type":"number"},"image_url":{"description":"Product image URL","type":"string"},"name":{"description":"Product name","type":"string"},"original_price":{"description":"Original or sales price in KRW","type":"number"},"product_id":{"description":"Market Kurly product identifier","type":"string"},"product_url":{"description":"Public product URL","type":"string"},"sold_out":{"description":"Whether the product is sold out","type":"boolean"}},"required":["product_id","name","sold_out","delivery_types","product_url"],"type":"object"},"type":"array"},"page":{"description":"Echoed page number","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"query":{"description":"Echoed product search keyword","type":"string"},"source_url":{"description":"Upstream Market Kurly search URL used for the request","type":"string"}},"required":["query","page","items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Market Kurly product data Search Products","tags":["market-kurly"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Market Kurly product data","id":"market-kurly"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search-products","x-apifuse-operation-key":"market-kurly/search-products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"market-kurly","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"68741fd0efe2a37f7d0e44a1566f28982152c0898cda5a9f610d8b588050124a","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/modu-parking/check-availability":{"post":{"description":"Use this operation when search-parking or parking-detail returned a share_seq and the user needs to know which shared parking durations are currently available, including slot prices, before starting payment.\nshare_seq 기반 공유 주차 시간권 가격과 가능 여부를 조회합니다.\n\n# 공유 주차 가능 시간\n\nshare_seq 기반 공유 주차 시간권 가격과 가능 여부를 조회합니다.","operationId":"modu-parking__check_availability","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Modu Parking shared availability","properties":{"health_check_discovery":{"const":true,"description":"Internal health-check flag that permits live share_seq discovery when share_seq is omitted","type":"boolean"},"lat":{"description":"Optional latitude used only when share_seq is omitted for live health-check discovery","type":"number"},"lng":{"description":"Optional longitude used only when share_seq is omitted for live health-check discovery","type":"number"},"location":{"description":"Optional location label used only when share_seq is omitted for live health-check discovery","type":"string"},"share_seq":{"description":"Shared parking sequence id; omitted health checks discover one","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Modu Parking availability result","properties":{"action_hint":{"description":"Suggested next operation","type":"string"},"available":{"description":"Whether at least one slot is available","type":"boolean"},"price_per_hour":{"description":"Approximate price per hour in KRW","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"share_seq":{"description":"Shared parking sequence id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"slots":{"description":"Available slot choices","items":{"additionalProperties":false,"description":"Shared parking time slot","properties":{"available":{"description":"Whether slot is available","type":"boolean"},"end_time":{"description":"Slot end/usage label","type":"string"},"price":{"description":"Slot price in KRW","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"start_time":{"description":"Slot start label","type":"string"}},"required":["start_time","end_time","available","price"],"type":"object"},"type":"array"},"summary":{"description":"Korean availability summary","type":"string"}},"required":["share_seq","available","slots","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"공유 주차 가능 시간","tags":["modu-parking"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"모두의주차장","id":"modu-parking"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"check-availability","x-apifuse-operation-key":"modu-parking/check-availability","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"modu-parking","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"2112caa3291ac40210100a4e6ed2341e791ab2478c312ff21854f29b5a312644","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":20000}},"/v1/modu-parking/parking-detail":{"post":{"description":"Use this operation when a user selected a ticket_id from search-parking and needs the detailed parking lot, price, operating-hour, purchase-day, and app URL information before deciding whether to proceed to SMS verification or payment.\nticket_id 기반 상세, 가격, 운영시간, 구매 가능일을 조회합니다.\n\n# 주차권 상세\n\nticket_id 기반 상세, 가격, 운영시간, 구매 가능일을 조회합니다.","operationId":"modu-parking__parking_detail","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Modu Parking ticket detail","properties":{"health_check_discovery":{"const":true,"description":"Internal health-check flag that permits live ticket discovery when ticket_id is omitted","type":"boolean"},"lat":{"description":"Optional latitude used only when ticket_id is omitted for live health-check discovery","type":"number"},"lng":{"description":"Optional longitude used only when ticket_id is omitted for live health-check discovery","type":"number"},"location":{"description":"Optional location label used only when ticket_id is omitted for live health-check discovery","type":"string"},"ticket_id":{"description":"Ticket id from search-parking; omitted health checks discover one","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Modu Parking ticket detail result","properties":{"action_hint":{"description":"Suggested next operation","type":"string"},"address":{"description":"Parking lot address","type":"string"},"app_url":{"description":"Modu Parking app URL","format":"uri","type":"string"},"availability_label":{"description":"Availability caveat","type":"string"},"available_days":{"description":"Available purchase days","items":{"additionalProperties":false,"description":"Daily purchase slot","properties":{"available":{"description":"Whether purchase is available","type":"boolean"},"date":{"description":"Available date in yyyyMMdd","type":"string"},"day_of_week":{"description":"Korean day-of-week label","type":"string"}},"required":["date","available"],"type":"object"},"type":"array"},"category_label":{"description":"Ticket/category label","type":"string"},"is_purchasable":{"description":"Whether currently purchasable","type":"boolean"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"operating_hours":{"description":"Ticket operating hours","type":"string"},"parkinglot_name":{"description":"Parking lot name","type":"string"},"price_info":{"additionalProperties":false,"description":"Parking ticket price information","properties":{"additional_charge":{"description":"Additional charge if available","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"additional_unit_minutes":{"description":"Additional unit minutes if available","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"basic_charge":{"description":"Basic ticket price in KRW","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"basic_time_minutes":{"description":"Basic included parking time in minutes","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"display":{"description":"Human-readable price summary","type":"string"}},"type":"object"},"share_seq":{"description":"Shared parking sequence id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"summary":{"description":"Korean detail summary","type":"string"},"ticket_id":{"description":"Ticket id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["ticket_id","parkinglot_name","price_info","available_days","is_purchasable","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"주차권 상세","tags":["modu-parking"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"모두의주차장","id":"modu-parking"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"parking-detail","x-apifuse-operation-key":"modu-parking/parking-detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"modu-parking","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"4a9975d579d58d2e0aae8d93063a035dfc7ef1bc317830899ed4f5457afbe038","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-read-only":true,"x-requires-connection":false}},"/v1/modu-parking/search-parking":{"post":{"description":"Use this operation when a user wants to find purchasable Modu Parking tickets near coordinates or a known Korean place label. It queries the map POI endpoint and normalizes parking lots into ticket-level results for follow-up detail, availability, or payment steps.\n위치 주변 모두의주차장 POI와 판매 가능한 주차권을 ticket 단위로 정규화합니다.\n\n# 주차장 검색\n\n위치 주변 모두의주차장 POI와 판매 가능한 주차권을 ticket 단위로 정규화합니다.\n\n## Normalization notes\n\n- 좌표를 geohash 9개 영역으로 변환합니다.\n- 주차장과 주차권을 ticket_id/share_seq 기준으로 dedupe합니다.","operationId":"modu-parking__search_parking","requestBody":{"content":{"application/json":{"example":{"lat":37.497952,"lng":127.027619,"location":"강남역"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for searching Modu Parking lots by location","properties":{"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"location":{"default":"","description":"Known place/address label; coordinates are preferred for exact search","type":"string"}},"required":["location"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"action_hint":"주차장 상세는 parking-detail(ticket_id), 공유 주차장은 check-availability(share_seq)를 호출하세요.","items":[{"address":"서울 강남구 테헤란로 1","app_url":"https://app.modu.kr/map?type=P&id=1001#sheet=2","available_count":12,"category_label":"민영","has_realtime":false,"is_purchasable":true,"lat":37.4979,"lng":127.0276,"operation_type_label":"무인","parking_type_label":"당일권","parkinglot_name":"강남역 테스트 주차장","price_display":"당일권 10,000원","ticket_id":32779}],"searched_location":"37.4980,127.0276","summary":"37.4980,127.0276 주변 주차장 1곳 (민영 1)","total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"modu-parking"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Modu Parking search results","properties":{"action_hint":{"description":"Suggested next operation","type":"string"},"items":{"description":"Matching parking ticket items","items":{"additionalProperties":false,"description":"A normalized Modu Parking ticket search item","properties":{"address":{"description":"Parking lot address","type":"string"},"app_url":{"description":"Modu Parking app web URL","format":"uri","type":"string"},"availability_label":{"description":"Availability caveat such as 매진","type":"string"},"available_count":{"description":"Available parking count if exposed by upstream","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"category_label":{"description":"Parking category label such as 공영 or 민영","type":"string"},"has_realtime":{"description":"Whether real-time shared parking availability exists","type":"boolean"},"is_purchasable":{"description":"Whether the ticket can currently be purchased","type":"boolean"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"operation_type_label":{"description":"Operation type label","type":"string"},"parking_type_label":{"description":"Ticket type label such as 당일권 or 시간권","type":"string"},"parkinglot_name":{"description":"Parking lot display name","type":"string"},"price_display":{"description":"Human-readable price display","type":"string"},"share_seq":{"description":"Shared parking sequence id when real-time shared booking is available","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"ticket_id":{"description":"Parking ticket or coupon id","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["parkinglot_name","category_label","operation_type_label","has_realtime","is_purchasable"],"type":"object"},"type":"array"},"searched_location":{"description":"Resolved search location label","type":"string"},"summary":{"description":"Korean summary of search results","type":"string"},"total_count":{"description":"Number of normalized ticket items","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items","total_count","searched_location","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"주차장 검색","tags":["modu-parking"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"모두의주차장","id":"modu-parking"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search-parking","x-apifuse-operation-key":"modu-parking/search-parking","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"modu-parking","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"3a49ba4ee6de6d6109a1a68c23b9debdd3d7f4707febae97b345dea2b8e0759c","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-read-only":true,"x-requires-connection":false}},"/v1/modu-parking/send-payment-sms":{"post":{"description":"Use this operation when a user is ready to pay for a Modu Parking ticket and needs the upstream SMS authentication code sent to their phone. It returns auth_code_seq for the next start-payment call.\n결제 전 사용자의 휴대폰 번호로 인증번호를 발송하고 auth_code_seq를 반환합니다.\n\n# 결제 SMS 발송\n\n결제 전 사용자의 휴대폰 번호로 인증번호를 발송하고 auth_code_seq를 반환합니다.","operationId":"modu-parking__send_payment_sms","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for sending Modu Parking payment SMS","properties":{"phone":{"description":"Korean mobile phone number, digits preferred","minLength":8,"type":"string"}},"required":["phone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Modu Parking SMS auth result","properties":{"action_hint":{"description":"Suggested next operation","type":"string"},"auth_code_seq":{"description":"SMS auth sequence to pass into start-payment","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"message":{"description":"User-facing send result","type":"string"}},"required":["auth_code_seq","message","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"결제 SMS 발송","tags":["modu-parking"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"모두의주차장","id":"modu-parking"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"send-payment-sms","x-apifuse-operation-key":"modu-parking/send-payment-sms","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"modu-parking","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"baac7aee7a41d769506e684610088b3f9b794a817e41bbe57d7ecaaf2d3d4219","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-requires-connection":false}},"/v1/modu-parking/start-payment":{"post":{"description":"Use this operation when the user has received a Modu Parking SMS code and wants to start payment. It verifies the code, logs in as a guest, and creates either a coupon or shared-parking payment webview URL.\nSMS 인증번호를 검증한 뒤 쿠폰권 또는 공유 주차 결제 웹뷰 URL을 생성합니다.\n\n# 결제 URL 생성\n\nSMS 인증번호를 검증한 뒤 쿠폰권 또는 공유 주차 결제 웹뷰 URL을 생성합니다.","operationId":"modu-parking__start_payment","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for starting a Modu Parking payment webview","properties":{"auth_code_seq":{"description":"Sequence id returned by send-payment-sms","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"car_number":{"default":"","description":"Vehicle number if required by upstream ticket","type":"string"},"pg_type":{"description":"Primary payment gateway: naverpay or nicepay","enum":["naverpay","nicepay"],"type":"string"},"pg_types":{"description":"Payment gateways to generate in one verified session","items":{"description":"Payment gateway to generate: naverpay or nicepay","enum":["naverpay","nicepay"],"type":"string"},"maxItems":2,"minItems":1,"type":"array"},"phone":{"description":"Phone number used for SMS auth","minLength":8,"type":"string"},"point":{"default":0,"description":"Point amount to apply to a shared parking payment","maximum":9007199254740991,"minimum":0,"type":"integer"},"predict_begin_time":{"description":"Coupon begin time from parking-detail in ISO 8601 format","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:\\d{2})$","type":"string"},"predict_end_time":{"description":"Coupon end time from parking-detail in ISO 8601 format","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:\\d{2})$","type":"string"},"price":{"description":"Shared parking ticket price from check-availability","maximum":9007199254740991,"minimum":0,"type":"integer"},"share_seq":{"description":"Shared parking sequence id for share payment","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"sms_code":{"description":"SMS verification code entered by user","minLength":1,"type":"string"},"ticket_id":{"description":"Coupon ticket id for standard ticket payment","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"total_price":{"description":"Final shared parking payment amount after points","maximum":9007199254740991,"minimum":0,"type":"integer"},"using_time":{"default":"60","description":"Shared parking using time in positive integer minutes, e.g. 60","pattern":"^[1-9]\\d*$","type":"string"}},"required":["using_time","phone","sms_code","auth_code_seq","car_number","point"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Modu Parking payment URL result","properties":{"action_hint":{"description":"Suggested user action","type":"string"},"payment_url":{"description":"Payment webview URL","type":"string"},"payment_urls":{"additionalProperties":false,"description":"Payment webview URLs keyed by payment gateway","properties":{"naverpay":{"description":"Naver Pay payment webview URL","type":"string"},"nicepay":{"description":"NicePay payment webview URL","type":"string"}},"type":"object"},"pg_type":{"description":"Primary normalized payment gateway","enum":["naverpay","nicepay"],"type":"string"},"share_seq":{"description":"Shared parking sequence id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"summary":{"description":"Korean payment summary","type":"string"},"ticket_id":{"description":"Coupon ticket id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["payment_url","pg_type","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"결제 URL 생성","tags":["modu-parking"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"모두의주차장","id":"modu-parking"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"start-payment","x-apifuse-operation-key":"modu-parking/start-payment","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"modu-parking","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"48d8f79aa72e91fffef8fd95e1b8fc64eac1074fce6e028a624a5258b5d63f1e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/naver-flight/search-flights":{"post":{"description":"Searches Naver Flight international round-trip direct airfare for one adult economy passenger by departure airport, arrival airport, outbound date, return date, and optional airline filters. Use when the user wants Korean-market round-trip airfare comparison with exact fare rows from Naver. Do NOT use for booking, payment, passenger data collection, domestic-only guarantees, or historical prices. Returns ranked normalized itinerary combinations with outbound and inbound segments, general fare, card fare, promotion fare, baggage type, taxes, and curation tags.\nReturns ranked round-trip airfare rows for one adult economy passenger.\n\n# Naver Flight round-trip search\n\nReturns ranked round-trip airfare rows for one adult economy passenger.\n\n## Normalization notes\n\n- The provider models Naver's current international search request with adultCount=1, seatClass=Y, and isNonstop=true.\n- SSE data payloads are reduced to itinerary/fare combinations and sorted by general fare, then best card fare.\n- The provider is read-only and never books, reserves, pays for, or holds flight tickets.","operationId":"naver-flight__search_flights","requestBody":{"content":{"application/json":{"example":{"airlines":[],"arrival":"NRT","departure":"ICN","departureDate":"2026-07-01","maxResults":10,"returnDate":"2026-07-05"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Naver Flight round-trip international direct-flight search","properties":{"airlines":{"anyOf":[{"description":"Airline code or alias list","items":{"description":"IATA airline code or known airline alias","type":"string"},"type":"array"},{"description":"Comma-separated IATA airline codes or known airline aliases","type":"string"}],"default":[],"description":"Optional airline filters using IATA codes or known Korean/English airline aliases"},"arrival":{"description":"Arrival airport IATA code, for example NRT, KIX, FUK, BKK, or SIN","maxLength":3,"minLength":3,"type":"string"},"departure":{"description":"Departure airport IATA code, for example ICN, GMP, PUS, NRT, or KIX","maxLength":3,"minLength":3,"type":"string"},"departureDate":{"description":"Departure date in YYYY-MM-DD format; must be a valid calendar date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"maxResults":{"default":10,"description":"Maximum number of normalized results to return, from 1 to 20","maximum":20,"minimum":1,"type":"integer"},"returnDate":{"description":"Return date in YYYY-MM-DD format; must be after departureDate","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"}},"required":["departure","arrival","departureDate","airlines","maxResults","returnDate"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"actionHint":"Filter airline: search-flights(departure=ICN, arrival=NRT, departureDate=2026-07-01, returnDate=2026-07-05, airlines=[\"KE\"])","arrival":"NRT","departure":"ICN","departureDate":"2026-07-01","flights":[{"carbonEmission":121000,"curationTags":["최저가","직항최저가"],"fare":{"baggageType":"FREE","bestCardFare":248000,"bestCardName":"카드 할인","bestPartner":"MYWEB","generalFare":258000,"promotionFare":null,"qCharge":18000,"tax":43000},"inbound":{"aircraft":"738","airlineCode":"TW","airlineName":"티웨이항공","arrAirport":"ICN","arrCity":"서울/인천","arrTerminal":"1","arrTime":"20:10","date":"20260705","depAirport":"NRT","depCity":"도쿄/나리타","depTerminal":"2","depTime":"17:30","durationMin":160,"flight":"TW214"},"outbound":{"aircraft":"738","airlineCode":"TW","airlineName":"티웨이항공","arrAirport":"NRT","arrCity":"도쿄/나리타","arrTerminal":"2","arrTime":"16:25","date":"20260701","depAirport":"ICN","depCity":"서울/인천","depTerminal":"1","depTime":"14:00","durationMin":145,"flight":"TW213"},"rank":1},{"carbonEmission":130000,"curationTags":["인기예약"],"fare":{"baggageType":"FREE","bestCardFare":389000,"bestCardName":"카드 할인","bestPartner":"INTERPARK","generalFare":412000,"promotionFare":380000,"qCharge":24000,"tax":65000},"inbound":{"aircraft":"333","airlineCode":"KE","airlineName":"대한항공","arrAirport":"ICN","arrCity":"서울/인천","arrTerminal":"2","arrTime":"15:40","date":"20260705","depAirport":"NRT","depCity":"도쿄/나리타","depTerminal":"1","depTime":"13:00","durationMin":160,"flight":"KE704"},"outbound":{"aircraft":"333","airlineCode":"KE","airlineName":"대한항공","arrAirport":"NRT","arrCity":"도쿄/나리타","arrTerminal":"1","arrTime":"11:30","date":"20260701","depAirport":"ICN","depCity":"서울/인천","depTerminal":"2","depTime":"09:00","durationMin":150,"flight":"KE703"},"rank":2}],"lowestCardFare":248000,"lowestGeneralFare":258000,"returnDate":"2026-07-05","returnedCount":2,"summary":"ICN→NRT 2편, 일반 최저 258,000원, 카드 최저 248,000원","totalKnownCombinations":2,"tripType":"RT"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-flight"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Normalized Naver Flight search response","properties":{"actionHint":{"description":"Suggested follow-up operation call, usually for airline filtering","type":"string"},"arrival":{"description":"Normalized arrival airport IATA code","type":"string"},"departure":{"description":"Normalized departure airport IATA code","type":"string"},"departureDate":{"description":"Departure date in YYYY-MM-DD format","type":"string"},"flights":{"description":"Normalized flight rows sorted by general fare and card fare","items":{"additionalProperties":false,"description":"One normalized flight-search result row","properties":{"carbonEmission":{"description":"Carbon emission value from Naver when available","maximum":9007199254740991,"minimum":0,"type":"integer"},"curationTags":{"description":"Naver curation tag labels, for example 최저가 or 최단시간","items":{"description":"Naver curation tag label","type":"string"},"type":"array"},"fare":{"additionalProperties":false,"description":"Fare summary for this itinerary combination","properties":{"baggageType":{"description":"Baggage fee type, for example FREE, CHARGE, or UNKNOWN","type":"string"},"bestCardFare":{"description":"Lowest confirmed adult fare in KRW including card or partner discounts","maximum":9007199254740991,"minimum":0,"type":"integer"},"bestCardName":{"description":"Naver fare type display name for the best fare","type":"string"},"bestPartner":{"description":"Partner or OTA code that supplied the best fare","type":"string"},"generalFare":{"anyOf":[{"description":"Lowest standard adult fare in KRW when Naver exposes fareType A01","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest standard adult fare in KRW when Naver exposes fareType A01, or null when unavailable"},"promotionFare":{"anyOf":[{"description":"Lowest promotion fare in KRW if present","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest promotion fare in KRW if present, or null when no promotion fare is exposed"},"qCharge":{"description":"Fuel surcharge amount in KRW from the selected general fare when present","maximum":9007199254740991,"minimum":0,"type":"integer"},"tax":{"description":"Tax amount in KRW from the selected general fare when present","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["generalFare","bestCardFare","bestCardName","bestPartner","promotionFare","baggageType","tax","qCharge"],"type":"object"},"inbound":{"anyOf":[{"additionalProperties":false,"description":"Single flight segment in an outbound or inbound itinerary","properties":{"aircraft":{"description":"Aircraft code if upstream provided it, otherwise an empty string","type":"string"},"airlineCode":{"description":"IATA airline code, for example KE, OZ, 7C, or TW","type":"string"},"airlineName":{"description":"Airline display name resolved from Naver status maps when available","type":"string"},"arrAirport":{"description":"Arrival airport IATA code","type":"string"},"arrCity":{"description":"Arrival city or airport display name resolved by Naver","type":"string"},"arrTerminal":{"description":"Arrival terminal if upstream provided it, otherwise an empty string","type":"string"},"arrTime":{"description":"Arrival local time in HH:MM format","type":"string"},"date":{"description":"Departure date in compact YYYYMMDD format from Naver","type":"string"},"depAirport":{"description":"Departure airport IATA code","type":"string"},"depCity":{"description":"Departure city or airport display name resolved by Naver","type":"string"},"depTerminal":{"description":"Departure terminal if upstream provided it, otherwise an empty string","type":"string"},"depTime":{"description":"Departure local time in HH:MM format","type":"string"},"durationMin":{"description":"Flight duration in minutes","maximum":9007199254740991,"minimum":0,"type":"integer"},"flight":{"description":"Flight number combining IATA airline code and number, for example KE703","type":"string"}},"required":["flight","airlineCode","airlineName","depAirport","depCity","depTime","depTerminal","arrAirport","arrCity","arrTime","arrTerminal","date","durationMin","aircraft"],"type":"object"},{"type":"null"}],"description":"Inbound flight segment for round trips, or null for one-way searches"},"outbound":{"additionalProperties":false,"description":"Outbound flight segment","properties":{"aircraft":{"description":"Aircraft code if upstream provided it, otherwise an empty string","type":"string"},"airlineCode":{"description":"IATA airline code, for example KE, OZ, 7C, or TW","type":"string"},"airlineName":{"description":"Airline display name resolved from Naver status maps when available","type":"string"},"arrAirport":{"description":"Arrival airport IATA code","type":"string"},"arrCity":{"description":"Arrival city or airport display name resolved by Naver","type":"string"},"arrTerminal":{"description":"Arrival terminal if upstream provided it, otherwise an empty string","type":"string"},"arrTime":{"description":"Arrival local time in HH:MM format","type":"string"},"date":{"description":"Departure date in compact YYYYMMDD format from Naver","type":"string"},"depAirport":{"description":"Departure airport IATA code","type":"string"},"depCity":{"description":"Departure city or airport display name resolved by Naver","type":"string"},"depTerminal":{"description":"Departure terminal if upstream provided it, otherwise an empty string","type":"string"},"depTime":{"description":"Departure local time in HH:MM format","type":"string"},"durationMin":{"description":"Flight duration in minutes","maximum":9007199254740991,"minimum":0,"type":"integer"},"flight":{"description":"Flight number combining IATA airline code and number, for example KE703","type":"string"}},"required":["flight","airlineCode","airlineName","depAirport","depCity","depTime","depTerminal","arrAirport","arrCity","arrTime","arrTerminal","date","durationMin","aircraft"],"type":"object"},"rank":{"description":"1-based fare rank after normalization and sorting","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["rank","outbound","inbound","fare","curationTags","carbonEmission"],"type":"object"},"type":"array"},"lowestCardFare":{"anyOf":[{"description":"Lowest returned card or partner fare in KRW","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest returned card or partner fare in KRW, or null if unavailable"},"lowestGeneralFare":{"anyOf":[{"description":"Lowest returned general fare in KRW","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest returned general fare in KRW, or null if unavailable"},"returnDate":{"anyOf":[{"description":"Return date in YYYY-MM-DD format for round trips","type":"string"},{"type":"null"}],"description":"Return date in YYYY-MM-DD format for round trips, otherwise null"},"returnedCount":{"description":"Number of flight rows returned after maxResults truncation","maximum":9007199254740991,"minimum":0,"type":"integer"},"summary":{"description":"Human-readable summary of the route, returned rows, and lowest fares","type":"string"},"totalKnownCombinations":{"description":"Number of fare-bearing combinations known before maxResults truncation","maximum":9007199254740991,"minimum":0,"type":"integer"},"tripType":{"description":"Trip type: RT for round trip or OW for one way","enum":["RT","OW"],"type":"string"}},"required":["tripType","departure","arrival","departureDate","returnDate","returnedCount","totalKnownCombinations","flights","lowestGeneralFare","lowestCardFare","summary","actionHint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid airport or date input COOKIE_ACQUISITION_FAILED: Naver nlog did not issue an NNB cookie","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid airport or date input","retryable":false,"status":400},{"code":"COOKIE_ACQUISITION_FAILED","description":"Naver nlog did not issue an NNB cookie","retryable":false,"status":400}]},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"UPSTREAM_RATE_LIMIT: Naver Flight rate-limited the search Retryable.","x-apifuse-error-code":"UPSTREAM_RATE_LIMIT","x-apifuse-error-codes":[{"code":"UPSTREAM_RATE_LIMIT","description":"Naver Flight rate-limited the search","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Flight returned no usable data or an upstream error Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Flight returned no usable data or an upstream error","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"Naver Flight round-trip search","tags":["naver-flight"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Naver Flight API","id":"naver-flight"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid airport or date input","retryable":false,"status":400},{"code":"COOKIE_ACQUISITION_FAILED","description":"Naver nlog did not issue an NNB cookie","retryable":false,"status":400},{"code":"UPSTREAM_RATE_LIMIT","description":"Naver Flight rate-limited the search","retryable":true,"status":429},{"code":"UPSTREAM_ERROR","description":"Naver Flight returned no usable data or an upstream error","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search-flights","x-apifuse-operation-key":"naver-flight/search-flights","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-flight","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"2b1d9542060f05efbe857332b5eac5e8b18ad607f4e1078eb931314246dea99a","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"airlines":"대한항공/KE, 아시아나/OZ, 티웨이/TW처럼 항공사명 또는 IATA 코드를 넣을 수 있습니다.","arrival":"도착 공항 IATA 코드입니다. 도쿄 나리타는 NRT, 오사카 간사이는 KIX, 후쿠오카는 FUK를 사용하세요.","departure":"출발 공항 IATA 코드입니다. 서울/인천은 ICN, 김포는 GMP, 부산은 PUS를 사용하세요."},"x-idempotent":true,"x-rate-limit":{"calls":30,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/naver-flight/search-oneway-flights":{"post":{"description":"Searches Naver Flight international one-way direct airfare for one adult economy passenger by departure airport, arrival airport, outbound date, and optional airline filters. Use when the user wants Korean-market one-way airfare comparison with exact fare rows from Naver. Do NOT use for round-trip planning that needs a return leg, booking, payment, passenger data collection, domestic-only guarantees, or historical prices. Returns ranked normalized one-way itinerary combinations with outbound segment, general fare, card fare, promotion fare, baggage type, taxes, and curation tags.\nReturns ranked one-way airfare rows for one adult economy passenger.\n\n# Naver Flight one-way search\n\nReturns ranked one-way airfare rows for one adult economy passenger.\n\n## Normalization notes\n\n- The provider models Naver's current international search request with adultCount=1, seatClass=Y, and isNonstop=true.\n- SSE data payloads are reduced to itinerary/fare combinations and sorted by general fare, then best card fare.\n- The provider is read-only and never books, reserves, pays for, or holds flight tickets.","operationId":"naver-flight__search_oneway_flights","requestBody":{"content":{"application/json":{"example":{"airlines":[],"arrival":"NRT","departure":"ICN","departureDate":"2026-07-01","maxResults":10},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Naver Flight one-way international direct-flight search","properties":{"airlines":{"anyOf":[{"description":"Airline code or alias list","items":{"description":"IATA airline code or known airline alias","type":"string"},"type":"array"},{"description":"Comma-separated IATA airline codes or known airline aliases","type":"string"}],"default":[],"description":"Optional airline filters using IATA codes or known Korean/English airline aliases"},"arrival":{"description":"Arrival airport IATA code, for example NRT, KIX, FUK, BKK, or SIN","maxLength":3,"minLength":3,"type":"string"},"departure":{"description":"Departure airport IATA code, for example ICN, GMP, PUS, NRT, or KIX","maxLength":3,"minLength":3,"type":"string"},"departureDate":{"description":"Departure date in YYYY-MM-DD format; must be a valid calendar date","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"maxResults":{"default":10,"description":"Maximum number of normalized results to return, from 1 to 20","maximum":20,"minimum":1,"type":"integer"}},"required":["departure","arrival","departureDate","airlines","maxResults"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"actionHint":"Filter airline: search-oneway-flights(departure=ICN, arrival=NRT, departureDate=2026-07-01, airlines=[\"KE\"])","arrival":"NRT","departure":"ICN","departureDate":"2026-07-01","flights":[{"carbonEmission":121000,"curationTags":["최저가","직항최저가"],"fare":{"baggageType":"FREE","bestCardFare":248000,"bestCardName":"카드 할인","bestPartner":"MYWEB","generalFare":258000,"promotionFare":null,"qCharge":18000,"tax":43000},"inbound":null,"outbound":{"aircraft":"738","airlineCode":"TW","airlineName":"티웨이항공","arrAirport":"NRT","arrCity":"도쿄/나리타","arrTerminal":"2","arrTime":"16:25","date":"20260701","depAirport":"ICN","depCity":"서울/인천","depTerminal":"1","depTime":"14:00","durationMin":145,"flight":"TW213"},"rank":1}],"lowestCardFare":248000,"lowestGeneralFare":258000,"returnDate":null,"returnedCount":1,"summary":"ICN→NRT 1편, 일반 최저 258,000원, 카드 최저 248,000원","totalKnownCombinations":1,"tripType":"OW"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-flight"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Normalized Naver Flight search response","properties":{"actionHint":{"description":"Suggested follow-up operation call, usually for airline filtering","type":"string"},"arrival":{"description":"Normalized arrival airport IATA code","type":"string"},"departure":{"description":"Normalized departure airport IATA code","type":"string"},"departureDate":{"description":"Departure date in YYYY-MM-DD format","type":"string"},"flights":{"description":"Normalized flight rows sorted by general fare and card fare","items":{"additionalProperties":false,"description":"One normalized flight-search result row","properties":{"carbonEmission":{"description":"Carbon emission value from Naver when available","maximum":9007199254740991,"minimum":0,"type":"integer"},"curationTags":{"description":"Naver curation tag labels, for example 최저가 or 최단시간","items":{"description":"Naver curation tag label","type":"string"},"type":"array"},"fare":{"additionalProperties":false,"description":"Fare summary for this itinerary combination","properties":{"baggageType":{"description":"Baggage fee type, for example FREE, CHARGE, or UNKNOWN","type":"string"},"bestCardFare":{"description":"Lowest confirmed adult fare in KRW including card or partner discounts","maximum":9007199254740991,"minimum":0,"type":"integer"},"bestCardName":{"description":"Naver fare type display name for the best fare","type":"string"},"bestPartner":{"description":"Partner or OTA code that supplied the best fare","type":"string"},"generalFare":{"anyOf":[{"description":"Lowest standard adult fare in KRW when Naver exposes fareType A01","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest standard adult fare in KRW when Naver exposes fareType A01, or null when unavailable"},"promotionFare":{"anyOf":[{"description":"Lowest promotion fare in KRW if present","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest promotion fare in KRW if present, or null when no promotion fare is exposed"},"qCharge":{"description":"Fuel surcharge amount in KRW from the selected general fare when present","maximum":9007199254740991,"minimum":0,"type":"integer"},"tax":{"description":"Tax amount in KRW from the selected general fare when present","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["generalFare","bestCardFare","bestCardName","bestPartner","promotionFare","baggageType","tax","qCharge"],"type":"object"},"inbound":{"anyOf":[{"additionalProperties":false,"description":"Single flight segment in an outbound or inbound itinerary","properties":{"aircraft":{"description":"Aircraft code if upstream provided it, otherwise an empty string","type":"string"},"airlineCode":{"description":"IATA airline code, for example KE, OZ, 7C, or TW","type":"string"},"airlineName":{"description":"Airline display name resolved from Naver status maps when available","type":"string"},"arrAirport":{"description":"Arrival airport IATA code","type":"string"},"arrCity":{"description":"Arrival city or airport display name resolved by Naver","type":"string"},"arrTerminal":{"description":"Arrival terminal if upstream provided it, otherwise an empty string","type":"string"},"arrTime":{"description":"Arrival local time in HH:MM format","type":"string"},"date":{"description":"Departure date in compact YYYYMMDD format from Naver","type":"string"},"depAirport":{"description":"Departure airport IATA code","type":"string"},"depCity":{"description":"Departure city or airport display name resolved by Naver","type":"string"},"depTerminal":{"description":"Departure terminal if upstream provided it, otherwise an empty string","type":"string"},"depTime":{"description":"Departure local time in HH:MM format","type":"string"},"durationMin":{"description":"Flight duration in minutes","maximum":9007199254740991,"minimum":0,"type":"integer"},"flight":{"description":"Flight number combining IATA airline code and number, for example KE703","type":"string"}},"required":["flight","airlineCode","airlineName","depAirport","depCity","depTime","depTerminal","arrAirport","arrCity","arrTime","arrTerminal","date","durationMin","aircraft"],"type":"object"},{"type":"null"}],"description":"Inbound flight segment for round trips, or null for one-way searches"},"outbound":{"additionalProperties":false,"description":"Outbound flight segment","properties":{"aircraft":{"description":"Aircraft code if upstream provided it, otherwise an empty string","type":"string"},"airlineCode":{"description":"IATA airline code, for example KE, OZ, 7C, or TW","type":"string"},"airlineName":{"description":"Airline display name resolved from Naver status maps when available","type":"string"},"arrAirport":{"description":"Arrival airport IATA code","type":"string"},"arrCity":{"description":"Arrival city or airport display name resolved by Naver","type":"string"},"arrTerminal":{"description":"Arrival terminal if upstream provided it, otherwise an empty string","type":"string"},"arrTime":{"description":"Arrival local time in HH:MM format","type":"string"},"date":{"description":"Departure date in compact YYYYMMDD format from Naver","type":"string"},"depAirport":{"description":"Departure airport IATA code","type":"string"},"depCity":{"description":"Departure city or airport display name resolved by Naver","type":"string"},"depTerminal":{"description":"Departure terminal if upstream provided it, otherwise an empty string","type":"string"},"depTime":{"description":"Departure local time in HH:MM format","type":"string"},"durationMin":{"description":"Flight duration in minutes","maximum":9007199254740991,"minimum":0,"type":"integer"},"flight":{"description":"Flight number combining IATA airline code and number, for example KE703","type":"string"}},"required":["flight","airlineCode","airlineName","depAirport","depCity","depTime","depTerminal","arrAirport","arrCity","arrTime","arrTerminal","date","durationMin","aircraft"],"type":"object"},"rank":{"description":"1-based fare rank after normalization and sorting","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["rank","outbound","inbound","fare","curationTags","carbonEmission"],"type":"object"},"type":"array"},"lowestCardFare":{"anyOf":[{"description":"Lowest returned card or partner fare in KRW","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest returned card or partner fare in KRW, or null if unavailable"},"lowestGeneralFare":{"anyOf":[{"description":"Lowest returned general fare in KRW","maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Lowest returned general fare in KRW, or null if unavailable"},"returnDate":{"anyOf":[{"description":"Return date in YYYY-MM-DD format for round trips","type":"string"},{"type":"null"}],"description":"Return date in YYYY-MM-DD format for round trips, otherwise null"},"returnedCount":{"description":"Number of flight rows returned after maxResults truncation","maximum":9007199254740991,"minimum":0,"type":"integer"},"summary":{"description":"Human-readable summary of the route, returned rows, and lowest fares","type":"string"},"totalKnownCombinations":{"description":"Number of fare-bearing combinations known before maxResults truncation","maximum":9007199254740991,"minimum":0,"type":"integer"},"tripType":{"description":"Trip type: RT for round trip or OW for one way","enum":["RT","OW"],"type":"string"}},"required":["tripType","departure","arrival","departureDate","returnDate","returnedCount","totalKnownCombinations","flights","lowestGeneralFare","lowestCardFare","summary","actionHint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: Invalid airport or date input COOKIE_ACQUISITION_FAILED: Naver nlog did not issue an NNB cookie","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid airport or date input","retryable":false,"status":400},{"code":"COOKIE_ACQUISITION_FAILED","description":"Naver nlog did not issue an NNB cookie","retryable":false,"status":400}]},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"UPSTREAM_RATE_LIMIT: Naver Flight rate-limited the search Retryable.","x-apifuse-error-code":"UPSTREAM_RATE_LIMIT","x-apifuse-error-codes":[{"code":"UPSTREAM_RATE_LIMIT","description":"Naver Flight rate-limited the search","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Flight returned no usable data or an upstream error Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Flight returned no usable data or an upstream error","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"Naver Flight one-way search","tags":["naver-flight"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Naver Flight API","id":"naver-flight"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"Invalid airport or date input","retryable":false,"status":400},{"code":"COOKIE_ACQUISITION_FAILED","description":"Naver nlog did not issue an NNB cookie","retryable":false,"status":400},{"code":"UPSTREAM_RATE_LIMIT","description":"Naver Flight rate-limited the search","retryable":true,"status":429},{"code":"UPSTREAM_ERROR","description":"Naver Flight returned no usable data or an upstream error","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search-oneway-flights","x-apifuse-operation-key":"naver-flight/search-oneway-flights","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-flight","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"845a6d3bf00be9899938a6d4c81243443916481b9aa7f4f366d69a7c5d5125ea","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-hints":{"airlines":"대한항공/KE, 아시아나/OZ, 티웨이/TW처럼 항공사명 또는 IATA 코드를 넣을 수 있습니다.","arrival":"도착 공항 IATA 코드입니다. 도쿄 나리타는 NRT, 오사카 간사이는 KIX, 후쿠오카는 FUK를 사용하세요.","departure":"출발 공항 IATA 코드입니다. 서울/인천은 ICN, 김포는 GMP, 부산은 PUS를 사용하세요."},"x-idempotent":true,"x-rate-limit":{"calls":30,"window":"minute"},"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/naver-map-api/bicycle-directions":{"post":{"description":"Use when you need bicycle-friendly routing between two coordinates, optionally through waypoints, using Naver bicycle routing. Do NOT use for cars, scooters, pedestrian routing, or official cycling safety guarantees. Returns route candidates with distance, duration, path geometry, legs, and guide text suitable for previewing a route.\n자전거 경로 후보를 반환합니다.\n\n# 네이버 지도 자전거 길찾기\n\n자전거 경로 후보를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__bicycle_directions","requestBody":{"content":{"application/json":{"example":{"dest_lat":37.5133,"dest_lng":127.1,"origin_lat":37.5572,"origin_lng":126.9254,"waypoints":[]},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 길찾기 공통 입력입니다.","properties":{"dest_lat":{"description":"도착지 위도입니다.","type":"number"},"dest_lng":{"description":"도착지 경도입니다.","type":"number"},"origin_lat":{"description":"출발지 위도입니다.","type":"number"},"origin_lng":{"description":"출발지 경도입니다.","type":"number"},"waypoints":{"default":[],"description":"선택 경유지 목록입니다.","items":{"additionalProperties":false,"description":"경유지 좌표 객체입니다.","properties":{"lat":{"description":"경유지 위도입니다.","type":"number"},"lng":{"description":"경유지 경도입니다.","type":"number"},"name":{"description":"경유지 이름입니다.","type":"string"}},"required":["lat","lng"],"type":"object"},"type":"array"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng","waypoints"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"routes":[{"guides":[{"distanceMeters":12600,"durationSeconds":2700,"instruction":"한강 자전거길 진입"}],"id":"bike-1","label":"자전거 추천","path":[{"lat":37.5572,"lng":126.9254},{"lat":37.5133,"lng":127.1}],"summary":{"distanceMeters":12600,"durationSeconds":2700}}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 길찾기 결과입니다.","properties":{"routes":{"description":"경로 후보 목록입니다.","items":{"additionalProperties":false,"description":"길찾기 경로 객체입니다.","properties":{"guides":{"description":"경로 안내 단계 목록입니다.","items":{"additionalProperties":false,"description":"경로 안내 단계 객체입니다.","properties":{"distanceMeters":{"description":"이 안내 구간의 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"이 안내 구간의 예상 시간(초)입니다.","type":"number"},"instruction":{"description":"안내 문구입니다.","type":"string"}},"required":["instruction","distanceMeters"],"type":"object"},"type":"array"},"id":{"description":"경로 ID 또는 순번입니다.","type":"string"},"label":{"description":"경로 라벨입니다.","type":"string"},"path":{"description":"경로 좌표 배열입니다.","items":{"additionalProperties":false,"description":"좌표 객체입니다.","properties":{"lat":{"description":"위도 값입니다.","type":"number"},"lng":{"description":"경도 값입니다.","type":"number"}},"required":["lat","lng"],"type":"object"},"type":"array"},"summary":{"additionalProperties":false,"description":"경로 요약 정보입니다.","properties":{"distanceMeters":{"description":"총 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"총 예상 시간(초)입니다.","type":"number"},"fare":{"description":"예상 요금입니다.","type":"number"},"taxiFare":{"description":"예상 택시 요금입니다.","type":"number"},"tollFare":{"description":"통행료입니다.","type":"number"}},"required":["distanceMeters","durationSeconds"],"type":"object"}},"required":["id","label","summary","path","guides"],"type":"object"},"type":"array"}},"required":["routes"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 자전거 길찾기","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"bicycle-directions","x-apifuse-operation-key":"naver-map-api/bicycle-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"a1998c10424b5ae9e92d1c8e4bdcdef0c6c4a3575d08f23214a76dd26edd03a6","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"path":"자전거 경로 leg 좌표를 공통 route path로 정규화합니다."},"x-hints":{"dest_lat":"도착지 위도입니다. 예: 경복궁 37.5796, 잠실역 37.5133, 인천공항 37.4602","dest_lng":"도착지 경도입니다. 예: 경복궁 126.9770, 잠실역 127.1000, 인천공항 126.4407","origin_lat":"출발지 위도입니다. 예: 서울시청 37.5665, 강남역 37.4979, 홍대입구 37.5572","origin_lng":"출발지 경도입니다. 예: 서울시청 126.9780, 강남역 127.0276, 홍대입구 126.9254"},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/car-directions":{"post":{"description":"Use when you need a Naver automobile route between Seoul-area or Korea-wide coordinates with optional waypoints and vehicle options. Do NOT use for transit, walking, bicycle, or legal toll billing decisions. Returns route candidates with distance, duration, fares, path geometry, road sections, and turn-by-turn guide text.\n자동차 주행 경로 후보를 반환합니다.\n\n# 네이버 지도 자동차 길찾기\n\n자동차 주행 경로 후보를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__car_directions","requestBody":{"content":{"application/json":{"example":{"car_type":1,"dest_lat":37.5796,"dest_lng":126.977,"fuel_type":1,"mileage":12,"option":"traoptimal","origin_lat":37.5665,"origin_lng":126.978,"waypoints":[]},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 자동차 길찾기 입력입니다.","properties":{"car_type":{"default":1,"description":"차종 코드입니다.","maximum":6,"minimum":1,"type":"integer"},"dest_lat":{"description":"도착지 위도입니다.","type":"number"},"dest_lng":{"description":"도착지 경도입니다.","type":"number"},"fuel_type":{"default":1,"description":"연료 유형 코드입니다.","maximum":7,"minimum":1,"type":"integer"},"mileage":{"default":12,"description":"연비(km/L)입니다.","exclusiveMinimum":0,"type":"number"},"option":{"default":"traoptimal","description":"자동차 경로 옵션입니다.","enum":["traoptimal","tracomfort","traoptdist","trafree","trafast"],"type":"string"},"origin_lat":{"description":"출발지 위도입니다.","type":"number"},"origin_lng":{"description":"출발지 경도입니다.","type":"number"},"waypoints":{"default":[],"description":"선택 경유지 목록입니다.","items":{"additionalProperties":false,"description":"경유지 좌표 객체입니다.","properties":{"lat":{"description":"경유지 위도입니다.","type":"number"},"lng":{"description":"경유지 경도입니다.","type":"number"},"name":{"description":"경유지 이름입니다.","type":"string"}},"required":["lat","lng"],"type":"object"},"type":"array"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng","waypoints","option","car_type","fuel_type","mileage"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"routes":[{"guides":[{"distanceMeters":2100,"durationSeconds":540,"instruction":"세종대로를 따라 이동"}],"id":"route-1","label":"추천","path":[{"lat":37.5665,"lng":126.978},{"lat":37.5796,"lng":126.977}],"summary":{"distanceMeters":2100,"durationSeconds":540,"taxiFare":5800,"tollFare":0}}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 길찾기 결과입니다.","properties":{"routes":{"description":"경로 후보 목록입니다.","items":{"additionalProperties":false,"description":"길찾기 경로 객체입니다.","properties":{"guides":{"description":"경로 안내 단계 목록입니다.","items":{"additionalProperties":false,"description":"경로 안내 단계 객체입니다.","properties":{"distanceMeters":{"description":"이 안내 구간의 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"이 안내 구간의 예상 시간(초)입니다.","type":"number"},"instruction":{"description":"안내 문구입니다.","type":"string"}},"required":["instruction","distanceMeters"],"type":"object"},"type":"array"},"id":{"description":"경로 ID 또는 순번입니다.","type":"string"},"label":{"description":"경로 라벨입니다.","type":"string"},"path":{"description":"경로 좌표 배열입니다.","items":{"additionalProperties":false,"description":"좌표 객체입니다.","properties":{"lat":{"description":"위도 값입니다.","type":"number"},"lng":{"description":"경도 값입니다.","type":"number"}},"required":["lat","lng"],"type":"object"},"type":"array"},"summary":{"additionalProperties":false,"description":"경로 요약 정보입니다.","properties":{"distanceMeters":{"description":"총 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"총 예상 시간(초)입니다.","type":"number"},"fare":{"description":"예상 요금입니다.","type":"number"},"taxiFare":{"description":"예상 택시 요금입니다.","type":"number"},"tollFare":{"description":"통행료입니다.","type":"number"}},"required":["distanceMeters","durationSeconds"],"type":"object"}},"required":["id","label","summary","path","guides"],"type":"object"},"type":"array"}},"required":["routes"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 자동차 길찾기","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"car-directions","x-apifuse-operation-key":"naver-map-api/car-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"dd7fa0d49f989e7dc6deb198de5d43e550aef9724ac11243c8fa0ed2ae2d675e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"path":"상류 좌표 배열을 위도·경도 객체 배열로 변환합니다."},"x-hints":{"dest_lat":"도착지 위도입니다. 예: 경복궁 37.5796, 잠실역 37.5133, 인천공항 37.4602","dest_lng":"도착지 경도입니다. 예: 경복궁 126.9770, 잠실역 127.1000, 인천공항 126.4407","origin_lat":"출발지 위도입니다. 예: 서울시청 37.5665, 강남역 37.4979, 홍대입구 37.5572","origin_lng":"출발지 경도입니다. 예: 서울시청 126.9780, 강남역 127.0276, 홍대입구 126.9254"},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/collection-places":{"post":{"description":"Use when an authenticated user wants the places stored inside one Naver Map collection they own or can view through their session. Do NOT use for listing all collections, public search, or changing collection membership. Returns saved place rows with collection ID, place ID, coordinates, address, memo, tags, and timestamps.\n컬렉션에 저장된 장소들을 반환합니다.\n\n# 네이버 지도 저장 목록 장소\n\n컬렉션에 저장된 장소들을 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__collection_places","requestBody":{"content":{"application/json":{"example":{"collection_id":"col_synth_1","page":1,"size":50},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 컬렉션 장소 입력입니다.","properties":{"collection_id":{"description":"조회할 저장 컬렉션 ID입니다.","minLength":1,"type":"string"},"page":{"default":1,"description":"조회할 장소 페이지 번호입니다.","maximum":9007199254740991,"minimum":1,"type":"integer"},"size":{"default":50,"description":"페이지당 장소 수입니다.","maximum":100,"minimum":1,"type":"integer"}},"required":["collection_id","page","size"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"collectionId":"col_synth_1","page":1,"places":[{"address":"서울특별시 (합성 주소)","category":"테스트","collectionId":"col_synth_1","createdAt":"2026-04-10T09:00:00+09:00","id":"saved_synth_1","lat":37.5,"lng":127,"memo":"합성 메모","name":"합성 장소","placeId":"place_synth_1","roadAddress":"서울특별시 (합성 도로명)","tags":["합성","테스트"],"visitedAt":"2026-04-01"}],"size":50,"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 컬렉션 장소 결과입니다.","properties":{"collectionId":{"description":"조회한 컬렉션 ID입니다.","type":"string"},"page":{"description":"응답 페이지 번호입니다.","type":"number"},"places":{"description":"저장 장소 목록입니다.","items":{"additionalProperties":false,"description":"네이버 지도 저장 장소 객체입니다.","properties":{"address":{"description":"장소 주소입니다.","type":"string"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"collectionId":{"description":"소속 컬렉션 ID입니다.","type":"string"},"createdAt":{"description":"저장 시각입니다.","type":"string"},"id":{"description":"저장 항목 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"memo":{"description":"사용자 메모입니다.","type":"string"},"name":{"description":"장소 이름입니다.","type":"string"},"placeId":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"roadAddress":{"description":"장소 도로명 주소입니다.","type":"string"},"tags":{"description":"사용자 태그 목록입니다.","items":{"description":"사용자 태그입니다.","type":"string"},"type":"array"},"visitedAt":{"description":"방문 일자입니다.","type":"string"}},"required":["id","collectionId","placeId","name","category","address","lat","lng","tags"],"type":"object"},"type":"array"},"size":{"description":"응답 페이지 크기입니다.","type":"number"},"total":{"description":"총 저장 장소 수입니다.","type":"number"}},"required":["collectionId","page","size","total","places"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"네이버 지도 저장 목록 장소","tags":["naver-map-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"collection-places","x-apifuse-operation-key":"naver-map-api/collection-places","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"7adeaf5b4a66aa9b477cbe83dc48a00a5ea8fc80edae0cca29b05d80c9827209","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"collectionId":"요청 컬렉션 ID를 각 저장 장소에 주입합니다."},"x-hints":{"collection_id":"collections 작업에서 받은 컬렉션 ID입니다.","page":"장소 목록 페이지입니다.","size":"한 번에 조회할 장소 수입니다."},"x-idempotent":true,"x-open-world":false,"x-rate-limit":{"calls":40,"window":"minute"},"x-read-only":true,"x-requires-connection":true}},"/v1/naver-map-api/collections":{"post":{"description":"Use when an authenticated user wants to list their own Naver Map saved-place collections after pasting a valid browser cookie. Do NOT use for public place search, unauthenticated access, or modifying saved places. Returns synthetic-safe normalized collection metadata including IDs, names, counts, owner, visibility, and updated timestamps.\n사용자 저장 컬렉션 목록을 반환합니다.\n\n# 네이버 지도 저장 목록\n\n사용자 저장 컬렉션 목록을 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__collections","requestBody":{"content":{"application/json":{"example":{"page":1,"size":20},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 저장 컬렉션 입력입니다.","properties":{"page":{"default":1,"description":"조회할 컬렉션 페이지 번호입니다.","maximum":9007199254740991,"minimum":1,"type":"integer"},"size":{"default":20,"description":"페이지당 컬렉션 수입니다.","maximum":100,"minimum":1,"type":"integer"}},"required":["page","size"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"collections":[{"description":"합성 저장 목록","id":"col_synth_1","isPrivate":true,"name":"테스트 컬렉션","ownerUserId":"synth-user-1","placeCount":1,"updatedAt":"2026-04-10T09:00:00+09:00"}],"page":1,"size":20,"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 저장 컬렉션 결과입니다.","properties":{"collections":{"description":"저장 컬렉션 목록입니다.","items":{"additionalProperties":false,"description":"네이버 지도 저장 컬렉션 객체입니다.","properties":{"description":{"description":"컬렉션 설명입니다.","type":"string"},"id":{"description":"저장 컬렉션 ID입니다.","type":"string"},"isPrivate":{"description":"비공개 컬렉션 여부입니다.","type":"boolean"},"name":{"description":"저장 컬렉션 이름입니다.","type":"string"},"ownerUserId":{"description":"소유자 사용자 ID입니다.","type":"string"},"placeCount":{"description":"컬렉션 내 장소 수입니다.","type":"number"},"updatedAt":{"description":"마지막 수정 시각입니다.","type":"string"}},"required":["id","name","placeCount","isPrivate"],"type":"object"},"type":"array"},"page":{"description":"응답 페이지 번호입니다.","type":"number"},"size":{"description":"응답 페이지 크기입니다.","type":"number"},"total":{"description":"총 컬렉션 수입니다.","type":"number"}},"required":["page","size","total","collections"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"네이버 지도 저장 목록","tags":["naver-map-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"collections","x-apifuse-operation-key":"naver-map-api/collections","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"43c8d1878cbc4f9115ff199744398730ddd01d26d2aaf4f35a3dc6beb75f9b44","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"total":"상류 total 값이 없으면 반환된 컬렉션 수를 사용합니다."},"x-hints":{"page":"컬렉션 목록 페이지입니다.","size":"한 번에 조회할 컬렉션 수입니다."},"x-idempotent":true,"x-open-world":false,"x-rate-limit":{"calls":40,"window":"minute"},"x-read-only":true,"x-requires-connection":true}},"/v1/naver-map-api/export":{"post":{"description":"Use when an authenticated user wants a bounded read-only export of their Naver Map saved collections and places for backup or migration planning. Do NOT use for continuous crawling, public search, or write operations. Returns collections with nested places and a truncated boolean that signals whether max_collections or max_places_per_collection removed upstream data.\n저장 컬렉션과 장소를 합친 백업 데이터를 반환합니다.\n\n# 네이버 지도 저장 목록 내보내기\n\n저장 컬렉션과 장소를 합친 백업 데이터를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__export","requestBody":{"content":{"application/json":{"example":{"max_collections":20,"max_places_per_collection":100},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 저장 목록 내보내기 입력입니다.","properties":{"max_collections":{"default":20,"description":"내보낼 최대 컬렉션 수입니다.","maximum":100,"minimum":1,"type":"integer"},"max_places_per_collection":{"default":100,"description":"컬렉션당 내보낼 최대 장소 수입니다.","maximum":500,"minimum":1,"type":"integer"}},"required":["max_collections","max_places_per_collection"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"collections":[{"description":"합성 저장 목록","id":"col_synth_1","isPrivate":true,"name":"테스트 컬렉션","ownerUserId":"synth-user-1","placeCount":1,"places":[{"address":"서울특별시 (합성 주소)","category":"테스트","collectionId":"col_synth_1","createdAt":"2026-04-10T09:00:00+09:00","id":"saved_synth_1","lat":37.5,"lng":127,"memo":"합성 메모","name":"합성 장소","placeId":"place_synth_1","roadAddress":"서울특별시 (합성 도로명)","tags":["합성","테스트"],"visitedAt":"2026-04-01"}],"updatedAt":"2026-04-10T09:00:00+09:00"}],"truncated":false},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 저장 목록 내보내기 결과입니다.","properties":{"collections":{"description":"내보낸 컬렉션과 장소 목록입니다.","items":{"additionalProperties":false,"description":"내보낸 컬렉션 객체입니다.","properties":{"description":{"description":"컬렉션 설명입니다.","type":"string"},"id":{"description":"저장 컬렉션 ID입니다.","type":"string"},"isPrivate":{"description":"비공개 컬렉션 여부입니다.","type":"boolean"},"name":{"description":"저장 컬렉션 이름입니다.","type":"string"},"ownerUserId":{"description":"소유자 사용자 ID입니다.","type":"string"},"placeCount":{"description":"컬렉션 내 장소 수입니다.","type":"number"},"places":{"description":"컬렉션에 포함된 저장 장소 목록입니다.","items":{"additionalProperties":false,"description":"네이버 지도 저장 장소 객체입니다.","properties":{"address":{"description":"장소 주소입니다.","type":"string"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"collectionId":{"description":"소속 컬렉션 ID입니다.","type":"string"},"createdAt":{"description":"저장 시각입니다.","type":"string"},"id":{"description":"저장 항목 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"memo":{"description":"사용자 메모입니다.","type":"string"},"name":{"description":"장소 이름입니다.","type":"string"},"placeId":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"roadAddress":{"description":"장소 도로명 주소입니다.","type":"string"},"tags":{"description":"사용자 태그 목록입니다.","items":{"description":"사용자 태그입니다.","type":"string"},"type":"array"},"visitedAt":{"description":"방문 일자입니다.","type":"string"}},"required":["id","collectionId","placeId","name","category","address","lat","lng","tags"],"type":"object"},"type":"array"},"updatedAt":{"description":"마지막 수정 시각입니다.","type":"string"}},"required":["id","name","placeCount","isPrivate","places"],"type":"object"},"type":"array"},"truncated":{"description":"입력 제한 때문에 일부 컬렉션 또는 장소가 제외되었는지 여부입니다.","type":"boolean"}},"required":["collections","truncated"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"네이버 지도 저장 목록 내보내기","tags":["naver-map-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"export","x-apifuse-operation-key":"naver-map-api/export","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"841abdc1a4f59412bc2de256df281e8a349091b4d328d04ba256e56e58376609","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"truncated":"컬렉션 또는 장소 수가 입력 상한을 초과하면 true입니다."},"x-hints":{"max_collections":"가져올 컬렉션 상한입니다.","max_places_per_collection":"각 컬렉션에서 가져올 장소 상한입니다."},"x-idempotent":true,"x-open-world":false,"x-rate-limit":{"calls":40,"window":"minute"},"x-read-only":true,"x-requires-connection":true}},"/v1/naver-map-api/geocode":{"post":{"description":"Use when you need to convert a Korean place name, landmark, or station phrase into coordinates using the public place search surface. Backed by PlaceList keyword search with Seoul-area proximity bias, so it works best for recognizable names (강남역, 경복궁) and may not surface strict cadastral addresses. Returns the best match (prefers candidates whose roadAddress/address/name contains the query) plus alternates so clients can display ambiguity.\n한국 주소와 장소명을 위도·경도 좌표로 변환합니다.\n\n# 네이버 지도 주소 좌표 변환\n\n한국 주소와 장소명을 위도·경도 좌표로 변환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__geocode","requestBody":{"content":{"application/json":{"example":{"query":"서울특별시 종로구 사직로 161"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 좌표 변환 입력입니다.","properties":{"query":{"description":"좌표로 변환할 주소 또는 장소명입니다.","minLength":1,"type":"string"}},"required":["query"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"candidates":[{"address":"서울특별시 종로구 세종로 1-91","category":"궁궐","distanceMeters":0,"id":"11571707","lat":37.5796,"lng":126.977,"name":"경복궁","naverMapUrl":"https://map.naver.com/p/entry/place/11571707","phone":"02-3700-3900","roadAddress":"서울특별시 종로구 사직로 161"}],"query":"서울특별시 종로구 사직로 161","result":{"address":"서울특별시 종로구 세종로 1-91","category":"궁궐","distanceMeters":0,"id":"11571707","lat":37.5796,"lng":126.977,"name":"경복궁","naverMapUrl":"https://map.naver.com/p/entry/place/11571707","phone":"02-3700-3900","roadAddress":"서울특별시 종로구 사직로 161"}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 좌표 변환 결과입니다.","properties":{"candidates":{"description":"좌표가 있는 후보 장소 목록입니다.","items":{"additionalProperties":false,"description":"장소 요약 객체입니다.","properties":{"address":{"description":"지번 또는 대표 주소입니다.","type":"string"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"distanceMeters":{"description":"검색 기준점으로부터 거리(미터)입니다.","type":"number"},"id":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"name":{"description":"장소 이름입니다.","type":"string"},"naverMapUrl":{"description":"네이버 지도 웹 URL입니다.","type":"string"},"phone":{"description":"대표 전화번호입니다.","type":"string"},"roadAddress":{"description":"도로명 주소입니다.","type":"string"}},"required":["id","name","category","address","lat","lng","naverMapUrl"],"type":"object"},"type":"array"},"query":{"description":"입력 검색어입니다.","type":"string"},"result":{"anyOf":[{"additionalProperties":false,"description":"가장 적합한 좌표 후보입니다.","properties":{"address":{"description":"지번 또는 대표 주소입니다.","type":"string"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"distanceMeters":{"description":"검색 기준점으로부터 거리(미터)입니다.","type":"number"},"id":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"name":{"description":"장소 이름입니다.","type":"string"},"naverMapUrl":{"description":"네이버 지도 웹 URL입니다.","type":"string"},"phone":{"description":"대표 전화번호입니다.","type":"string"},"roadAddress":{"description":"도로명 주소입니다.","type":"string"}},"required":["id","name","category","address","lat","lng","naverMapUrl"],"type":"object"},{"type":"null"}],"description":"가장 적합한 좌표 후보입니다."}},"required":["query","result","candidates"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 주소 좌표 변환","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"geocode","x-apifuse-operation-key":"naver-map-api/geocode","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"a3af664584c175542ab87876653b5e29c731a4223892444768ef503a1ee1c1bf","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"result":"검색 후보 중 좌표가 있는 첫 번째 장소를 대표 결과로 선택합니다."},"x-hints":{"query":"서울특별시 종로구 사직로 161 또는 경복궁처럼 입력하세요."},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/place":{"post":{"description":"Use when you already have a Naver place ID and need public details such as categories, business hours, menus, photos, review counts, tags, and links. Do NOT use for user-only saved-place metadata or collection membership. Returns a normalized nullable place detail object for read-only display and enrichment workflows.\n단일 장소의 상세 정보를 반환합니다.\n\n# 네이버 지도 장소 상세\n\n단일 장소의 상세 정보를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__place","requestBody":{"content":{"application/json":{"example":{"place_id":"11571707"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 장소 상세 입력입니다.","properties":{"place_id":{"description":"네이버 지도 장소 ID입니다.","minLength":1,"type":"string"}},"required":["place_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"place":{"address":"서울특별시 종로구 세종로 1-91","blogReviewCount":8421,"businessHours":[{"close":"18:00","day":"화-일","isHoliday":false,"open":"09:00"}],"category":"궁궐","conveniences":["주차","화장실"],"currentStatus":"영업 중","currentStatusDetail":"17:00에 입장 마감","description":"조선 왕조의 대표 궁궐입니다.","distanceMeters":860,"homepage":"https://www.royalpalace.go.kr","homepageUrls":["https://www.royalpalace.go.kr"],"id":"11571707","lat":37.5796,"lng":126.977,"menus":[{"name":"성인 입장권","price":"3,000원"}],"name":"경복궁","naverMapUrl":"https://map.naver.com/p/entry/place/11571707","phone":"02-3700-3900","photoUrls":["https://map.naver.com/p/placeholder/gyeongbokgung.jpg"],"rating":4.6,"roadAddress":"서울특별시 종로구 사직로 161","tags":["궁궐","관광명소"],"visitorReviewCount":15321}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 장소 상세 결과입니다.","properties":{"place":{"anyOf":[{"additionalProperties":false,"description":"장소 상세 정보입니다.","properties":{"address":{"description":"지번 또는 대표 주소입니다.","type":"string"},"blogReviewCount":{"description":"블로그 리뷰 수입니다.","type":"number"},"businessHours":{"description":"영업시간 목록입니다.","items":{"additionalProperties":false,"description":"영업시간 객체입니다.","properties":{"close":{"description":"영업 종료 시각입니다.","type":"string"},"day":{"description":"요일 또는 영업일 라벨입니다.","type":"string"},"isHoliday":{"description":"휴무 여부입니다.","type":"boolean"},"open":{"description":"영업 시작 시각입니다.","type":"string"}},"required":["day","isHoliday"],"type":"object"},"type":"array"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"conveniences":{"description":"편의시설 목록입니다.","items":{"description":"편의시설 항목입니다.","type":"string"},"type":"array"},"currentStatus":{"description":"현재 영업 상태입니다.","type":"string"},"currentStatusDetail":{"description":"현재 영업 상태 상세입니다.","type":"string"},"description":{"description":"장소 소개 문구입니다.","type":"string"},"distanceMeters":{"description":"검색 기준점으로부터 거리(미터)입니다.","type":"number"},"homepage":{"description":"대표 홈페이지 URL입니다.","type":"string"},"homepageUrls":{"description":"홈페이지 URL 목록입니다.","items":{"description":"홈페이지 URL 항목입니다.","type":"string"},"type":"array"},"id":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"menus":{"description":"메뉴 목록입니다.","items":{"additionalProperties":false,"description":"메뉴 객체입니다.","properties":{"name":{"description":"메뉴 이름입니다.","type":"string"},"price":{"description":"표시 가격입니다.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"name":{"description":"장소 이름입니다.","type":"string"},"naverMapUrl":{"description":"네이버 지도 웹 URL입니다.","type":"string"},"phone":{"description":"대표 전화번호입니다.","type":"string"},"photoUrls":{"description":"사진 URL 목록입니다.","items":{"description":"사진 URL입니다.","type":"string"},"type":"array"},"rating":{"description":"대표 평점입니다.","type":"number"},"roadAddress":{"description":"도로명 주소입니다.","type":"string"},"tags":{"description":"장소 태그 목록입니다.","items":{"description":"장소 태그입니다.","type":"string"},"type":"array"},"visitorReviewCount":{"description":"방문자 리뷰 수입니다.","type":"number"}},"required":["id","name","category","address","lat","lng","naverMapUrl","homepageUrls","tags","conveniences","businessHours","visitorReviewCount","blogReviewCount","photoUrls","menus"],"type":"object"},{"type":"null"}],"description":"장소 상세 정보입니다."}},"required":["place"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 장소 상세","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"place","x-apifuse-operation-key":"naver-map-api/place","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"2d995b58dc709993df93a9c5e37467eeda5d385230859f492a5af2f646945c08","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"businessHours":"상류 영업시간 배열을 요일, 시작, 종료, 휴무 여부로 정규화합니다."},"x-hints":{"place_id":"네이버 지도 URL 또는 검색 결과에서 얻은 장소 ID입니다."},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/place-detail-auth":{"post":{"description":"Use when authenticated saved-place detail is required, including user memo or private saved metadata in addition to public place fields. Do NOT use for generic public place detail when no Naver session is available. Returns a normalized authenticated place detail object with coordinates, contact fields, tags, memo, review counts, and collection context.\n인증이 필요한 장소 상세 정보를 반환합니다.\n\n# 네이버 지도 인증 장소 상세\n\n인증이 필요한 장소 상세 정보를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__place_detail_auth","requestBody":{"content":{"application/json":{"example":{"collection_id":"col_synth_1","place_id":"11571707"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 인증 장소 상세 입력입니다.","properties":{"collection_id":{"description":"관련 저장 컬렉션 ID입니다.","type":"string"},"place_id":{"description":"조회할 네이버 지도 장소 ID입니다.","minLength":1,"type":"string"}},"required":["place_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"place":{"address":"서울특별시 종로구 세종로 1-91","blogReviewCount":8421,"businessHours":[{"close":"18:00","day":"화-일","isHoliday":false,"open":"09:00"}],"category":"궁궐","collectionId":"col_synth_1","conveniences":["주차","화장실"],"currentStatus":"영업 중","currentStatusDetail":"17:00에 입장 마감","description":"조선 왕조의 대표 궁궐입니다.","distanceMeters":860,"homepage":"https://www.royalpalace.go.kr","homepageUrls":["https://www.royalpalace.go.kr"],"id":"11571707","lat":37.5,"lng":127,"memo":"테스트 메모","menus":[{"name":"성인 입장권","price":"3,000원"}],"name":"경복궁","naverMapUrl":"https://map.naver.com/p/entry/place/11571707","phone":"02-3700-3900","photoUrls":["https://map.naver.com/p/placeholder/gyeongbokgung.jpg"],"rating":4.6,"roadAddress":"서울특별시 종로구 사직로 161","savedTags":["테스트","궁궐"],"tags":["궁궐","관광명소"],"visitorReviewCount":15321}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 인증 장소 상세 결과입니다.","properties":{"place":{"additionalProperties":false,"description":"인증 기반 장소 상세 정보입니다.","properties":{"address":{"description":"지번 또는 대표 주소입니다.","type":"string"},"blogReviewCount":{"description":"블로그 리뷰 수입니다.","type":"number"},"businessHours":{"description":"영업시간 목록입니다.","items":{"additionalProperties":false,"description":"영업시간 객체입니다.","properties":{"close":{"description":"영업 종료 시각입니다.","type":"string"},"day":{"description":"요일 또는 영업일 라벨입니다.","type":"string"},"isHoliday":{"description":"휴무 여부입니다.","type":"boolean"},"open":{"description":"영업 시작 시각입니다.","type":"string"}},"required":["day","isHoliday"],"type":"object"},"type":"array"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"collectionId":{"description":"관련 저장 컬렉션 ID입니다.","type":"string"},"conveniences":{"description":"편의시설 목록입니다.","items":{"description":"편의시설 항목입니다.","type":"string"},"type":"array"},"currentStatus":{"description":"현재 영업 상태입니다.","type":"string"},"currentStatusDetail":{"description":"현재 영업 상태 상세입니다.","type":"string"},"description":{"description":"장소 소개 문구입니다.","type":"string"},"distanceMeters":{"description":"검색 기준점으로부터 거리(미터)입니다.","type":"number"},"homepage":{"description":"대표 홈페이지 URL입니다.","type":"string"},"homepageUrls":{"description":"홈페이지 URL 목록입니다.","items":{"description":"홈페이지 URL 항목입니다.","type":"string"},"type":"array"},"id":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"memo":{"description":"사용자 저장 메모입니다.","type":"string"},"menus":{"description":"메뉴 목록입니다.","items":{"additionalProperties":false,"description":"메뉴 객체입니다.","properties":{"name":{"description":"메뉴 이름입니다.","type":"string"},"price":{"description":"표시 가격입니다.","type":"string"}},"required":["name"],"type":"object"},"type":"array"},"name":{"description":"장소 이름입니다.","type":"string"},"naverMapUrl":{"description":"네이버 지도 웹 URL입니다.","type":"string"},"phone":{"description":"대표 전화번호입니다.","type":"string"},"photoUrls":{"description":"사진 URL 목록입니다.","items":{"description":"사진 URL입니다.","type":"string"},"type":"array"},"rating":{"description":"대표 평점입니다.","type":"number"},"roadAddress":{"description":"도로명 주소입니다.","type":"string"},"savedTags":{"description":"사용자 저장 태그 목록입니다.","items":{"description":"사용자 저장 태그입니다.","type":"string"},"type":"array"},"tags":{"description":"장소 태그 목록입니다.","items":{"description":"장소 태그입니다.","type":"string"},"type":"array"},"visitorReviewCount":{"description":"방문자 리뷰 수입니다.","type":"number"}},"required":["id","name","category","address","lat","lng","naverMapUrl","homepageUrls","tags","conveniences","businessHours","visitorReviewCount","blogReviewCount","photoUrls","menus","savedTags"],"type":"object"}},"required":["place"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"네이버 지도 인증 장소 상세","tags":["naver-map-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"place-detail-auth","x-apifuse-operation-key":"naver-map-api/place-detail-auth","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"92d65963ee9f052b0ba9fc9f1c261a78dbad253bd4409e6aec44cab63294bb97","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"savedTags":"사용자 저장 태그와 공개 태그를 분리해 savedTags에 둡니다."},"x-hints":{"collection_id":"관련 컬렉션 ID가 있으면 함께 전달하세요.","place_id":"저장 장소 또는 공개 장소 ID입니다."},"x-idempotent":true,"x-open-world":false,"x-rate-limit":{"calls":40,"window":"minute"},"x-read-only":true,"x-requires-connection":true}},"/v1/naver-map-api/place-reviews":{"post":{"description":"Use when you need visitor and blog review snippets for a Naver Map place ID with paging and source filtering. Do NOT use for writing reviews, moderation actions, or authenticated collection exports. Returns normalized review rows with authors, content, ratings, dates, URLs, totals, and source-specific counts.\n장소 리뷰 목록과 출처별 카운트를 반환합니다.\n\n# 네이버 지도 장소 리뷰\n\n장소 리뷰 목록과 출처별 카운트를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__place_reviews","requestBody":{"content":{"application/json":{"example":{"page":1,"place_id":"11571707","size":10,"type":"all"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 리뷰 조회 입력입니다.","properties":{"page":{"default":1,"description":"조회할 페이지 번호입니다.","maximum":9007199254740991,"minimum":1,"type":"integer"},"place_id":{"description":"리뷰를 조회할 네이버 지도 장소 ID입니다.","minLength":1,"type":"string"},"size":{"default":10,"description":"페이지당 리뷰 수입니다.","maximum":50,"minimum":1,"type":"integer"},"type":{"default":"all","description":"조회할 리뷰 출처입니다.","enum":["all","visitor","blog"],"type":"string"}},"required":["place_id","type","page","size"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"hasMore":false,"page":1,"place_id":"11571707","reviews":[{"author":"방문자","content":"산책하기 좋은 장소입니다.","id":"visitor-1","photoCount":1,"publishedDate":"2026-04-02","rating":5,"source":"visitor","visitedDate":"2026-04-01"},{"author":"서울여행","content":"서울 대표 관광지 방문기","id":"blog-1","photoCount":8,"publishedDate":"2026-04-03","source":"blog","title":"봄날의 경복궁","url":"https://m.place.naver.com/place/11571707/review"}],"size":10,"sourceTotals":{"blog":1,"visitor":1},"total":2},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 리뷰 조회 결과입니다.","properties":{"hasMore":{"description":"추가 리뷰 존재 여부입니다.","type":"boolean"},"page":{"description":"응답 페이지 번호입니다.","type":"number"},"place_id":{"description":"리뷰를 조회한 장소 ID입니다.","type":"string"},"reviews":{"description":"정규화된 리뷰 목록입니다.","items":{"additionalProperties":false,"description":"네이버 지도 리뷰 객체입니다.","properties":{"author":{"description":"작성자 표시명입니다.","type":"string"},"content":{"description":"리뷰 본문입니다.","type":"string"},"id":{"description":"리뷰 ID입니다.","type":"string"},"photoCount":{"description":"첨부 사진 수입니다.","type":"number"},"publishedDate":{"description":"게시 일자입니다.","type":"string"},"rating":{"description":"리뷰 평점입니다.","type":"number"},"source":{"description":"리뷰 출처입니다.","enum":["visitor","blog"],"type":"string"},"title":{"description":"리뷰 제목입니다.","type":"string"},"url":{"description":"리뷰 원문 URL입니다.","type":"string"},"visitedDate":{"description":"방문 일자입니다.","type":"string"}},"required":["id","source","author","content","photoCount"],"type":"object"},"type":"array"},"size":{"description":"요청 페이지 크기입니다.","type":"number"},"sourceTotals":{"additionalProperties":false,"description":"출처별 리뷰 수입니다.","properties":{"blog":{"description":"블로그 리뷰 총수입니다.","type":"number"},"visitor":{"description":"방문자 리뷰 총수입니다.","type":"number"}},"required":["visitor","blog"],"type":"object"},"total":{"description":"총 리뷰 수입니다.","type":"number"}},"required":["place_id","page","size","total","hasMore","sourceTotals","reviews"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 장소 리뷰","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"place-reviews","x-apifuse-operation-key":"naver-map-api/place-reviews","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"d0438d2b3fac4a67b0b412f77c1ada22549d8c5eb596e902e27cb6dfd9791550","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"sourceTotals":"방문자 리뷰와 블로그 리뷰 총수를 분리해 제공합니다."},"x-hints":{"place_id":"리뷰를 조회할 장소 ID입니다.","type":"all, visitor, blog 중 선택하세요."},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/search":{"post":{"description":"Use when you need Naver Map place candidates for Korean keywords such as 강남역, 홍대 맛집, or 경복궁 near an optional bias coordinate. Do NOT use for address-only legal geocoding or private saved places. Returns normalized public place summaries with pagination, coordinates, address, contact, distance, and Naver Map URLs.\n장소 키워드 검색 결과를 페이지 단위로 반환합니다.\n\n# 네이버 지도 장소 검색\n\n장소 키워드 검색 결과를 페이지 단위로 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__search","requestBody":{"content":{"application/json":{"example":{"lat":37.4979,"lng":127.0276,"page":1,"query":"강남역","size":10},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 장소 검색 입력입니다.","properties":{"lat":{"description":"검색 편향 중심 위도입니다.","type":"number"},"lng":{"description":"검색 편향 중심 경도입니다.","type":"number"},"page":{"default":1,"description":"조회할 페이지 번호입니다.","maximum":9007199254740991,"minimum":1,"type":"integer"},"query":{"description":"검색할 장소 키워드입니다.","minLength":1,"type":"string"},"size":{"default":10,"description":"페이지당 결과 수입니다.","maximum":50,"minimum":1,"type":"integer"}},"required":["query","page","size"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"hasNext":false,"page":1,"places":[{"address":"서울특별시 강남구 역삼동","category":"지하철역","distanceMeters":0,"id":"13479774","lat":37.4979,"lng":127.0276,"name":"강남역 2호선","naverMapUrl":"https://map.naver.com/p/entry/place/13479774","phone":"02-6110-2221","roadAddress":"서울특별시 강남구 강남대로 지하396"}],"query":"강남역","size":10,"total":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 장소 검색 결과입니다.","properties":{"hasNext":{"description":"다음 페이지 존재 여부입니다.","type":"boolean"},"page":{"description":"응답 페이지 번호입니다.","type":"number"},"places":{"description":"검색된 장소 목록입니다.","items":{"additionalProperties":false,"description":"장소 요약 객체입니다.","properties":{"address":{"description":"지번 또는 대표 주소입니다.","type":"string"},"category":{"description":"네이버 지도 upstream 장소 카테고리 taxonomy입니다.","type":"string"},"distanceMeters":{"description":"검색 기준점으로부터 거리(미터)입니다.","type":"number"},"id":{"description":"네이버 지도 장소 ID입니다.","type":"string"},"lat":{"description":"장소 위도입니다.","type":"number"},"lng":{"description":"장소 경도입니다.","type":"number"},"name":{"description":"장소 이름입니다.","type":"string"},"naverMapUrl":{"description":"네이버 지도 웹 URL입니다.","type":"string"},"phone":{"description":"대표 전화번호입니다.","type":"string"},"roadAddress":{"description":"도로명 주소입니다.","type":"string"}},"required":["id","name","category","address","lat","lng","naverMapUrl"],"type":"object"},"type":"array"},"query":{"description":"정규화된 검색어입니다.","type":"string"},"size":{"description":"요청 페이지 크기입니다.","type":"number"},"total":{"description":"상류가 제공한 총 결과 수입니다.","type":"number"}},"required":["query","page","size","total","hasNext","places"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 장소 검색","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search","x-apifuse-operation-key":"naver-map-api/search","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"ffbb74f1b3c1f7f1a8a34b09ade4f0ff1f1c4ecad9772aab149e8387e2c63266","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"naverMapUrl":"place_id를 네이버 지도 웹 entry URL로 변환합니다."},"x-hints":{"lat":"서울시청 위도 예: 37.5665","lng":"서울시청 경도 예: 126.9780","query":"강남역, 홍대 맛집, 경복궁처럼 한국어 장소 키워드를 입력하세요."},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/transit-directions":{"post":{"description":"Use when you need subway, bus, and walking combinations between two coordinates using Naver public transit routing. Do NOT use for car, bicycle, or pedestrian-only navigation. Returns path candidates with duration, fare, transfer count, transport labels, walking time, and leg-by-leg instructions.\n대중교통 경로 후보를 반환합니다.\n\n# 네이버 지도 대중교통 길찾기\n\n대중교통 경로 후보를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__transit_directions","requestBody":{"content":{"application/json":{"example":{"dest_lat":37.5796,"dest_lng":126.977,"origin_lat":37.5572,"origin_lng":126.9254,"stair_free":false,"waypoints":[]},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 대중교통 길찾기 입력입니다.","properties":{"departure_time":{"description":"출발 기준 ISO 8601 시각입니다. 예: 2026-05-26T19:00:00+09:00","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:\\d{2})$","type":"string"},"dest_lat":{"description":"도착지 위도입니다.","type":"number"},"dest_lng":{"description":"도착지 경도입니다.","type":"number"},"origin_lat":{"description":"출발지 위도입니다.","type":"number"},"origin_lng":{"description":"출발지 경도입니다.","type":"number"},"stair_free":{"default":false,"description":"계단 적은 경로 선호 여부입니다.","type":"boolean"},"waypoints":{"default":[],"description":"선택 경유지 목록입니다.","items":{"additionalProperties":false,"description":"경유지 좌표 객체입니다.","properties":{"lat":{"description":"경유지 위도입니다.","type":"number"},"lng":{"description":"경유지 경도입니다.","type":"number"},"name":{"description":"경유지 이름입니다.","type":"string"}},"required":["lat","lng"],"type":"object"},"type":"array"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng","waypoints","stair_free"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"paths":[{"durationSeconds":1620,"fare":1500,"id":"path-1","label":"지하철","legs":[{"distanceMeters":300,"durationSeconds":300,"endName":"홍대입구역","mode":"walk","startName":"홍대입구"},{"durationSeconds":720,"endName":"시청","line":"2호선","mode":"subway","startName":"홍대입구"},{"durationSeconds":300,"endName":"종각","line":"1호선","mode":"subway","startName":"시청"}],"transferCount":1,"walkingDurationSeconds":420}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 대중교통 길찾기 결과입니다.","properties":{"paths":{"description":"대중교통 경로 후보 목록입니다.","items":{"additionalProperties":false,"description":"대중교통 경로 후보 객체입니다.","properties":{"durationSeconds":{"description":"총 예상 시간(초)입니다.","type":"number"},"fare":{"description":"예상 요금입니다.","type":"number"},"id":{"description":"대중교통 경로 ID 또는 순번입니다.","type":"string"},"label":{"description":"경로 라벨입니다.","type":"string"},"legs":{"description":"대중교통 경로 구간 목록입니다.","items":{"additionalProperties":false,"description":"대중교통 경로 구간 객체입니다.","properties":{"distanceMeters":{"description":"구간 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"구간 시간(초)입니다.","type":"number"},"endName":{"description":"구간 도착지 이름입니다.","type":"string"},"line":{"description":"노선 이름입니다.","type":"string"},"mode":{"description":"네이버 지도 upstream open-world 대중교통 이동 수단 코드입니다.","type":"string"},"startName":{"description":"구간 출발지 이름입니다.","type":"string"}},"required":["mode","startName","endName","durationSeconds"],"type":"object"},"type":"array"},"transferCount":{"description":"환승 횟수입니다.","type":"number"},"walkingDurationSeconds":{"description":"도보 이동 시간(초)입니다.","type":"number"}},"required":["id","label","durationSeconds","transferCount","walkingDurationSeconds","legs"],"type":"object"},"type":"array"}},"required":["paths"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 대중교통 길찾기","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"transit-directions","x-apifuse-operation-key":"naver-map-api/transit-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"78f7cdcbb4c5e725b06b7bc4153aea314dfc5f59dc4200632efb53c14f052457","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"legs":"상류 구간 정보를 이동 수단, 출발, 도착, 시간으로 정규화합니다."},"x-hints":{"dest_lat":"도착지 위도입니다. 예: 경복궁 37.5796, 잠실역 37.5133, 인천공항 37.4602","dest_lng":"도착지 경도입니다. 예: 경복궁 126.9770, 잠실역 127.1000, 인천공항 126.4407","origin_lat":"출발지 위도입니다. 예: 서울시청 37.5665, 강남역 37.4979, 홍대입구 37.5572","origin_lng":"출발지 경도입니다. 예: 서울시청 126.9780, 강남역 127.0276, 홍대입구 126.9254"},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/transit-info":{"post":{"description":"Use when you have a Naver public transit identifier and need bus stop, bus route, or subway station detail selected by info_type. Do NOT use for point-to-point route planning or realtime guarantees beyond upstream availability. Returns one normalized detail branch matching the discriminator with coordinates, stops, routes, schedules, and exits.\n정류장·노선·역 상세 정보를 하나의 작업으로 반환합니다.\n\n# 네이버 지도 대중교통 정보\n\n정류장·노선·역 상세 정보를 하나의 작업으로 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__transit_info","requestBody":{"content":{"application/json":{"example":{"info_type":"subway_station","station_id":"0212"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 대중교통 정보 입력입니다.","properties":{"info_type":{"description":"조회할 대중교통 정보 종류입니다.","enum":["bus_stop","bus_route","subway_station"],"type":"string"},"route_id":{"description":"버스 노선 ID입니다.","type":"string"},"station_id":{"description":"지하철역 ID입니다.","type":"string"},"stop_id":{"description":"버스 정류장 ID입니다.","type":"string"}},"required":["info_type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"info_type":"subway_station","subway_station":{"address":"서울특별시 강남구 역삼동","exits":[{"description":"강남대로","exitNo":"10"}],"lat":37.4979,"line":"2호선","lng":127.0276,"name":"강남","stationId":"0212","transfers":[]}},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 대중교통 정보 결과입니다.","properties":{"bus_route":{"additionalProperties":false,"description":"버스 노선 상세 정보입니다.","properties":{"endPoint":{"description":"종점 이름입니다.","type":"string"},"intervalMinutes":{"description":"평균 배차 간격(분)입니다.","type":"number"},"name":{"description":"버스 노선 이름입니다.","type":"string"},"routeId":{"description":"버스 노선 ID입니다.","type":"string"},"startPoint":{"description":"기점 이름입니다.","type":"string"},"stops":{"description":"노선 정류장 목록입니다.","items":{"additionalProperties":false,"description":"대중교통 정류장 또는 역 객체입니다.","properties":{"address":{"description":"주소입니다.","type":"string"},"id":{"description":"정류장 또는 역 ID입니다.","type":"string"},"lat":{"description":"위도입니다.","type":"number"},"lng":{"description":"경도입니다.","type":"number"},"name":{"description":"정류장 또는 역 이름입니다.","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"type":{"description":"노선 유형입니다.","type":"string"}},"required":["routeId","name","stops"],"type":"object"},"bus_stop":{"additionalProperties":false,"description":"버스 정류장 상세 정보입니다.","properties":{"address":{"description":"정류장 주소입니다.","type":"string"},"lat":{"description":"정류장 위도입니다.","type":"number"},"lng":{"description":"정류장 경도입니다.","type":"number"},"name":{"description":"버스 정류장 이름입니다.","type":"string"},"routes":{"description":"정류장을 지나는 버스 노선 목록입니다.","items":{"additionalProperties":false,"description":"대중교통 노선 요약 객체입니다.","properties":{"id":{"description":"노선 ID입니다.","type":"string"},"name":{"description":"노선 이름입니다.","type":"string"},"nextArrivalMinutes":{"description":"다음 도착까지 남은 분입니다.","type":"number"},"type":{"description":"노선 유형입니다.","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"stopId":{"description":"버스 정류장 ID입니다.","type":"string"}},"required":["stopId","name","routes"],"type":"object"},"info_type":{"description":"응답 정보 종류입니다.","enum":["bus_stop","bus_route","subway_station"],"type":"string"},"subway_station":{"additionalProperties":false,"description":"지하철역 상세 정보입니다.","properties":{"address":{"description":"역 주소입니다.","type":"string"},"exits":{"description":"지하철 출구 목록입니다.","items":{"additionalProperties":false,"description":"지하철 출구 객체입니다.","properties":{"description":{"description":"출구 설명입니다.","type":"string"},"exitNo":{"description":"출구 번호입니다.","type":"string"}},"required":["exitNo"],"type":"object"},"type":"array"},"lat":{"description":"역 위도입니다.","type":"number"},"line":{"description":"호선 또는 노선 이름입니다.","type":"string"},"lng":{"description":"역 경도입니다.","type":"number"},"name":{"description":"지하철역 이름입니다.","type":"string"},"stationId":{"description":"지하철역 ID입니다.","type":"string"},"transfers":{"description":"환승 가능한 역 목록입니다.","items":{"additionalProperties":false,"description":"대중교통 정류장 또는 역 객체입니다.","properties":{"address":{"description":"주소입니다.","type":"string"},"id":{"description":"정류장 또는 역 ID입니다.","type":"string"},"lat":{"description":"위도입니다.","type":"number"},"lng":{"description":"경도입니다.","type":"number"},"name":{"description":"정류장 또는 역 이름입니다.","type":"string"}},"required":["id","name"],"type":"object"},"type":"array"}},"required":["stationId","name","transfers","exits"],"type":"object"}},"required":["info_type"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 대중교통 정보","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"transit-info","x-apifuse-operation-key":"naver-map-api/transit-info","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"bfaf337b93b4e078eaafb4cb5d9abf0dbf87ed7a0c91215788f9b950e0d497c0","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"discriminator":"info_type 값에 따라 하나의 상세 분기만 채웁니다."},"x-hints":{"info_type":"bus_stop, bus_route, subway_station 중 하나입니다.","route_id":"info_type=bus_route일 때 필요합니다.","station_id":"info_type=subway_station일 때 필요합니다.","stop_id":"info_type=bus_stop일 때 필요합니다."},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/naver-map-api/walk-directions":{"post":{"description":"Use when you need pedestrian directions between two Korean coordinates with recommendation, wide-road, or flat-route preferences. Do NOT use for vehicle routing, transit schedules, or accessibility certification. Returns walking route candidates with distance, duration, path coordinates, and guide instructions.\n도보 경로의 거리, 시간, 안내 단계를 반환합니다.\n\n# 네이버 지도 도보 길찾기\n\n도보 경로의 거리, 시간, 안내 단계를 반환합니다.\n\n## Normalization notes\n\n- Allowed upstream origins: https://nid.naver.com, https://map.naver.com, https://m.map.naver.com, https://pages.map.naver.com, https://pcmap-api.place.naver.com, https://api.place.naver.com, https://pcmap.place.naver.com, https://m.place.naver.com, https://drive.io.naver.com, https://apis.naver.com, https://walk.io.naver.com, https://bike.io.naver.com","operationId":"naver-map-api__walk_directions","requestBody":{"content":{"application/json":{"example":{"dest_lat":37.5796,"dest_lng":126.977,"options":["reco","wide","flat"],"origin_lat":37.5665,"origin_lng":126.978,"waypoints":[]},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 도보 길찾기 입력입니다.","properties":{"dest_lat":{"description":"도착지 위도입니다.","type":"number"},"dest_lng":{"description":"도착지 경도입니다.","type":"number"},"options":{"default":["reco","wide","flat"],"description":"도보 경로 옵션 목록입니다.","items":{"description":"도보 경로 옵션입니다.","enum":["reco","wide","flat"],"type":"string"},"type":"array"},"origin_lat":{"description":"출발지 위도입니다.","type":"number"},"origin_lng":{"description":"출발지 경도입니다.","type":"number"},"waypoints":{"default":[],"description":"선택 경유지 목록입니다.","items":{"additionalProperties":false,"description":"경유지 좌표 객체입니다.","properties":{"lat":{"description":"경유지 위도입니다.","type":"number"},"lng":{"description":"경유지 경도입니다.","type":"number"},"name":{"description":"경유지 이름입니다.","type":"string"}},"required":["lat","lng"],"type":"object"},"type":"array"}},"required":["origin_lat","origin_lng","dest_lat","dest_lng","waypoints","options"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"routes":[{"guides":[{"distanceMeters":1800,"durationSeconds":1500,"instruction":"광화문광장 방향으로 이동"}],"id":"walk-1","label":"추천","path":[{"lat":37.5665,"lng":126.978},{"lat":37.5796,"lng":126.977}],"summary":{"distanceMeters":1800,"durationSeconds":1500}}]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"naver-map-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"네이버 지도 길찾기 결과입니다.","properties":{"routes":{"description":"경로 후보 목록입니다.","items":{"additionalProperties":false,"description":"길찾기 경로 객체입니다.","properties":{"guides":{"description":"경로 안내 단계 목록입니다.","items":{"additionalProperties":false,"description":"경로 안내 단계 객체입니다.","properties":{"distanceMeters":{"description":"이 안내 구간의 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"이 안내 구간의 예상 시간(초)입니다.","type":"number"},"instruction":{"description":"안내 문구입니다.","type":"string"}},"required":["instruction","distanceMeters"],"type":"object"},"type":"array"},"id":{"description":"경로 ID 또는 순번입니다.","type":"string"},"label":{"description":"경로 라벨입니다.","type":"string"},"path":{"description":"경로 좌표 배열입니다.","items":{"additionalProperties":false,"description":"좌표 객체입니다.","properties":{"lat":{"description":"위도 값입니다.","type":"number"},"lng":{"description":"경도 값입니다.","type":"number"}},"required":["lat","lng"],"type":"object"},"type":"array"},"summary":{"additionalProperties":false,"description":"경로 요약 정보입니다.","properties":{"distanceMeters":{"description":"총 거리(미터)입니다.","type":"number"},"durationSeconds":{"description":"총 예상 시간(초)입니다.","type":"number"},"fare":{"description":"예상 요금입니다.","type":"number"},"taxiFare":{"description":"예상 택시 요금입니다.","type":"number"},"tollFare":{"description":"통행료입니다.","type":"number"}},"required":["distanceMeters","durationSeconds"],"type":"object"}},"required":["id","label","summary","path","guides"],"type":"object"},"type":"array"}},"required":["routes"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"AUTH_REQUIRED: Naver session cookies missing or expired — re-authenticate via cookie-paste","x-apifuse-error-code":"AUTH_REQUIRED","x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401}],"x-apifuse-retryable":false},"429":{"description":"429: Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls Retryable.","x-apifuse-error-code":"429","x-apifuse-error-codes":[{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-retryable":true},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Naver Map upstream returned error or blocked the request Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"네이버 지도 도보 길찾기","tags":["naver-map-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"네이버 지도 API","id":"naver-map-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"AUTH_REQUIRED","description":"Naver session cookies missing or expired — re-authenticate via cookie-paste","retryable":false,"status":401},{"code":"UPSTREAM_ERROR","description":"Naver Map upstream returned error or blocked the request","retryable":true,"status":502},{"code":"429","description":"Rate limit exceeded — public ops: 25,000/day, auth ops: ≥1500ms between calls","retryable":true,"status":429}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"walk-directions","x-apifuse-operation-key":"naver-map-api/walk-directions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"naver-map-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"848561ba60eaddbe35735380841417a92630d5da4f1b4e22244099d22ea50b40","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-derivations":{"options":"reco, wide, flat 옵션을 상류 도보 경로 선호로 전달합니다."},"x-hints":{"dest_lat":"도착지 위도입니다. 예: 경복궁 37.5796, 잠실역 37.5133, 인천공항 37.4602","dest_lng":"도착지 경도입니다. 예: 경복궁 126.9770, 잠실역 127.1000, 인천공항 126.4407","origin_lat":"출발지 위도입니다. 예: 서울시청 37.5665, 강남역 37.4979, 홍대입구 37.5572","origin_lng":"출발지 경도입니다. 예: 서울시청 126.9780, 강남역 127.0276, 홍대입구 126.9254"},"x-idempotent":true,"x-open-world":true,"x-rate-limit":{"calls":25000,"window":"day"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/browse_product_categories":{"post":{"description":"Use when you need the recursive public Ohouse product category tree before browsing or mapping catalog ids. It calls the observed categories API and returns stable id/title/image child nodes without login state.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Browse Product Categories\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__browse_product_categories","requestBody":{"content":{"application/json":{"example":{},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for product category tree","properties":{"brand_id":{"description":"Optional brand id filter observed in frontend JS","type":"string"},"include_html":{"description":"Whether upstream should include featured HTML when supported","type":"boolean"},"used":{"description":"Whether to request used-card capable categories","type":"boolean"}},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"example":{"data":{"categories":[{"children":[{"id":"18010000","title":"소파"}],"id":"18000000","title":"가구"}],"source_url":"https://ohou.se/apig/productions/categories.json"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"additionalProperties":false,"description":"Ohouse category node","properties":{"children":{"description":"Nested child categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"id":{"description":"Category identifier","type":"string"},"image_url":{"description":"Category image URL when exposed","type":"string"},"title":{"description":"Category title","type":"string"}},"required":["id","title"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse production category tree","properties":{"categories":{"description":"Recursive Ohouse production categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["categories","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Browse Product Categories","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"browse_product_categories","x-apifuse-operation-key":"ohouse-deals/browse_product_categories","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"13aa2165e1c885a3448ae7476b2bf90a7ffc011ae6bb4c60b8ed6ae519fc02df","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/browse_store_category":{"post":{"description":"Use when you need to browse a public Ohouse store category like furniture or fabric by category id. It returns normalized product rows, exposed totals, and category path metadata from the observed category API.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Browse Store Category\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__browse_store_category","requestBody":{"content":{"application/json":{"example":{"category_id":"18000000"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for browsing an Ohouse store category","properties":{"affect_id":{"description":"Affect id sent by Ohouse category navigation","type":"string"},"affect_type":{"default":"StoreHomeCategory","description":"Observed Ohouse navigation affect type for store category browsing","enum":["Typing","Related","CardSearch","ProductCategoryIndex","StoreHomeCategory"],"type":"string"},"category_id":{"description":"Ohouse store category id","type":"string"},"order":{"default":"popular","description":"Ohouse category order code","enum":["popular","recent","selling","review","low_price","high_price"],"type":"string"},"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":24,"description":"Rows per page","maximum":100,"minimum":1,"type":"integer"}},"required":["category_id","page","per","order","affect_type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"categories":[{"id":"18000000","title":"가구"}],"items":[{"id":"1","name":"샘플 상품","url":"https://store.ohou.se/goods/1"}],"source_url":"https://ohou.se/apig/store/category.json?v=2&category_id=18000000&order=popular&affect_type=StoreHomeCategory&page=1&per=24","total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"additionalProperties":false,"description":"Ohouse category node","properties":{"children":{"description":"Nested child categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"id":{"description":"Category identifier","type":"string"},"image_url":{"description":"Category image URL when exposed","type":"string"},"title":{"description":"Category title","type":"string"}},"required":["id","title"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse store category result","properties":{"categories":{"description":"Category tree/path rows when exposed","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"items":{"description":"Normalized category product rows","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"total_count":{"description":"Total item count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items","categories","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Browse Store Category","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"browse_store_category","x-apifuse-operation-key":"ohouse-deals/browse_store_category","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"b72a5dbb687a5e39d3c8599ff22c1ef14184a3b3acb50885c6013cdc784da280","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_card_collection_recommendations":{"post":{"description":"Use when you need public card recommendations for an Ohouse card collection id. It reads the collection recommendations endpoint and returns the section title plus normalized cards with images, counters, writer labels, and links.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Card Collection Recommendations\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_card_collection_recommendations","requestBody":{"content":{"application/json":{"example":{"collection_id":"1009113810"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for card collection recommendations","properties":{"collection_id":{"description":"Ohouse card collection id","minLength":1,"type":"string"},"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":20,"description":"Rows per page","maximum":100,"minimum":1,"type":"integer"}},"required":["collection_id","page","per"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"cards":[{"id":"1","image_url":"https://image.ohou.se/1.jpg"}],"source_url":"https://contents.ohou.se/api/card-collections/recommends/1009113810?page=1&per=20","title":"추천"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse card collection recommendation result","properties":{"cards":{"description":"Recommended collection cards","items":{"additionalProperties":false,"description":"Normalized public Ohouse content card","properties":{"description":{"description":"Card description/caption when exposed","type":"string"},"id":{"description":"Ohouse content card identifier","type":"string"},"image_url":{"description":"Card image URL when exposed","type":"string"},"like_count":{"description":"Like count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reply_count":{"description":"Reply count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scrap_count":{"description":"Scrap count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"url":{"description":"Public card landing URL when exposed","type":"string"},"user_id":{"description":"Writer user identifier when exposed","type":"string"},"user_nickname":{"description":"Writer nickname when exposed","type":"string"},"view_count":{"description":"View count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"title":{"description":"Collection recommendation title when exposed","type":"string"}},"required":["cards","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Card Collection Recommendations","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_card_collection_recommendations","x-apifuse-operation-key":"ohouse-deals/get_card_collection_recommendations","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1b50b265d6a9cc7b08337d884eeda31b1a311bad9744020be2e034db59ce840d","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_comments":{"post":{"description":"Use when you need public Ohouse comments for a project, card, production, or card collection. It calls the comments endpoint, can optionally hydrate users, and returns comments, totals, child-inclusive totals, and source URL.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Comments\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_comments","requestBody":{"content":{"application/json":{"example":{"id":"150869","type":"project"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for public Ohouse comments","properties":{"id":{"description":"Commentable id","minLength":1,"type":"string"},"include_users":{"default":false,"description":"Hydrate comment user profiles through comments/users helper","type":"boolean"},"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":20,"description":"Rows per page","maximum":100,"minimum":1,"type":"integer"},"sort":{"default":"recent","description":"Comment sort order","enum":["recent","popular"],"type":"string"},"type":{"description":"Observed/commentable Ohouse content type","enum":["project","card","production","card_collection"],"type":"string"},"version":{"description":"Optional comments API version","type":"string"}},"required":["type","id","page","per","sort","include_users"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"comments":[],"source_url":"https://contents.ohou.se/api/comments?type=project&id=150869&page=1&per=20&sort=recent","total_count":0,"total_with_child_count":0,"users":[]},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse public comments result","properties":{"comments":{"description":"Public comments","items":{"additionalProperties":false,"description":"Normalized Ohouse public comment","properties":{"comment":{"description":"Comment text","type":"string"},"created_at":{"description":"Comment timestamp when exposed","type":"string"},"id":{"description":"Comment identifier","type":"string"},"parent_id":{"description":"Parent comment id when exposed","type":"string"},"user_id":{"description":"Comment writer id when exposed","type":"string"},"user_nickname":{"description":"Comment writer nickname when exposed","type":"string"}},"required":["id","comment"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse comments API URL used for the request","type":"string"},"total_count":{"description":"Total comments when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"total_with_child_count":{"description":"Total comments including children when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"users":{"description":"Hydrated user profiles when requested","items":{"additionalProperties":false,"properties":{"id":{"description":"User id","type":"string"},"nickname":{"description":"Nickname","type":"string"},"profile_image_url":{"description":"Profile image URL when exposed","type":"string"}},"required":["id","nickname"],"type":"object"},"type":"array"}},"required":["comments","users","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Comments","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_comments","x-apifuse-operation-key":"ohouse-deals/get_comments","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"fd9689a2e13c600e0f01835ff41234c816c2868f06c1c80260196bce2e04dc39","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_deal_products":{"post":{"description":"Use when you need the product rows that belong to a public Ohouse deal bundle. It calls the observed deal list endpoint, normalizes included products, and returns exposed total counts for deal merchandising analysis.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Deal Products\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_deal_products","requestBody":{"content":{"application/json":{"example":{"deal_id":"1718569"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for products under an Ohouse deal","properties":{"deal_id":{"description":"Ohouse deal id","minLength":1,"type":"string"},"limit":{"default":24,"description":"Maximum number of deal products to return","maximum":100,"minimum":1,"type":"integer"}},"required":["deal_id","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"id":"1","name":"딜 상품","url":"https://store.ohou.se/goods/1"}],"source_url":"https://store.ohou.se/api/goods/deal/1718569/list","total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse deal product result","properties":{"items":{"description":"Deal product rows","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"total_count":{"description":"Total count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Deal Products","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_deal_products","x-apifuse-operation-key":"ohouse-deals/get_deal_products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"999b0f018cf633b98606dac5e5bffca2c5578eabd13853d88e66b754f381c112","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_exhibition_section_items":{"post":{"description":"Use when you need product rows from a public Ohouse exhibition or campaign section. It calls the exhibition-section-items endpoint and returns normalized products, exposed totals, next-page state, and the exact source URL.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Exhibition Section Items\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_exhibition_section_items","requestBody":{"content":{"application/json":{"example":{"exhibition_id":"13062","section_id":"0"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for exhibition section items","properties":{"detail_id":{"description":"Exhibition detail id when required","type":"string"},"exhibition_id":{"description":"Ohouse exhibition id","minLength":1,"type":"string"},"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"section_id":{"description":"Exhibition section id","minLength":1,"type":"string"}},"required":["exhibition_id","section_id","page"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"has_next":false,"items":[{"id":"1","name":"기획전 상품","url":"https://store.ohou.se/goods/1"}],"source_url":"https://store.ohou.se/api/exhibition-section-items?exhibitionId=13062&sectionId=0&page=1","total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse exhibition section result","properties":{"has_next":{"description":"Whether another page exists","type":"boolean"},"items":{"description":"Section product rows","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"total_count":{"description":"Total section item count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Exhibition Section Items","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_exhibition_section_items","x-apifuse-operation-key":"ohouse-deals/get_exhibition_section_items","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"802e8eed9f7bae0dc350388db8d9d98630d06abcb41885ffa392884f6a4faaaf","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_coupons":{"post":{"description":"Use when you need public coupon-display metadata for an Ohouse product or deal without performing any coupon download or account mutation. It returns price text, button status, messages, and title fields when exposed.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Coupons\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_coupons","requestBody":{"content":{"application/json":{"example":{"id":"971178","target_type":"product"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for public coupon metadata","properties":{"id":{"description":"Goods id or deal id","minLength":1,"type":"string"},"target_type":{"default":"product","description":"Coupon target endpoint family to call","enum":["product","deal"],"type":"string"}},"required":["target_type","id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"coupon_price":"1,000원","download_button_status":"DOWNLOADABLE","source_url":"https://store.ohou.se/api/goods/971178/applicable-coupons","target_type":"product"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Public Ohouse coupon metadata result","properties":{"application_message":{"description":"Coupon application message when exposed","type":"string"},"coupon_price":{"description":"Coupon price text when exposed","type":"string"},"download_button_status":{"description":"Download button status when exposed","type":"string"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"target_type":{"description":"Coupon target type supported by observed public endpoints","enum":["product","deal"],"type":"string"},"title":{"description":"Coupon title when exposed","type":"string"}},"required":["target_type","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Coupons","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_coupons","x-apifuse-operation-key":"ohouse-deals/get_product_coupons","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"ebeeb7e83b841778067c116a2d9dd38305a39e37131edc8b4bfb583792edfecb","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_delivery":{"post":{"description":"Use when you need delivery, refund or seller-service metadata for a public Ohouse product before checkout-like analysis. It returns fee, free threshold, service code, exchange/refund fees, and seller contact fields when exposed.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Delivery\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_delivery","requestBody":{"content":{"application/json":{"example":{"goods_id":"2636441"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input with Ohouse goods id","properties":{"goods_id":{"description":"Ohouse goods/product id","minLength":1,"type":"string"}},"required":["goods_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"fee":3000,"free_threshold":50000,"method":1,"seller_company":"샘플","service_code":"NORMAL","source_url":"https://store.ohou.se/api/goods/2636441/delivery"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product delivery/refund/seller summary","properties":{"exchange_fee":{"description":"Exchange fee when exposed","type":"number"},"fee":{"description":"Base delivery fee in KRW when exposed","type":"number"},"free_threshold":{"description":"Free-delivery threshold in KRW when exposed","type":"number"},"is_free_delivery":{"description":"Whether delivery fee is zero or marked free","type":"boolean"},"method":{"description":"Upstream delivery method code","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"refund_fee":{"description":"Refund fee when exposed","type":"number"},"seller_company":{"description":"Seller company when exposed","type":"string"},"seller_cs_phone":{"description":"Seller CS phone when exposed","type":"string"},"service_code":{"description":"Delivery service code when exposed","type":"string"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Delivery","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_delivery","x-apifuse-operation-key":"ohouse-deals/get_product_delivery","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"bd7ed78a75d7a8e5432ccddc3083a0fecb4f53b980165cb7c4887233460b34c4","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_detail":{"post":{"description":"Use when you need stable public product detail metadata for an Ohouse goods id. It reads the store API and normalizes product identity, cards, buy variants, categories, and review summary signals.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Detail\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_detail","requestBody":{"content":{"application/json":{"example":{"goods_id":"971178"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input with Ohouse goods id","properties":{"goods_id":{"description":"Ohouse goods/product id","minLength":1,"type":"string"}},"required":["goods_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"buy_products":[],"cards":[],"categories":[],"product":{"id":"971178","name":"샘플 상품","url":"https://store.ohou.se/goods/971178"},"source_url":"https://store.ohou.se/api/goods/971178"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"additionalProperties":false,"description":"Ohouse category node","properties":{"children":{"description":"Nested child categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"id":{"description":"Category identifier","type":"string"},"image_url":{"description":"Category image URL when exposed","type":"string"},"title":{"description":"Category title","type":"string"}},"required":["id","title"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product detail result","properties":{"buy_products":{"description":"Buy product variants surfaced on detail","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"cards":{"description":"Product use/review cards surfaced on detail","items":{"additionalProperties":false,"description":"Normalized public Ohouse content card","properties":{"description":{"description":"Card description/caption when exposed","type":"string"},"id":{"description":"Ohouse content card identifier","type":"string"},"image_url":{"description":"Card image URL when exposed","type":"string"},"like_count":{"description":"Like count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reply_count":{"description":"Reply count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scrap_count":{"description":"Scrap count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"url":{"description":"Public card landing URL when exposed","type":"string"},"user_id":{"description":"Writer user identifier when exposed","type":"string"},"user_nickname":{"description":"Writer nickname when exposed","type":"string"},"view_count":{"description":"View count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"categories":{"description":"Product categories surfaced on detail","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"product":{"additionalProperties":false,"description":"Primary product summary","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"review_average":{"description":"Review average when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["product","cards","buy_products","categories","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Detail","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_detail","x-apifuse-operation-key":"ohouse-deals/get_product_detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1b9e650f506cc238ff13bd5510af0e5e24db6236d9577c0447db1d38434b6d0f","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_options":{"post":{"description":"Use when you need the public option and selling-state summary for an Ohouse goods id. It reads the options endpoint and returns product identity, option group count, sold-out state, and source URL.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Options\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_options","requestBody":{"content":{"application/json":{"example":{"goods_id":"2636441"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input with Ohouse goods id","properties":{"goods_id":{"description":"Ohouse goods/product id","minLength":1,"type":"string"}},"required":["goods_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"is_sold_out":false,"product":{"id":"2636441","name":"샘플","url":"https://store.ohou.se/goods/2636441"},"source_url":"https://store.ohou.se/api/goods/options?id=2636441"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product options summary","properties":{"is_sold_out":{"description":"Whether product/options are sold out when exposed","type":"boolean"},"option_group_count":{"description":"Number of option groups discovered","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"product":{"additionalProperties":false,"description":"Product summary from options endpoint","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["product","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Options","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_options","x-apifuse-operation-key":"ohouse-deals/get_product_options","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"1107f542f32b668d0941fb783509002116b8387a9a099e18e6863dc4370c6834","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_questions":{"post":{"description":"Use when you need public Q&A rows for an Ohouse product page. It calls the questions endpoint and normalizes question text, answer text when present, writer nickname, buyer marker, timestamps, and totals.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Questions\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_questions","requestBody":{"content":{"application/json":{"example":{"product_id":"2636441"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for public product Q&A","properties":{"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":5,"description":"Rows per page","maximum":30,"minimum":1,"type":"integer"},"product_id":{"description":"Ohouse product id","minLength":1,"type":"string"}},"required":["product_id","page","per"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"questions":[{"id":"1","is_buyer":false,"question":"문의","type":"상품"}],"source_url":"https://store.ohou.se/api/goods/questions?productId=2636441&page=1&per=5","total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product Q&A result","properties":{"questions":{"description":"Question rows","items":{"additionalProperties":false,"description":"Normalized public product Q&A row","properties":{"answer":{"description":"Answer text when answered","type":"string"},"id":{"description":"Question identifier","type":"string"},"is_buyer":{"description":"Whether writer is a buyer when exposed","type":"boolean"},"question":{"description":"Question text","type":"string"},"question_at":{"description":"Question timestamp when exposed","type":"string"},"type":{"description":"Upstream question type when exposed","type":"string"},"user_nickname":{"description":"Question writer nickname when exposed","type":"string"}},"required":["id","type","question"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"total_count":{"description":"Total question count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["questions","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Questions","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_questions","x-apifuse-operation-key":"ohouse-deals/get_product_questions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"defd0b8b7cdba7ab93c2772ea9808c97c286fc858d3de83ee53bab5e656e773e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_recommendations":{"post":{"description":"Use when you need public recommendation modules attached to an Ohouse product detail page. It calls the product recommended endpoint and summarizes CMS modules into stable ids, titles, types, and product items.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Recommendations\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_recommendations","requestBody":{"content":{"application/json":{"example":{"goods_id":"2636441"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input with Ohouse goods id","properties":{"goods_id":{"description":"Ohouse goods/product id","minLength":1,"type":"string"}},"required":["goods_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"modules":[{"id":"m1","items":[{"id":"1","name":"샘플","url":"https://store.ohou.se/goods/1"}],"title":"추천","type":"ITEM_LIST"}],"source_url":"https://store.ohou.se/api/goods/2636441/recommended"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product recommendation modules","properties":{"modules":{"description":"Recommendation modules","items":{"additionalProperties":false,"description":"Stable summary of an Ohouse CMS/recommendation module","properties":{"id":{"description":"Module identifier when exposed","type":"string"},"items":{"description":"Normalized product items found in the module","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"title":{"description":"Module title when exposed","type":"string"},"type":{"description":"Module/content type when exposed","type":"string"}},"required":["id","type","items"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["modules","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Recommendations","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_recommendations","x-apifuse-operation-key":"ohouse-deals/get_product_recommendations","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"e959d1dbf956e5d5e17e87b10f96e52957c8fab37173f5810b258d2ef2dc0961","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_reviews":{"post":{"description":"Use when you need public Ohouse product reviews plus optional star-count distribution for a production id. It reads the reviews endpoint, can call the counts helper, and normalizes ratings, comments, writer labels, and totals.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Reviews\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_reviews","requestBody":{"content":{"application/json":{"example":{"production_id":"2636441"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for public Ohouse product reviews","properties":{"deal_id":{"description":"Optional deal id for star counts","type":"string"},"include_counts":{"default":true,"description":"Fetch counts-for-stars helper endpoint","type":"boolean"},"option":{"description":"Optional upstream option filter","type":"string"},"order":{"default":"best","description":"Observed review order code","enum":["best","recent"],"type":"string"},"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":5,"description":"Rows per page","maximum":30,"minimum":1,"type":"integer"},"production_id":{"description":"Ohouse production/goods id","minLength":1,"type":"string"},"stars":{"description":"Optional star filter","maximum":5,"minimum":1,"type":"integer"}},"required":["production_id","page","per","order","include_counts"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"average":4.8,"reviews":[{"comment":"좋아요","id":"1","rating":5,"writer_nickname":"샘플"}],"source_url":"https://store.ohou.se/api/goods/reviews?page=1&productionId=2636441&per=5&order=best&option=","star_counts":{"count_for_5":1},"total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product reviews result","properties":{"average":{"description":"Average score when exposed","type":"number"},"count":{"description":"Page count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reviews":{"description":"Normalized public reviews","items":{"additionalProperties":false,"description":"Normalized Ohouse product review","properties":{"comment":{"description":"Review comment text when exposed","type":"string"},"created_at":{"description":"Review creation timestamp when exposed","type":"string"},"id":{"description":"Review identifier","type":"string"},"image_url":{"description":"Review image URL when exposed","type":"string"},"praise_count":{"description":"Praise count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"rating":{"description":"Overall star rating when exposed","type":"number"},"status":{"description":"Upstream review status text when exposed","type":"string"},"writer_id":{"description":"Review writer identifier when exposed","type":"string"},"writer_nickname":{"description":"Review writer nickname when exposed","type":"string"}},"required":["id"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse reviews API URL used for the request","type":"string"},"star_counts":{"additionalProperties":false,"description":"Review counts by star rating when include_counts is true","properties":{"count_for_1":{"description":"One-star review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"count_for_2":{"description":"Two-star review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"count_for_3":{"description":"Three-star review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"count_for_4":{"description":"Four-star review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"count_for_5":{"description":"Five-star review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"type":"object"},"total_count":{"description":"Total review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["reviews","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Reviews","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_reviews","x-apifuse-operation-key":"ohouse-deals/get_product_reviews","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"e49cdec64cb5c657b08e1056e56f7b04cb5f6ea6103dbe2b98b80b1f289f41c0","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_product_used_cards":{"post":{"description":"Use when you need public user content cards that use or tag a specific Ohouse production id. It calls the used-card endpoint and returns normalized card ids, images, captions, counters, writers, and source URL.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Product Used Cards\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_product_used_cards","requestBody":{"content":{"application/json":{"example":{"production_id":"2267446"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for product used-card content","properties":{"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":20,"description":"Rows per page","maximum":100,"minimum":1,"type":"integer"},"production_id":{"description":"Ohouse production id","minLength":1,"type":"string"}},"required":["production_id","page","per"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"cards":[{"description":"사용 사진","id":"1","image_url":"https://image.ohou.se/1.jpg"}],"source_url":"https://ohou.se/apig/productions/2267446/used_card.json?page=1&per=20"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse product used-card result","properties":{"cards":{"description":"Product used-card rows","items":{"additionalProperties":false,"description":"Normalized public Ohouse content card","properties":{"description":{"description":"Card description/caption when exposed","type":"string"},"id":{"description":"Ohouse content card identifier","type":"string"},"image_url":{"description":"Card image URL when exposed","type":"string"},"like_count":{"description":"Like count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reply_count":{"description":"Reply count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scrap_count":{"description":"Scrap count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"url":{"description":"Public card landing URL when exposed","type":"string"},"user_id":{"description":"Writer user identifier when exposed","type":"string"},"user_nickname":{"description":"Writer nickname when exposed","type":"string"},"view_count":{"description":"View count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["cards","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Product Used Cards","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_product_used_cards","x-apifuse-operation-key":"ohouse-deals/get_product_used_cards","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"24ce316a02741b6b08f85f16dc1408a0803dd92ffe37f70686e089569a0ef080","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_products_by_ids":{"post":{"description":"Use when you already have one or more Ohouse product ids and need public product summaries in one call. It queries the batch products endpoint and normalizes ids, names, urls, pricing, images, and review signals.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Products By Ids\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_products_by_ids","requestBody":{"content":{"application/json":{"example":{"ids":["971178"]},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for batch product lookup","properties":{"ids":{"description":"Ohouse product ids","items":{"minLength":1,"type":"string"},"maxItems":50,"minItems":1,"type":"array"}},"required":["ids"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"id":"971178","name":"샘플 상품","url":"https://store.ohou.se/goods/971178"}],"source_url":"https://store.ohou.se/api/products?ids=971178"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Batch products result","properties":{"items":{"description":"Products returned by id","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Products By Ids","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_products_by_ids","x-apifuse-operation-key":"ohouse-deals/get_products_by_ids","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"f84be9d5c5168f57ea7b9bdca60a9997676c5709620679d8363f394cb2ae5e52","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_project_detail":{"post":{"description":"Use when you need public Ohouse contents project detail such as a housewarming article. It reads the contents project API and returns title, content type, writer metadata, residence/style fields, section count, and product cards.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Project Detail\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_project_detail","requestBody":{"content":{"application/json":{"example":{"project_id":"150869"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input with Ohouse project id","properties":{"project_id":{"description":"Ohouse contents project id","minLength":1,"type":"string"}},"required":["project_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"product_cards":[],"project":{"id":"150869","title":"샘플 집들이"},"section_count":3,"source_url":"https://contents.ohou.se/api/projects/150869"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse project detail result","properties":{"product_cards":{"description":"Cards/products found in project document","items":{"additionalProperties":false,"description":"Normalized public Ohouse content card","properties":{"description":{"description":"Card description/caption when exposed","type":"string"},"id":{"description":"Ohouse content card identifier","type":"string"},"image_url":{"description":"Card image URL when exposed","type":"string"},"like_count":{"description":"Like count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reply_count":{"description":"Reply count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scrap_count":{"description":"Scrap count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"url":{"description":"Public card landing URL when exposed","type":"string"},"user_id":{"description":"Writer user identifier when exposed","type":"string"},"user_nickname":{"description":"Writer nickname when exposed","type":"string"},"view_count":{"description":"View count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"project":{"additionalProperties":false,"description":"Normalized Ohouse project detail/summary","properties":{"area":{"description":"Area feature when exposed","type":"string"},"content_type":{"description":"Ohouse content type when exposed","type":"string"},"cover_image_url":{"description":"Cover image URL when exposed","type":"string"},"created_at":{"description":"Creation timestamp when exposed","type":"string"},"id":{"description":"Project/content identifier","type":"string"},"residence":{"description":"Residence feature when exposed","type":"string"},"style":{"description":"Style labels when exposed","items":{"type":"string"},"type":"array"},"title":{"description":"Project title","type":"string"},"writer_id":{"description":"Writer identifier when exposed","type":"string"},"writer_nickname":{"description":"Writer nickname when exposed","type":"string"}},"required":["id","title"],"type":"object"},"section_count":{"description":"BPD document section count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["project","product_cards","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Project Detail","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_project_detail","x-apifuse-operation-key":"ohouse-deals/get_project_detail","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"45b1c7a83ca5701b5dca4148089b6d51f1101328e3c3309b51b8dc5d8cbb2e86","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_project_recommendations":{"post":{"description":"Use when you need public recommended Ohouse projects related to an existing contents project. It calls the project recommendations endpoint and normalizes project ids, titles, writer metadata, content type, and section title.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Project Recommendations\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_project_recommendations","requestBody":{"content":{"application/json":{"example":{"project_id":"150869"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input with Ohouse project id","properties":{"project_id":{"description":"Ohouse contents project id","minLength":1,"type":"string"}},"required":["project_id"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"projects":[{"id":"1","title":"추천 프로젝트"}],"source_url":"https://contents.ohou.se/api/projects/recommends/150869","title":"추천"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse project recommendations result","properties":{"projects":{"description":"Recommended projects","items":{"additionalProperties":false,"description":"Normalized Ohouse project detail/summary","properties":{"area":{"description":"Area feature when exposed","type":"string"},"content_type":{"description":"Ohouse content type when exposed","type":"string"},"cover_image_url":{"description":"Cover image URL when exposed","type":"string"},"created_at":{"description":"Creation timestamp when exposed","type":"string"},"id":{"description":"Project/content identifier","type":"string"},"residence":{"description":"Residence feature when exposed","type":"string"},"style":{"description":"Style labels when exposed","items":{"type":"string"},"type":"array"},"title":{"description":"Project title","type":"string"},"writer_id":{"description":"Writer identifier when exposed","type":"string"},"writer_nickname":{"description":"Writer nickname when exposed","type":"string"}},"required":["id","title"],"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"title":{"description":"Recommendation title when exposed","type":"string"}},"required":["projects","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Project Recommendations","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_project_recommendations","x-apifuse-operation-key":"ohouse-deals/get_project_recommendations","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"b7e87b8735ee8dcfe8f5e0cd472777a9bb48b609b5c6ccbb3eced07f96833109","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_promotions":{"post":{"description":"Use when you need current public Ohouse promotion-card metadata without user state. It calls the observed tRPC promotion endpoint and normalizes ids, titles, image URLs, landing URLs, and a valid empty result when no cards are exposed.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Promotions\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_promotions","requestBody":{"content":{"application/json":{"example":{},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"No input is required for public promotion cards","properties":{},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"example":{"data":{"promotions":[{"id":"1","title":"샘플 프로모션","url":"https://ohou.se"}],"source_url":"https://ohou.se/api/trpc/promotions.getPromotionCards?batch=1"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse promotion cards result","properties":{"promotions":{"description":"Promotion card summaries","items":{"additionalProperties":false,"properties":{"id":{"description":"Promotion id when exposed","type":"string"},"image_url":{"description":"Promotion image when exposed","type":"string"},"title":{"description":"Promotion title when exposed","type":"string"},"url":{"description":"Promotion landing URL when exposed","type":"string"}},"type":"object"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["promotions","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Promotions","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_promotions","x-apifuse-operation-key":"ohouse-deals/get_promotions","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"c78d15d2179a3289059a7b0d331a94d54e324e5091ba9785e3b399e9f52283d8","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_search_trends":{"post":{"description":"Use when you need public Ohouse search portal trends for autocomplete, discovery, or monitoring. It reads the observed portal endpoint and returns ranked popular keywords plus recommended keyword strings.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Search Trends\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_search_trends","requestBody":{"content":{"application/json":{"example":{},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for search portal trends","properties":{"tab":{"description":"Optional Ohouse search tab","type":"string"}},"type":"object"}}},"required":false},"responses":{"200":{"content":{"application/json":{"example":{"data":{"popular_keywords":[{"is_new":false,"keyword":"쇼파","rank":1}],"recommend_keywords":[],"source_url":"https://ohou.se/apig/search/portal.json"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse search trend result","properties":{"popular_keywords":{"description":"Popular search keywords","items":{"additionalProperties":false,"properties":{"is_new":{"description":"Whether keyword is new","type":"boolean"},"keyword":{"description":"Display keyword","type":"string"},"rank":{"description":"Keyword rank","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["keyword","rank","is_new"],"type":"object"},"type":"array"},"recommend_keywords":{"description":"Recommended keywords","items":{"type":"string"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["popular_keywords","recommend_keywords","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Search Trends","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_search_trends","x-apifuse-operation-key":"ohouse-deals/get_search_trends","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"8132b03812c171a3b829c016518303b9c1a4185a01207f2f5217c4b17273b38d","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/get_site_metadata":{"post":{"description":"Use when you need public Ohouse site navigation or category metadata for discovery. It calls the navigation endpoint and deliberately excludes csrf, cookies, login state, cart count, and other session-specific fields.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Get Site Metadata\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__get_site_metadata","requestBody":{"content":{"application/json":{"example":{"service":"store"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for site metadata/navigation","properties":{"service":{"default":"store","description":"Navigation service scope","enum":["store","content"],"type":"string"}},"required":["service"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"categories":[{"id":"1","title":"가구"}],"nav_items":[{"title":"스토어","url":"https://ohou.se/store"}],"service":"store","source_url":"https://store.ohou.se/api/navigation"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"additionalProperties":false,"description":"Ohouse category node","properties":{"children":{"description":"Nested child categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"id":{"description":"Category identifier","type":"string"},"image_url":{"description":"Category image URL when exposed","type":"string"},"title":{"description":"Category title","type":"string"}},"required":["id","title"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse public site metadata without csrf/session fields","properties":{"categories":{"description":"Store/category menu entries when exposed","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"nav_items":{"description":"Public navigation items","items":{"additionalProperties":false,"properties":{"title":{"description":"Navigation title","type":"string"},"url":{"description":"Navigation URL","type":"string"}},"required":["title"],"type":"object"},"type":"array"},"service":{"description":"Navigation service scope","enum":["store","content"],"type":"string"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"}},"required":["service","nav_items","categories","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Get Site Metadata","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"get_site_metadata","x-apifuse-operation-key":"ohouse-deals/get_site_metadata","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"f3768334c2a374adf34355111fd12112c297feec2d1c094312103d23d2217175","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/search_cards":{"post":{"description":"Use when you need public Ohouse community/content cards for a keyword rather than commerce products. It calls the cards feed endpoint and returns normalized cards, related keywords, totals, pagination state, and source URL.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Search Cards\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__search_cards","requestBody":{"content":{"application/json":{"example":{"query":"2인 쇼파"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Ohouse card search","properties":{"page":{"default":1,"description":"One-based page number","maximum":1000,"minimum":1,"type":"integer"},"per":{"default":20,"description":"Rows per page","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Card search query","minLength":1,"type":"string"},"search_affect_type":{"default":"Related","description":"Observed Ohouse search affect type for card search","enum":["Typing","Related","CardSearch","ProductCategoryIndex","StoreHomeCategory"],"type":"string"}},"required":["query","search_affect_type","page","per"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"cards":[{"description":"거실","id":"1","image_url":"https://image.ohou.se/1.jpg"}],"next":false,"related_keywords":["쇼파"],"source_url":"https://ohou.se/apig/cards/feed.json?query=2%EC%9D%B8+%EC%87%BC%ED%8C%8C&search_affect_type=Related&page=1&per=20&v=5","total_count":1},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse card search result","properties":{"cards":{"description":"Content cards","items":{"additionalProperties":false,"description":"Normalized public Ohouse content card","properties":{"description":{"description":"Card description/caption when exposed","type":"string"},"id":{"description":"Ohouse content card identifier","type":"string"},"image_url":{"description":"Card image URL when exposed","type":"string"},"like_count":{"description":"Like count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"reply_count":{"description":"Reply count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"scrap_count":{"description":"Scrap count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"url":{"description":"Public card landing URL when exposed","type":"string"},"user_id":{"description":"Writer user identifier when exposed","type":"string"},"user_nickname":{"description":"Writer nickname when exposed","type":"string"},"view_count":{"description":"View count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["id"],"type":"object"},"type":"array"},"next":{"description":"Whether another page exists","type":"boolean"},"related_keywords":{"description":"Related keywords","items":{"type":"string"},"type":"array"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"total_count":{"description":"Total card count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["cards","related_keywords","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Search Cards","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search_cards","x-apifuse-operation-key":"ohouse-deals/search_cards","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"8de58c87e2aa14f3314a98f393319351eb76b0447bffba0193f1fdaf379d7dff","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/search_products":{"post":{"description":"Use when you need public Ohouse commerce search results for a keyword without login. It calls the observed APIG commerce body endpoint, normalizes product cards, and preserves pagination tokens for follow-up queries.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Search Products\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__search_products","requestBody":{"content":{"application/json":{"example":{"query":"쇼파"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Ohouse commerce product search","properties":{"limit":{"default":24,"description":"Maximum number of commerce product rows to return","maximum":100,"minimum":1,"type":"integer"},"page_token":{"description":"Opaque Ohouse nextPageToken from a previous search","type":"string"},"query":{"description":"Ohouse commerce search query","minLength":1,"type":"string"},"search_affect_type":{"default":"Typing","description":"Observed Ohouse search affect type for commerce queries","enum":["Typing","Related","CardSearch","ProductCategoryIndex","StoreHomeCategory"],"type":"string"}},"required":["query","search_affect_type","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"items":[{"id":"2267446","name":"샘플 쇼파","selling_price":100000,"url":"https://store.ohou.se/goods/2267446"}],"source_url":"https://ohou.se/apig/mapi/v1/search/commerce/body?query=%EC%87%BC%ED%8C%8C&search_affect_type=Typing","title":"쇼파"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse commerce search result","properties":{"description":{"description":"Search meta description when exposed","type":"string"},"items":{"description":"Normalized product cards found in search components","items":{"additionalProperties":false,"description":"Normalized Ohouse product summary backed by store/search/category responses","properties":{"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url"],"type":"object"},"type":"array"},"next_page_token":{"description":"Opaque Ohouse nextPageToken when present","type":"string"},"source_url":{"description":"Ohouse API URL used for the request","type":"string"},"title":{"description":"Search meta title when exposed","type":"string"}},"required":["items","source_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Search Products","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"search_products","x-apifuse-operation-key":"ohouse-deals/search_products","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"f8f58afc4cfe22cdf9f5e55f094f386f1188dc0d35c64c67838e43406cd5f653","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":10,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/today-deals":{"post":{"description":"Use when a tenant needs read-only Ohouse Today Deals without login. Fetches the stable public feed API through Chrome TLS/proxy transport, normalizes deal pricing/review/free-delivery signals, and supports API/local filtering.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Today Deals\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__today_deals","requestBody":{"content":{"application/json":{"example":{"limit":3},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for listing public Ohouse Today Deals","properties":{"category_id":{"description":"Ohouse Today Deals first-depth category id","type":"string"},"continuation_token":{"description":"Opaque Ohouse continuation token from a previous feed page","type":"string"},"direction":{"default":"ASC","description":"Observed Today Deals sort direction","enum":["ASC","DESC"],"type":"string"},"free_delivery":{"description":"Optional filter for deals marked free delivery","type":"boolean"},"limit":{"default":20,"description":"Maximum number of Ohouse deal rows to return","maximum":100,"minimum":1,"type":"integer"},"min_discount_rate":{"description":"Optional minimum discount percentage filter","maximum":100,"minimum":0,"type":"integer"},"order":{"default":"POPULARITY","description":"Observed Today Deals order code","enum":["POPULARITY"],"type":"string"},"query":{"default":"","description":"Optional keyword filter matched against title and brand","type":"string"}},"required":["limit","query","order","direction"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"categories":[{"id":"1","title":"전체"}],"items":[{"brand":"모던푸드","discount_rate":36,"free_delivery":true,"id":"3979634","name":"하림 닭볶음탕용","review_count":2,"selling_price":15150,"sold_out":false,"title":"하림 닭볶음탕용","url":"https://store.ohou.se/goods/3979634"}],"source_api_url":"https://store.ohou.se/api/today-deals/feed?params.order=POPULARITY&params.direction=ASC&params.limit=3","source_url":"https://store.ohou.se/today_deals"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"additionalProperties":false,"description":"Ohouse category node","properties":{"children":{"description":"Nested child categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"id":{"description":"Category identifier","type":"string"},"image_url":{"description":"Category image URL when exposed","type":"string"},"title":{"description":"Category title","type":"string"}},"required":["id","title"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse Today Deals result envelope","properties":{"banner_image_url":{"description":"Today Deals banner image URL when exposed","type":"string"},"categories":{"description":"Today Deals first-depth categories when exposed","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"items":{"description":"Normalized Ohouse Today Deals rows","items":{"additionalProperties":false,"description":"A normalized Ohouse Today Deals row","properties":{"best_discount_description":{"description":"Best discount explanation text","type":"string"},"best_price":{"description":"Best visible deal price in KRW when exposed","type":"number"},"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"end_at":{"description":"Deal end timestamp when exposed","type":"string"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"start_at":{"description":"Deal start timestamp when exposed","type":"string"},"tier":{"description":"Ohouse Today Deal tier code when exposed","type":"string"},"title":{"description":"Deal title","type":"string"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url","title"],"type":"object"},"type":"array"},"source_api_url":{"description":"Ohouse API URL used for the request","type":"string"},"source_url":{"description":"Public Ohouse Today Deals page URL","type":"string"}},"required":["items","source_url","source_api_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Today Deals","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"today-deals","x-apifuse-operation-key":"ohouse-deals/today-deals","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"34fde416ad6e443507845233f07de52da386a159168dc5b4e331b729c35a7cc0","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/ohouse-deals/today_deals":{"post":{"description":"Use when a tenant needs read-only Ohouse Today Deals without login. Fetches the stable public feed API through Chrome TLS/proxy transport, normalizes deal pricing/review/free-delivery signals, and supports API/local filtering.\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n# Ohouse Store and Contents API Today Deals\n\nReturns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.\n\n## Normalization notes\n\n- Uses Chrome TLS/proxy transport because ordinary curl receives 403 HTML for stable Ohouse APIs.\n- Avoids volatile Next.js build-id data URLs and uses stable /api and /apig endpoints.\n- Does not expose csrf tokens, cookies, login user state, cart count, or user-specific mutation endpoints.\n- CMS/module responses are summarized into stable product/card/project envelopes.","operationId":"ohouse-deals__today_deals","requestBody":{"content":{"application/json":{"example":{"limit":3},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for listing public Ohouse Today Deals","properties":{"category_id":{"description":"Ohouse Today Deals first-depth category id","type":"string"},"continuation_token":{"description":"Opaque Ohouse continuation token from a previous feed page","type":"string"},"direction":{"default":"ASC","description":"Observed Today Deals sort direction","enum":["ASC","DESC"],"type":"string"},"free_delivery":{"description":"Optional filter for deals marked free delivery","type":"boolean"},"limit":{"default":20,"description":"Maximum number of Ohouse deal rows to return","maximum":100,"minimum":1,"type":"integer"},"min_discount_rate":{"description":"Optional minimum discount percentage filter","maximum":100,"minimum":0,"type":"integer"},"order":{"default":"POPULARITY","description":"Observed Today Deals order code","enum":["POPULARITY"],"type":"string"},"query":{"default":"","description":"Optional keyword filter matched against title and brand","type":"string"}},"required":["limit","query","order","direction"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"categories":[{"id":"1","title":"전체"}],"items":[{"brand":"모던푸드","discount_rate":36,"free_delivery":true,"id":"3979634","name":"하림 닭볶음탕용","review_count":2,"selling_price":15150,"sold_out":false,"title":"하림 닭볶음탕용","url":"https://store.ohou.se/goods/3979634"}],"source_api_url":"https://store.ohou.se/api/today-deals/feed?params.order=POPULARITY&params.direction=ASC&params.limit=3","source_url":"https://store.ohou.se/today_deals"},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"ohouse-deals"},"pagination":null},"schema":{"properties":{"data":{"$defs":{"__schema0":{"additionalProperties":false,"description":"Ohouse category node","properties":{"children":{"description":"Nested child categories","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"id":{"description":"Category identifier","type":"string"},"image_url":{"description":"Category image URL when exposed","type":"string"},"title":{"description":"Category title","type":"string"}},"required":["id","title"],"type":"object"}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Ohouse Today Deals result envelope","properties":{"banner_image_url":{"description":"Today Deals banner image URL when exposed","type":"string"},"categories":{"description":"Today Deals first-depth categories when exposed","items":{"$ref":"#/$defs/__schema0"},"type":"array"},"items":{"description":"Normalized Ohouse Today Deals rows","items":{"additionalProperties":false,"description":"A normalized Ohouse Today Deals row","properties":{"best_discount_description":{"description":"Best discount explanation text","type":"string"},"best_price":{"description":"Best visible deal price in KRW when exposed","type":"number"},"brand":{"description":"Brand name when exposed","type":"string"},"discount_rate":{"description":"Discount percentage when exposed","type":"number"},"end_at":{"description":"Deal end timestamp when exposed","type":"string"},"free_delivery":{"description":"Whether upstream marks free delivery","type":"boolean"},"id":{"description":"Ohouse product/goods identifier","type":"string"},"image_url":{"description":"Product image URL when exposed","type":"string"},"is_selling":{"description":"Whether upstream marks the product as selling","type":"boolean"},"name":{"description":"Product display name","type":"string"},"original_price":{"description":"Original KRW price when exposed","type":"number"},"review_average":{"description":"Average review score when exposed","type":"number"},"review_count":{"description":"Review count when exposed","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"selling_price":{"description":"Current KRW selling price when exposed","type":"number"},"sold_out":{"description":"Whether upstream marks the product sold out","type":"boolean"},"start_at":{"description":"Deal start timestamp when exposed","type":"string"},"tier":{"description":"Ohouse Today Deal tier code when exposed","type":"string"},"title":{"description":"Deal title","type":"string"},"url":{"description":"Public Ohouse product URL","type":"string"}},"required":["id","name","url","title"],"type":"object"},"type":"array"},"source_api_url":{"description":"Ohouse API URL used for the request","type":"string"},"source_url":{"description":"Public Ohouse Today Deals page URL","type":"string"}},"required":["items","source_url","source_api_url"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"Ohouse Store and Contents API Today Deals","tags":["ohouse-deals"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"Ohouse Store and Contents API","id":"ohouse-deals"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"today_deals","x-apifuse-operation-key":"ohouse-deals/today_deals","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"ohouse-deals","x-apifuse-provider-version":"1.1.1","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"34fde416ad6e443507845233f07de52da386a159168dc5b4e331b729c35a7cc0","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-rate-limit":{"calls":5,"window":"minute"},"x-read-only":true,"x-requires-connection":false}},"/v1/yogiyo-api/confirm-phone":{"post":{"description":"Use this operation when the user provides the Yogiyo SMS code received from verify-phone. It confirms the phone number on the same connected anonymous guest customer before place-order is attempted.\nSMS 인증번호를 검증해 같은 guest customer 세션에서 주문 가능 상태로 만듭니다.\n\n# 휴대폰 인증번호 확인\n\nSMS 인증번호를 검증해 같은 guest customer 세션에서 주문 가능 상태로 만듭니다.","operationId":"yogiyo-api__confirm_phone","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Phone confirmation input","properties":{"code":{"description":"SMS code","minLength":1,"type":"string"},"phone":{"description":"Korean phone number","minLength":8,"type":"string"}},"required":["phone","code"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Yogiyo phone verification result","properties":{"action_hint":{"description":"Next action","type":"string"},"message":{"description":"Message","type":"string"},"phone_normalized":{"description":"Digits-only phone number","type":"string"},"success":{"description":"Success flag","type":"boolean"},"summary":{"description":"Summary","type":"string"}},"required":["success","phone_normalized","message","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"security":[{"providerLogin":[]}],"summary":"휴대폰 인증번호 확인","tags":["yogiyo-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"요기요","id":"yogiyo-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"confirm-phone","x-apifuse-operation-key":"yogiyo-api/confirm-phone","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"yogiyo-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"a25fbdb672bbc04559a67aa3ea318cf551931d98b7c7061a116cc4ae3e5566ce","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-requires-connection":true}},"/v1/yogiyo-api/find-restaurants":{"post":{"description":"Use this operation when a user wants to discover Yogiyo restaurants by keyword, food category, address, or coordinates. It normalizes either discovery search or shop-list responses for restaurant selection before menu detail or order-preview steps.\n키워드 또는 카테고리 기반 요기요 매장 목록을 정규화합니다.\n\n# 음식점 검색\n\n키워드 또는 카테고리 기반 요기요 매장 목록을 정규화합니다.","operationId":"yogiyo-api__find_restaurants","requestBody":{"content":{"application/json":{"example":{"keyword":"치킨","lat":37.5518333,"limit":5,"lng":126.9887774,"sort":"recommended"},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for finding Yogiyo restaurants","properties":{"address":{"default":"","description":"Delivery/search address","type":"string"},"category":{"default":"","description":"Korean category label or Yogiyo code","type":"string"},"keyword":{"default":"","description":"Restaurant/menu keyword","type":"string"},"lat":{"description":"Latitude","type":"number"},"limit":{"default":20,"description":"Maximum results","maximum":60,"minimum":1,"type":"integer"},"lng":{"description":"Longitude","type":"number"},"sort":{"default":"recommended","description":"recommended, rating, distance, delivery_fee, or delivery_time","enum":["recommended","rating","distance","delivery_fee","delivery_time"],"type":"string"}},"required":["keyword","category","address","sort","limit"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"action_hint":"restaurant-full(shop_id)로 메뉴와 상세를 조회한 뒤 order-preview로 장바구니를 확인하세요.","items":[],"query_type":"keyword","searched_keyword":"치킨","sort_label":"추천순","summary":"0개 매장을 찾았습니다.","total_count":0},"meta":{"fetchedAt":"2026-01-01T00:00:00.000Z","source":"yogiyo-api"},"pagination":null},"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Yogiyo restaurant search results","properties":{"action_hint":{"description":"Suggested next action","type":"string"},"items":{"description":"Restaurants","items":{"additionalProperties":false,"description":"Yogiyo restaurant summary","properties":{"address":{"description":"Restaurant address","type":"string"},"categories":{"description":"Category labels","items":{"description":"Category label","type":"string"},"type":"array"},"delivery_fee":{"description":"Minimum delivery fee","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"estimated_delivery_minutes":{"description":"Estimated delivery minutes","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"is_open":{"description":"Whether open now","type":"boolean"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"min_order_amount":{"description":"Minimum order amount","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"description":"Restaurant name","type":"string"},"popular_menus":{"description":"Representative menus","items":{"description":"Representative menu name","type":"string"},"type":"array"},"rating":{"description":"Review average","type":"number"},"review_count":{"description":"Review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"shop_id":{"description":"Yogiyo shop id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"thumbnail_url":{"description":"Thumbnail URL","type":"string"},"web_url":{"description":"Yogiyo mobile web URL","format":"uri","type":"string"}},"required":["shop_id","name","address","lat","lng","rating","review_count","delivery_fee","min_order_amount","estimated_delivery_minutes","is_open","categories","popular_menus","web_url"],"type":"object"},"type":"array"},"query_type":{"description":"keyword/category/all","enum":["keyword","category","all"],"type":"string"},"resolved_address":{"additionalProperties":false,"description":"Resolved address if address input was used","properties":{"input_address":{"description":"Original user-entered address","type":"string"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"lot_address":{"description":"Resolved lot address","type":"string"},"road_address":{"description":"Resolved road address","type":"string"}},"required":["input_address","road_address","lot_address","lat","lng"],"type":"object"},"searched_keyword":{"description":"Keyword used","type":"string"},"sort_label":{"description":"Korean sort label","type":"string"},"summary":{"description":"Summary","type":"string"},"total_count":{"description":"Result count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["items","total_count","query_type","searched_keyword","sort_label","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"음식점 검색","tags":["yogiyo-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"요기요","id":"yogiyo-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"find-restaurants","x-apifuse-operation-key":"yogiyo-api/find-restaurants","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"yogiyo-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"15166dbf968ba09aaaad9096c54b01ebd2148020c339000459faf892d474fcbd","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":20000}},"/v1/yogiyo-api/order-preview":{"post":{"description":"Use this operation when a user has selected Yogiyo menu item ids, category ids, quantities, and options and wants to validate the cart, delivery fee, discounts, total amount, warnings, and delivery address before ordering.\n메뉴 선택을 요기요 장바구니 계산 API로 검증하고 예상 금액을 반환합니다.\n\n# 주문 미리보기\n\n메뉴 선택을 요기요 장바구니 계산 API로 검증하고 예상 금액을 반환합니다.","operationId":"yogiyo-api__order_preview","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for Yogiyo order preview","properties":{"address_detail":{"default":"","description":"Delivery address detail","type":"string"},"address_main":{"default":"","description":"Delivery main address","type":"string"},"coupon_id":{"description":"Reserved for future coupon support","type":"string"},"delivery_note":{"default":"","description":"Delivery note","type":"string"},"health_check_discovery":{"const":true,"description":"Internal health-check flag that permits live shop/menu discovery when shop_id or items are omitted","type":"boolean"},"items":{"default":[],"description":"Order items; omitted health checks discover a previewable menu","items":{"additionalProperties":false,"description":"Order item input","properties":{"category_id":{"description":"Menu category id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"item_id":{"description":"Menu item id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"options":{"default":[],"description":"Selected options","items":{"additionalProperties":false,"description":"Selected menu option","properties":{"option_id":{"description":"Option id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"section_id":{"description":"Option section id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["section_id","option_id"],"type":"object"},"type":"array"},"quantity":{"default":1,"description":"Quantity","maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["item_id","category_id","quantity","options"],"type":"object"},"type":"array"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"shop_id":{"description":"Shop id; omitted health checks discover a live shop","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["items","address_main","address_detail","delivery_note"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Yogiyo order preview","properties":{"action_hint":{"description":"Suggested next action","type":"string"},"delivery_address":{"description":"Delivery address","type":"string"},"delivery_fee":{"description":"Delivery fee","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"delivery_note":{"description":"Delivery note","type":"string"},"discount":{"description":"Discount","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"items":{"description":"Cart items","items":{"additionalProperties":false,"description":"Order preview item","properties":{"item_id":{"description":"Menu item id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"line_total":{"description":"Line total","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"description":"Item name","type":"string"},"option_names":{"description":"Option names","items":{"description":"Selected option name","type":"string"},"type":"array"},"quantity":{"description":"Quantity","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"unit_price":{"description":"Unit price","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["item_id","name","quantity","unit_price","option_names","line_total"],"type":"object"},"type":"array"},"resolved_address":{"additionalProperties":false,"description":"Resolved address","properties":{"input_address":{"description":"Original user-entered address","type":"string"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"lot_address":{"description":"Resolved lot address","type":"string"},"road_address":{"description":"Resolved road address","type":"string"}},"required":["input_address","road_address","lot_address","lat","lng"],"type":"object"},"shop_id":{"description":"Shop id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"subtotal":{"description":"Items subtotal","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"summary":{"description":"Summary","type":"string"},"total":{"description":"Total amount","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"warnings":{"description":"Warnings","items":{"description":"Cart warning message","type":"string"},"type":"array"}},"required":["shop_id","items","subtotal","delivery_fee","discount","total","delivery_address","delivery_note","warnings","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"INVALID_INPUT: shop_id and at least one menu item are required","x-apifuse-error-code":"INVALID_INPUT","x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"shop_id and at least one menu item are required","retryable":false,"status":400}],"x-apifuse-retryable":false},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"NO_DATA: No previewable Yogiyo shop/item could be resolved","x-apifuse-error-code":"NO_DATA","x-apifuse-error-codes":[{"code":"NO_DATA","description":"No previewable Yogiyo shop/item could be resolved","retryable":false,"status":404}],"x-apifuse-retryable":false},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Yogiyo upstream rejected or failed the cart preview Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Yogiyo upstream rejected or failed the cart preview","retryable":true,"status":502}],"x-apifuse-retryable":true}},"summary":"주문 미리보기","tags":["yogiyo-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"요기요","id":"yogiyo-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"INVALID_INPUT","description":"shop_id and at least one menu item are required","retryable":false,"status":400},{"code":"NO_DATA","description":"No previewable Yogiyo shop/item could be resolved","retryable":false,"status":404},{"code":"UPSTREAM_ERROR","description":"Yogiyo upstream rejected or failed the cart preview","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"order-preview","x-apifuse-operation-key":"yogiyo-api/order-preview","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"yogiyo-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"c8465252413dbd2fe2ac44927d42d3d4a0f0de38c2792f9c12c2c13877b76374","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/yogiyo-api/place-order":{"post":{"description":"Use this operation when the user has verified their phone number, confirmed the delivery address detail, and accepted the cart preview. It submits the Yogiyo order and creates a NaverPay payment URL for handoff.\n인증된 전화번호와 장바구니를 검증한 뒤 주문을 제출하고 네이버페이 결제 URL을 반환합니다.\n\n# 주문/결제 URL 생성\n\n인증된 전화번호와 장바구니를 검증한 뒤 주문을 제출하고 네이버페이 결제 URL을 반환합니다.","operationId":"yogiyo-api__place_order","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for placing a Yogiyo order","properties":{"address_detail":{"default":"","description":"Delivery address detail","type":"string"},"address_main":{"description":"Required main delivery address","minLength":1,"type":"string"},"coupon_id":{"description":"Reserved for future coupon support","type":"string"},"delivery_note":{"default":"","description":"Delivery note","type":"string"},"health_check_discovery":{"const":true,"description":"Internal health-check flag that permits live shop/menu discovery when shop_id or items are omitted","type":"boolean"},"items":{"description":"Order items","items":{"additionalProperties":false,"description":"Order item input","properties":{"category_id":{"description":"Menu category id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"item_id":{"description":"Menu item id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"options":{"default":[],"description":"Selected options","items":{"additionalProperties":false,"description":"Selected menu option","properties":{"option_id":{"description":"Option id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"section_id":{"description":"Option section id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["section_id","option_id"],"type":"object"},"type":"array"},"quantity":{"default":1,"description":"Quantity","maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["item_id","category_id","quantity","options"],"type":"object"},"minItems":1,"type":"array"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"phone":{"description":"Verified phone number","minLength":8,"type":"string"},"safety_number":{"default":true,"description":"Use safety number","type":"boolean"},"shop_id":{"description":"Shop id","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["shop_id","items","address_main","address_detail","delivery_note","phone","safety_number"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Yogiyo place order result","properties":{"action_hint":{"description":"Next action","type":"string"},"delivery_address":{"description":"Delivery address","type":"string"},"delivery_note":{"description":"Delivery note","type":"string"},"order_number":{"description":"Yogiyo order number","type":"string"},"payment_url":{"description":"NaverPay payment URL","type":"string"},"pg_type":{"description":"Payment gateway type","enum":["NAVER_PAY"],"type":"string"},"safety_number_enabled":{"description":"Safety number flag","type":"boolean"},"store_name":{"description":"Store name if available","type":"string"},"summary":{"description":"Summary","type":"string"},"total_amount":{"description":"Final total amount","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["order_number","payment_url","pg_type","store_name","total_amount","delivery_address","delivery_note","safety_number_enabled","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"PHONE_NOT_VERIFIED: Phone verification must complete before ordering ADDRESS_DETAIL_REQUIRED: A street number or address_detail is required ORDER_PREVIEW_WARNINGS: The cart preview reported blocking warnings","x-apifuse-error-codes":[{"code":"PHONE_NOT_VERIFIED","description":"Phone verification must complete before ordering","retryable":false,"status":400},{"code":"ADDRESS_DETAIL_REQUIRED","description":"A street number or address_detail is required","retryable":false,"status":400},{"code":"ORDER_PREVIEW_WARNINGS","description":"The cart preview reported blocking warnings","retryable":false,"status":400}]},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."},"502":{"description":"UPSTREAM_ERROR: Yogiyo upstream rejected or failed the order submission Retryable.","x-apifuse-error-code":"UPSTREAM_ERROR","x-apifuse-error-codes":[{"code":"UPSTREAM_ERROR","description":"Yogiyo upstream rejected or failed the order submission","retryable":true,"status":502}],"x-apifuse-retryable":true}},"security":[{"providerLogin":[]}],"summary":"주문/결제 URL 생성","tags":["yogiyo-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"요기요","id":"yogiyo-api"},"x-apifuse-early-access-required":false,"x-apifuse-error-codes":[{"code":"PHONE_NOT_VERIFIED","description":"Phone verification must complete before ordering","retryable":false,"status":400},{"code":"ADDRESS_DETAIL_REQUIRED","description":"A street number or address_detail is required","retryable":false,"status":400},{"code":"ORDER_PREVIEW_WARNINGS","description":"The cart preview reported blocking warnings","retryable":false,"status":400},{"code":"UPSTREAM_ERROR","description":"Yogiyo upstream rejected or failed the order submission","retryable":true,"status":502}],"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"place-order","x-apifuse-operation-key":"yogiyo-api/place-order","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"yogiyo-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"a26a11a4db4fa833b371bd2e6d5946ad9ba80e6b474d0c015b5a3fc98b673777","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-requires-connection":true,"x-timeout-ms":45000}},"/v1/yogiyo-api/restaurant-full":{"post":{"description":"Use this operation when a user has chosen a Yogiyo shop_id and needs full restaurant details, menu categories, option section ids, option ids, prices, sold-out flags, and sampled reviews before building an order.\nshop_id 기반 매장 상세와 전체 메뉴/옵션을 조회합니다.\n\n# 매장/메뉴 상세\n\nshop_id 기반 매장 상세와 전체 메뉴/옵션을 조회합니다.","operationId":"yogiyo-api__restaurant_full","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Input for full restaurant details","properties":{"health_check_discovery":{"const":true,"description":"Internal health-check flag that permits live shop discovery when shop_id is omitted","type":"boolean"},"include_reviews":{"default":true,"description":"Whether to include sampled reviews","type":"boolean"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"shop_id":{"description":"Yogiyo shop id; omitted health checks discover a live shop","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["include_reviews"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Full Yogiyo restaurant detail","properties":{"action_hint":{"description":"Suggested next action","type":"string"},"address":{"description":"Restaurant address","type":"string"},"categories":{"description":"Category labels","items":{"description":"Category label","type":"string"},"type":"array"},"delivery_fee":{"description":"Minimum delivery fee","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"estimated_delivery_minutes":{"description":"Estimated delivery minutes","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"is_open":{"description":"Whether open now","type":"boolean"},"lat":{"description":"Latitude","type":"number"},"lng":{"description":"Longitude","type":"number"},"menu_sections":{"description":"Menu sections","items":{"additionalProperties":false,"description":"Menu section","properties":{"items":{"description":"Menu items","items":{"additionalProperties":false,"description":"Full menu item","properties":{"category_id":{"description":"Menu category id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"description":{"description":"Description","type":"string"},"id":{"description":"Menu item id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"image_url":{"description":"Image URL","type":"string"},"is_popular":{"description":"Popular flag","type":"boolean"},"name":{"description":"Menu name","type":"string"},"options":{"description":"Option sections","items":{"additionalProperties":false,"description":"Menu option section","properties":{"is_required":{"description":"Required option section","type":"boolean"},"max_select":{"description":"Max selectable options","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"description":"Section name","type":"string"},"options":{"description":"Options","items":{"additionalProperties":false,"description":"Menu option","properties":{"name":{"description":"Option name","type":"string"},"option_id":{"description":"Option id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"price":{"description":"Option price","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"soldout":{"description":"Whether sold out","type":"boolean"}},"required":["option_id","name","price","soldout"],"type":"object"},"type":"array"},"section_id":{"description":"Option section id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["section_id","name","is_required","max_select","options"],"type":"object"},"type":"array"},"price":{"description":"Effective price","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"soldout":{"description":"Sold-out flag","type":"boolean"}},"required":["id","category_id","name","price","description","soldout","is_popular","options"],"type":"object"},"type":"array"},"name":{"description":"Section name","type":"string"}},"required":["name","items"],"type":"object"},"type":"array"},"min_order_amount":{"description":"Minimum order amount","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"name":{"description":"Restaurant name","type":"string"},"popular_menus":{"description":"Representative menus","items":{"description":"Representative menu name","type":"string"},"type":"array"},"rating":{"description":"Review average","type":"number"},"review_count":{"description":"Review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"review_summary":{"additionalProperties":false,"description":"Review summary","properties":{"avg_rating":{"description":"Average rating","type":"number"},"delivery_avg":{"description":"Delivery average","type":"number"},"quantity_avg":{"description":"Quantity average","type":"number"},"sample_comments":{"description":"Sample comments","items":{"description":"Sample review comment","type":"string"},"type":"array"},"taste_avg":{"description":"Taste average","type":"number"},"total_count":{"description":"Total review count","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"}},"required":["avg_rating","total_count","sample_comments"],"type":"object"},"shop_id":{"description":"Yogiyo shop id","maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"summary":{"description":"Summary","type":"string"},"thumbnail_url":{"description":"Thumbnail URL","type":"string"},"web_url":{"description":"Yogiyo mobile web URL","format":"uri","type":"string"}},"required":["shop_id","name","address","lat","lng","rating","review_count","delivery_fee","min_order_amount","estimated_delivery_minutes","is_open","categories","popular_menus","web_url","menu_sections","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"summary":"매장/메뉴 상세","tags":["yogiyo-api"],"x-apifuse-auth-flow-required":false,"x-apifuse-auth-modes":["none"],"x-apifuse-auth-required":false,"x-apifuse-connection-required":false,"x-apifuse-credential-provider":{"displayName":"요기요","id":"yogiyo-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"restaurant-full","x-apifuse-operation-key":"yogiyo-api/restaurant-full","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"yogiyo-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"59cdd2dd3f898860d6394aaf05268858a5b5ff682b27e4fdf1fdcd2e30912c4e","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":true,"x-open-world":true,"x-read-only":true,"x-requires-connection":false,"x-timeout-ms":30000}},"/v1/yogiyo-api/verify-phone":{"post":{"description":"Use this operation when a user is ready to place a Yogiyo order and needs an SMS verification code sent to their phone. It must run on a Yogiyo Connection so the same guest customer session is reused later.\n주문 전 전화번호 인증 SMS를 발송합니다.\n\n# 휴대폰 인증번호 발송\n\n주문 전 전화번호 인증 SMS를 발송합니다.","operationId":"yogiyo-api__verify_phone","requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Phone verification input","properties":{"phone":{"description":"Korean phone number","minLength":8,"type":"string"}},"required":["phone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Yogiyo phone verification result","properties":{"action_hint":{"description":"Next action","type":"string"},"message":{"description":"Message","type":"string"},"phone_normalized":{"description":"Digits-only phone number","type":"string"},"success":{"description":"Success flag","type":"boolean"},"summary":{"description":"Summary","type":"string"}},"required":["success","phone_normalized","message","summary","action_hint"],"type":"object"},"meta":{"properties":{"fetchedAt":{"format":"date-time","type":"string"},"source":{"type":"string"}},"required":["source","fetchedAt"],"type":"object"},"pagination":{"oneOf":[{"type":"object"},{"type":"null"}]}},"required":["data","meta"],"type":"object"}}},"description":"Successful response wrapped in the gateway envelope."},"400":{"description":"Validation error returned by the gateway."},"401":{"description":"Missing or invalid bearer token."},"429":{"description":"Upstream rate limit exceeded."},"500":{"description":"Provider or upstream API failure."}},"security":[{"providerLogin":[]}],"summary":"휴대폰 인증번호 발송","tags":["yogiyo-api"],"x-apifuse-auth-flow-required":true,"x-apifuse-auth-modes":["credentials"],"x-apifuse-auth-required":true,"x-apifuse-connection-required":true,"x-apifuse-credential-provider":{"displayName":"요기요","id":"yogiyo-api"},"x-apifuse-early-access-required":false,"x-apifuse-generated-from":"provider-registry","x-apifuse-lifecycle":"stable","x-apifuse-metadata-version":1,"x-apifuse-operation-id":"verify-phone","x-apifuse-operation-key":"yogiyo-api/verify-phone","x-apifuse-operation-version":"1.0.0","x-apifuse-provider-id":"yogiyo-api","x-apifuse-provider-version":"1.0.0","x-apifuse-public-api-version":"v1","x-apifuse-required-tenant-tier":null,"x-apifuse-schema-hash":"9d660f88eabb844175ad2393106ecbb4023426dc495674e3ebe51daad62f4be5","x-apifuse-supported-in-try-it-out":true,"x-apifuse-unsupported-reason":null,"x-apifuse-visibility":"public","x-idempotent":false,"x-requires-connection":true}}},"servers":[{"description":"Platform docs adapter. Forwards Try-it-out calls to the Gateway with a short-lived server-issued delegation token.","url":"/api/proxy/call"}],"tags":[{"description":"대기질 등급 코드와 문자열 수치를 정리해 측정소 단위의 일관된 대기질 객체를 제공합니다.","name":"airkorea-realtime","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"에어코리아 실시간 대기오염"},{"description":"레스토랑 탐색부터 예약/웨이팅 생성과 조회까지 필요한 주요 흐름을 일관된 스키마와 예시로 제공합니다.","name":"catchtable","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"CatchTable 레스토랑 검색 및 예약"},{"description":"Resolves public regions and returns normalized listing candidates and details.","name":"daangn-marketplace","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"Daangn public listings"},{"description":"온라인몰 HTML/API 응답을 검색·매장·재고 흐름별 구조화된 객체로 변환해 후속 자동화에 바로 사용할 수 있게 합니다.","name":"daiso-api","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"다이소 상품 및 매장 데이터"},{"description":"Normalizes product candidates and offer rows with shipping/card/conditional pricing labels.","name":"danawa-price","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"Danawa price comparison"},{"description":"택배사 목록, 최신 상태, 전체 이벤트 히스토리를 일관된 스키마로 제공해 추적 자동화에 바로 연결할 수 있습니다.","name":"delivery-api","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"택배사 목록 및 배송 추적"},{"description":"장소 탐색과 이동 경로 계산에 필요한 주요 카카오맵 기능을 구조화된 스키마와 예시로 제공합니다.","name":"kakaomap-api","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"카카오맵 장소 검색 및 길찾기"},{"description":"복잡한 data.go.kr envelope과 카테고리 코드를 정리해 현재 날씨와 중기 기온 예보를 바로 활용 가능한 구조로 제공합니다.","name":"kma-forecast","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"기상청 예보 데이터"},{"description":"법령 탐색과 조문/용어/비교 조회에 필요한 주요 흐름을 구조화된 스키마로 제공해 법률 질의 자동화에 바로 연결할 수 있습니다.","name":"law-service","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"국가법령정보 검색 및 조회"},{"description":"Returns product identifiers, prices, discount, delivery labels, sold-out status, and product URLs.","name":"market-kurly","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"Market Kurly product data"},{"description":"모두의주차장 주차장 검색, 상세, 공유 주차 가능 시간, SMS 인증, 결제 URL 생성 provider","name":"modu-parking","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"모두의주차장"},{"description":"성인 1명, 이코노미, 국제선 직항 기준의 네이버 항공권 검색 결과를 가격 비교용 구조로 제공합니다.","name":"naver-flight","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"Naver Flight API"},{"description":"한국 지도 검색, 장소 상세, 길찾기, 저장 목록 조회를 위한 네이버 지도 provider입니다.","name":"naver-map-api","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"네이버 지도 API"},{"description":"Returns Today Deals, product search/detail, categories, delivery, reviews, Q&A, exhibitions, content cards, projects, comments, trends, and promotions.","name":"ohouse-deals","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"Ohouse Store and Contents API"},{"description":"요기요 음식점 검색, 메뉴/장바구니, 휴대폰 인증, 주문 결제 URL 생성 provider","name":"yogiyo-api","x-apifuse-early-access-required":false,"x-apifuse-visibility":"public","x-display-name":"요기요"}],"x-generator":{"name":"scripts/lib/render-openapi-from-registry.ts","operationCount":112,"providerCount":15,"regenerateCommand":"bun run build:provider-registry","sourceProjection":"packages/provider-registry/generated/catalog.json"}}