Product Catalog

List Products

get/v1/products

Request

  • Base URL: https://api.xdata.kr (the document declares no server; this is the origin it was published from)
  • URL: https://api.xdata.kr/v1/products
  • Auth: one of:
    • HTTP basic
    • OAuth 2 (authorization code, authorization URL https://api.xdata.kr/oauth/authorize, token URL https://api.xdata.kr/oauth/token)

Query parameters

limitinteger

1~100.

cursorstring nullable

opaque 커서 (BIGINT after_id 또는 URL-safe base64 인코딩 페이로드 — RFC 4648 §5). 최대 2048자 — RFC 7230 권고 HTTP URI 한도 (~8KB) 아래로 안전 마진. 운영 페이로드는 통상 256 bytes 이내. 클라이언트는 본문을 해석하거나 만들지 않는다.

sort'created_at:asc' | 'created_at:desc' | 'updated_at:asc' | 'updated_at:desc' | 'code:asc' | 'code:desc'
fromstring date-time nullable

created_at 시작 시각 (포함). aware datetime 필수. 쿼리스트링 이름은 ?from= 하나다 — OpenAPI 에 선언되는 이름이자 공개 계약이다. Python 예약어 회피용 필드명 from_ 는 모델 생성(ProductListQuery(from_=...))과 model_validate 에서만 쓴다(populate_by_name=True).

tostring date-time nullable

created_at 종료 시각 (포함). aware datetime 필수.

statusstring[] nullable

상태 필터. 다중 콤마 (?status=ACTIVE,DEPRECATED) 또는 반복형 (?status=ACTIVE&status=DEPRECATED) 양쪽 허용. 최대 20 원소.

visibilitystring[] nullable

가시성 필터. status 와 동일 - 콤마 · 반복형 양쪽 허용 + 최대 20 원소.

providerstring nullable

등록된 기관 식별자로 걸러낸다. 형식 ^[a-z][a-z0-9_]{0,63}$.

category'tax' | 'gov' | 'finance' | 'marketing' nullable
include_deletedboolean

true + 운영자 토큰 시만 deleted_at NOT NULL 행을 노출한다.

qstring nullable

이름/code 부분일치 검색(ILIKE 기반).

website_slugstring nullable

Website URL slug exact match (api_products.website_slug). Sprint 2 legacy routing SSOT.

website_legacy_idstring nullable

Legacy mock id exact match (metadata.website_legacy_id, e.g. hometax-1).

expose_mode_filter'marketing_only' | 'exclude_marketing_only' nullable

Admin catalog list filter on metadata.expose_mode. marketing_only = 소개만; exclude_marketing_only = 소개 제외. Omit for all. Server-side WHERE only (no client page-local filter).

env_scope'production' | 'real_test' | 'sandbox' nullable

환경을 고릅니다. 값은 production · real_test · sandbox 중 하나입니다. 경로 접두(/v1/sandbox/... · /v1/test/... · /v1/production/...) · X-Env-Scope 헤더 · env_scope 쿼리 가운데 한 통로로 반드시 보내야 합니다. 빼면 자동으로 채우지 않고 거절하며, 두 통로에 서로 다른 값을 담아도 거절합니다. 거절은 HTTP 422 이고 오류 코드는 VALIDATION_ENV_SCOPE_MISMATCH 입니다.

Headers

Authorizationstring nullable
X-Env-Scope'production' | 'real_test' | 'sandbox' nullable

환경을 고릅니다. 값은 production · real_test · sandbox 중 하나입니다. 경로 접두(/v1/sandbox/... · /v1/test/... · /v1/production/...) · X-Env-Scope 헤더 · env_scope 쿼리 가운데 한 통로로 반드시 보내야 합니다. 빼면 자동으로 채우지 않고 거절하며, 두 통로에 서로 다른 값을 담아도 거절합니다. 거절은 HTTP 422 이고 오류 코드는 VALIDATION_ENV_SCOPE_MISMATCH 입니다.

Response

Successful Response

next_cursorstring nullable

Opaque cursor for next page, or null on last page.

has_moreboolean

Whether another page exists. False when next_cursor is null.

Changes

No recorded changes to this operation across all 1 revision of this API.