Tenants
Stores, settings, flags, onboarding.
6 نقاط وصول. أسماء نقاط الوصول وأوصافها مأخوذة من ملف OpenAPI، لذلك تظهر بالإنجليزية.
GET
/v1/tenantsStores I belong to
يحتاج إلى مفتاح أو جلسة في لوحة التحكم
الردود
- 200Successful Response
TenantOut[]
POST
/v1/tenantsTenants Create
يحتاج إلى مفتاح أو جلسة في لوحة التحكم
المعاملات
| الاسم | الموضع | النوع | إلزامي | الوصف |
|---|---|---|---|---|
Idempotency-Key | header | string | null | لا | Unique per logical write (8-255 chars). Retries with the same key are safe. · pattern ^[A-Za-z0-9_\-:.]{8,255}$ |
جسم الطلب application/json TenantCreate
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
name | string | نعم | max length 200 |
slug | string | null | لا | pattern ^[a-z0-9][a-z0-9-]{2,62}$ |
default_locale | string | لا | default "en" · pattern ^[a-z]{2}$ |
locales | string[] | لا | Catalog languages. |
currency | string | لا | default "USD" · pattern ^[A-Z]{3}$ |
vertical | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | لا | Store type: picks the word lists search uses. `general` = many kinds of products: the shared words of every store type, without words two types read differently. Set it with PATCH /v1/settings {"vertical": ...}.default "general" |
الردود
- 201Successful Response
TenantOut
GET
/v1/settingsStore settings
يحتاج إلى مفتاح أو جلسة في لوحة التحكم
الردود
- 200Successful Response
TenantSettings
PATCH
/v1/settingsSettings Update
يحتاج إلى مفتاح أو جلسة في لوحة التحكم
جسم الطلب application/json TenantSettings
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
name | string | null | لا | max length 200 |
default_locale | string | null | لا | pattern ^[a-z]{2}$ |
locales | string[] | null | لا | |
currency | string | null | لا | pattern ^[A-Z]{3}$ |
vertical | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | null | لا | Store type. Sending a different value than the current one makes it the owner's choice (vertical_source owner: the catalog guess never changes it). Re-sending the current value changes nothing. |
vertical_source | "default" | "auto" | "owner" | null | لا | Read only (ignored in PATCH). |
auto_detail | VerticalGuess | null | لا | Read only (ignored in PATCH). |
timezone | string | null | لا | max length 64 |
log_retention_days | integer | null | لا | min 7 · max 730 |
search | SearchSettings | null | لا | |
translation | TranslationSettings | null | لا | |
weekly_report | boolean | null | لا | |
extra | object | null | لا |
الردود
- 200Successful Response
TenantSettings
GET
/v1/flagsFeature flags for this store
يحتاج إلى مفتاح أو جلسة في لوحة التحكم
الردود
- 200Successful Response
FlagOut[]
GET
/v1/onboardingOnboarding checklist progress
يحتاج إلى مفتاح أو جلسة في لوحة التحكم
الردود
- 200Successful Response
OnboardingOut
أشكال البيانات في هذه الصفحة
TenantOut
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
id | string | نعم | |
slug | string | نعم | |
name | string | نعم | |
status | "pending_payment" | "trialing" | "active" | "past_due" | "suspended" | "canceled" | "deleted" | نعم | pending_payment = a store without a plan: before its free trial or first payment, or after its free trial ended unpaid (see billing_state) |
plan_code | string | null | نعم | The store's plan. null = no plan yet (billing_state trial_available, no_trial or trial_ended). |
billing_state | "trial_available" | "no_trial" | "trialing" | "trial_ended" | "paid" | "exempt" | لا | trial_available: no plan; the 14-day free trial (no card) starts with the first search made with a public key. no_trial: no plan, and the owner already used the free trial on a store: choose a plan to go live. trialing: the free trial runs until trial_ends_at. trial_ended: the free trial ended unpaid; public keys answer 402 until a plan is chosen. paid: the store has a paid plan (see status). exempt: an internal store that billing never stops.default "paid" |
default_locale | string | نعم | |
locales | string[] | نعم | |
currency | string | نعم | |
vertical | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | لا | Store type: picks the word lists search uses. `general` = many kinds of products: the shared words of every store type, without words two types read differently. Set it with PATCH /v1/settings {"vertical": ...}.default "general" |
vertical_source | "default" | "auto" | "owner" | لا | Where `vertical` came from: default (not set), auto (SeekGist guessed it from the catalog; checked again on full syncs), owner (chosen in settings; never changed by the guess).default "default" |
auto_detail | VerticalGuess | null | لا | The last catalog check, when source is auto. |
trial_ends_at | string (date-time) | null | لا | |
sync | SyncHealth | لا | |
created_at | string (date-time) | نعم |
VerticalGuess
The catalog check behind an automatic store type (`vertical_source: auto`).
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
vertical | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | نعم | What the check decided: a store type, or general (no clear winner). |
leading | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | null | لا | The most common store type among the products. |
share | number | نعم | Share (0..1) of the checked products with a type that have the leading type. |
products_checked | integer | نعم | |
products_decided | integer | نعم | Checked products whose category or name points to one store type. |
checked_at | string (date-time) | null | لا |
SyncHealth
The store's automatic product sync: when the last one came, and whether it has stopped.
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
last_sync_at | string (date-time) | null | لا | The last automatic product sync: POST /v1/products/batch with a secret key (store modules, SDKs, your own server), a store app webhook or a connector pull sync. Dashboard file imports do not count. |
last_full_sync_at | string (date-time) | null | لا | The last full sync (POST /v1/products/batch with sync_complete: true). |
stale | boolean | لا | true: the store has done a full sync, but no automatic sync came for more than 26 hours (its daily job has probably stopped). Never true for a store without a full sync.default false |
TenantCreate
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
name | string | نعم | max length 200 |
slug | string | null | لا | pattern ^[a-z0-9][a-z0-9-]{2,62}$ |
default_locale | string | لا | default "en" · pattern ^[a-z]{2}$ |
locales | string[] | لا | Catalog languages. |
currency | string | لا | default "USD" · pattern ^[A-Z]{3}$ |
vertical | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | لا | Store type: picks the word lists search uses. `general` = many kinds of products: the shared words of every store type, without words two types read differently. Set it with PATCH /v1/settings {"vertical": ...}.default "general" |
TenantSettings
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
name | string | null | لا | max length 200 |
default_locale | string | null | لا | pattern ^[a-z]{2}$ |
locales | string[] | null | لا | |
currency | string | null | لا | pattern ^[A-Z]{3}$ |
vertical | "general" | "electronics" | "fashion" | "beauty" | "grocery" | "home" | "toys" | "health" | "sports" | "books" | null | لا | Store type. Sending a different value than the current one makes it the owner's choice (vertical_source owner: the catalog guess never changes it). Re-sending the current value changes nothing. |
vertical_source | "default" | "auto" | "owner" | null | لا | Read only (ignored in PATCH). |
auto_detail | VerticalGuess | null | لا | Read only (ignored in PATCH). |
timezone | string | null | لا | max length 64 |
log_retention_days | integer | null | لا | min 7 · max 730 |
search | SearchSettings | null | لا | |
translation | TranslationSettings | null | لا | |
weekly_report | boolean | null | لا | |
extra | object | null | لا |
SearchSettings
The tenant's saved ranking setup. RankingConfig (contract/merch.py) has the same field names, all optional, and overrides these per request (playground) or per A/B variant.
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
rule_parser | boolean | لا | default true |
in_stock_first | boolean | لا | default true |
business_signals | map<string, number> | لا | Opt-in weights 0..1, e.g. {popularity: 0.2, margin: 0.1, clicks: 0.2}. |
typo_tolerance | boolean | لا | default true |
hybrid_search | boolean | لا | default false |
cheap_rerank_top_n | integer | لا | default 50 · min 10 · max 200 |
merch_rules | boolean | لا | default true |
disabled_rule_ids | string[] | لا | |
synonym_sets | string[] | لا | |
global_synonyms | boolean | لا | Use the platform's global synonyms for my store type.default true |
disabled_global_synonym_ids | string[] | لا | Global synonyms I switched off. |
TranslationSettings
Per-tenant translation setup (part of TenantSettings; PATCH /v1/settings). The feature flag `translation_watch` makes watch mode AVAILABLE; `watch` here turns it ON for this store.
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
watch | boolean | لا | Translate new and changed products automatically.default false |
target_locales | string[] | لا | |
fields | "name" | "description" | "category" | "attribute_name" | "attribute_value"[] | لا | |
index_machine_translations | boolean | لا | Search uses automatic translations that passed the automatic checks before review.default true |
FlagOut
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
key | string | نعم | |
enabled | boolean | نعم | |
source | "default" | "rollout" | "override" | "plan" | نعم |
OnboardingOut
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
steps | OnboardingStep[] | نعم | |
started_at | string (date-time) | نعم | |
minutes_elapsed | number | نعم |
OnboardingStep
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
key | "platform" | "connector" | "first_index" | "first_search" | "keys" | "team" | نعم | |
done | boolean | نعم | |
done_at | string (date-time) | null | لا |