---
title: "Claim Store"
method: POST
path: "/v1/stores/{store_id}/claim"
tags: ["Stores", "Stores"]
---

# Claim Store

`POST /v1/stores/{store_id}/claim`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/v1/stores/{store_id}/claim`
- Auth: OAuth 2 (password, token URL `/v1/auth/login`)

Take ownership of an existing store that nobody owns yet.

Until this existed, `owner_id` was only ever set at creation, so the ~15.9k
stores imported from OpenStreetMap could never be claimed by the businesses
they describe. (The exact total grows with every import; `list_stores` above
carries a dated measurement. It was stated here as 15,859 against 15,854
forty lines up — two undated counts of the same thing, which is why this one
is now rounded and the precise figure lives in one place.) Proof of control is an email address on the same domain as the
store's own published homepage — see app/services/store_claim.py for why that
rule, and what it deliberately refuses to decide.

Refusals are 403 with a message explaining what would work, because most of
them are recoverable by the claimant (use your work address) or by us (manual
review). A store that already has an owner is 409, not 403: nothing the
claimant does will change it.

## Path parameters

- `store_id` integer, required

## Response `200`

Successful Response

- StoreRead
  - `name` string, required
  - `type` 'physical' | 'online' | 'chain', required
  - `address` string, nullable
  - `lat` number, nullable
  - `lon` number, nullable
  - `homepage` string, nullable
  - `country` string, nullable
  - `language` string, nullable
  - `id` integer, required
  - `owner_id` integer, nullable
  - `tags` Tag[]
    - `name` string, required
    - `description` string, nullable
    - `id` integer, required
  - `logo_filename` string, nullable
  - `logo_content_type` string, nullable
  - `average_rating` number, nullable
  - `review_count` integer, nullable
  - `product_count` integer, nullable
  - `trust_score` number, nullable
  - `trust_report_count` integer, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/rubenayla/apis/partle-api.md) · [All operations](https://skmtc.dev/rubenayla/apis/partle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rubenayla/apis/partle-api/revisions/628cce2acee5?raw)
