{"openapi":"3.1.0","info":{"title":"Lejested Marketplace API","version":"1.0.0","description":"Read rental listings from Lejested and send inquiries, without building a checkout: renters pay the lister, not the platform.\n\n## Quick Start\n\n1. **Browse categories** — `GET /api/categories` returns the tree plus the attribute schema each leaf category filters on\n2. **Search listings** — `GET /api/listings` with filters (`category`, `city`, `priceMin`, `priceMax`, `priceUnit`, `from`, `to`), or `GET /api/search?q=keyword` for free text\n3. **Read one listing** — `GET /api/listings/{slug}`\n4. **Send an inquiry** — `POST /api/inquiries` with the listing id, a message and contact details. No account required; it is rate-limited per IP\n5. **Sign in** — `POST /api/auth/sign-in/email` with `{ email, password }` to save listings, track inquiries, or publish your own\n6. **Buy a boost or plan** — listers only: apply a discount with `POST /api/cart/apply-discount`, total with `POST /api/payment-amount`, pay via Stripe, then review with `GET /api/orders`\n\n## Prices\n\nListing prices are whole DKK with a `priceUnit` of `hour`, `day`, `week`, `month`, `year` or `fixed` — format them as `450 kr/dag`. Order and product amounts come from Stripe and are in øre.\n\n## Languages\n\nContent is localised in Danish (`da`, default) and English (`en`). Pass `?locale=en` to Payload collection endpoints for English.\n\n## Authentication\n\nTwo authentication methods are supported:\n\n**Session Cookie** — Sign in via `POST /api/auth/sign-in/email` with `{ email, password }`. The `better-auth.session_token` cookie is set automatically.\n\n**API Key** — Pass an `x-api-key` header with a scoped API key. Create keys at `/konto/developer` or via `POST /api/auth/api-key/create`. Keys are scoped to specific resources (listings, inquiries, saved, reviews, cart, orders).\n\n## Error Format\n\nAll errors return `{ error: string }`. Validation errors additionally include `{ details: { fieldErrors, formErrors } }` with per-field messages.","contact":{"name":"Lejested API Support","email":"support@lejested.dk"},"license":{"name":"MIT"}},"servers":[{"url":"https://lejested-omegzs-projects.vercel.app","description":"API Server"}],"externalDocs":{"description":"Human-readable API reference (Markdown)","url":"https://lejested-omegzs-projects.vercel.app/to-humans.md"},"tags":[{"name":"Listings","description":"Rental listings — search, detail, and the lister's own listings."},{"name":"Categories","description":"The category tree and its per-category attribute schemas, used to build both the create-listing form and the search filters."},{"name":"Inquiries","description":"Rental requests sent from a renter to a lister, and the message thread that follows. Creating one does not require an account."},{"name":"Saved","description":"A signed-in user's saved listings."},{"name":"Contact","description":"Contact form submissions."},{"name":"Newsletter","description":"Email newsletter subscriptions."},{"name":"Reviews","description":"Renter reviews and ratings of listings and listers."},{"name":"Cart","description":"Cart discount management for boost and plan purchases (listers only)."},{"name":"Discounts","description":"Discount code validation."},{"name":"Payments","description":"Payment amount calculation for boosts and plans."},{"name":"Orders","description":"A lister's purchase history for boosts and plans."},{"name":"Search","description":"Listing search and autocomplete."},{"name":"Recommendations","description":"Similar and recommended listings, plus interaction tracking."}],"paths":{"/api/categories":{"get":{"summary":"Get the category tree with listing counts","description":"Returns the six top-level rental categories, each with its leaf categories nested under `children`, plus a count of published listings per category.\n\nThis one response drives the header menu, the front-page category tiles and the `/lej` filter rail. Counts are keyed by category ID and are cumulative for a branch, so the tile for *Køretøjer* shows everything filed under cars, vans and trailers.\n\nCategory names and descriptions are localised; the response follows the `locale` cookie and falls back to Danish.\n\nEach leaf carries an `attributeSchema` — the per-category spec fields that drive both the create-listing form and the `attr.<key>` search filters. Fetch a single category to read it in full.","tags":["Categories"],"responses":{"200":{"description":"The category tree and its listing counts","content":{"application/json":{"schema":{"type":"object","required":["categories","counts"],"properties":{"categories":{"type":"array","description":"Top-level categories in curated order, each with a `children` array.","items":{"type":"object","description":"Category document with `children` populated one level down."}},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0},"description":"Published listing count keyed by category ID, including descendants.","example":{"1":42,"7":12}}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/categories/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the Category","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findCategoryById","summary":"Find a Category by ID","tags":["Categories"],"responses":{"200":{"description":"Category object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Category","properties":{"id":{"type":"string"},"name":{"description":"Display name of the category, e.g. 'Lejlighed' or 'Elværktøj'.","type":"string"},"slug":{"description":"URL segment used by /kategori/[slug] and the ?kategori= search filter. Derived from the Danish name if left blank.","type":"string"},"description":{"description":"Intro paragraph shown at the top of the category landing page. Doubles as the SEO meta description when no override is set.","type":["string","null"]},"icon":{"description":"A lucide-react icon name in PascalCase — e.g. Home, Car, Wrench, PartyPopper, Tent, Camera. Stored as a string rather than an upload so the category tiles render as crisp vector icons that follow the theme colour, and so the whole tree can be fetched without a media join.","type":["string","null"]},"image":{"description":"Optional photo for the category landing hero. The tiles on the front page use `icon`, not this.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"parent":{"description":"Leave empty for one of the six top-level branches. Set it to file this category as a leaf under that branch.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Category"}]},"order":{"description":"Manual sort order within the parent (lower first). The tree is curated, not alphabetical — 'Lejlighed' should outrank 'P-plads' regardless of spelling.","type":["number","null"]},"featured":{"description":"Show this category in the front-page category grid and the header quick-links.","type":["boolean","null"]},"attributeSchema":{"description":"Per-category spec fields. This one array drives three surfaces at once: the create-listing wizard renders an input per entry, the listing detail page renders the spec table, and the search rail renders a filter for every entry marked filterable. Define it on the leaf category (Lejlighed → m2, rooms, floor…), not on the branch.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Stable machine key, lowerCamelCase — e.g. m2, rooms, energyLabel. This is what ends up in listings.attributes[].key and in the ?attr. query params, so renaming it orphans existing listings and breaks shared filter URLs. Choose once.","type":"string"},"label":{"description":"Human label shown next to the value, e.g. 'Boligareal' / 'Floor area'.","type":"string"},"type":{"description":"Decides which input the wizard renders and which filter control the search rail renders (number → range slider, select → checkbox list, boolean → switch).","type":"string","enum":["text","number","select","boolean"]},"options":{"description":"The allowed choices — only meaningful when type is 'Select'.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"label":{"type":"string"},"value":{"description":"Machine value stored on the listing and used in filter URLs.","type":"string"},"id":{"type":["string","null"]}},"required":["label","value"]}},"unit":{"description":"Suffix appended when the value is displayed, e.g. m², km, kW, personer. Kept out of the value itself so numbers stay sortable and filterable.","type":["string","null"]},"required":{"description":"Block the create-listing wizard from advancing until this attribute is filled.","type":["boolean","null"]},"filterable":{"description":"Expose this attribute as a filter on /lej and the category landing page. Keep it off for attributes nobody searches by (e.g. 'etage') so the rail stays short.","type":["boolean","null"]},"id":{"type":["string","null"]}},"required":["key","label","type"]}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","name","slug","updatedAt","createdAt"],"description":"The rental taxonomy. A self-referencing tree: six top-level branches (Bolig & lokaler, Køretøjer, Værktøj & maskiner, Fest & event, Fritid & udendørs, Elektronik & medie) each holding the leaf categories a listing is actually filed under."}}}},"404":{"description":"Category not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/listings":{"get":{"summary":"Search rental listings","description":"Paginated search across **published** listings. Drafts, pending, rented and archived listings are never returned here — use `GET /api/listings/mine` for a lister's own inventory.\n\nEvery filter is a query parameter so a result page is fully shareable and the browser back button restores the exact result set.\n\nPer-category attributes are filtered with `attr.<key>` parameters — for example `?category=lejlighed&attr.rooms=3&attr.furnished=true`. The available keys come from the `attributeSchema` of the category returned by `GET /api/categories/{slug}`.\n\nPrices are whole Danish kroner. A listing priced `450` with `priceUnit: \"day\"` renders as `450 kr/dag`.\n\nUnrecognised query parameters are ignored rather than rejected, and an unknown `category` slug yields an empty page rather than a 404.","tags":["Listings"],"responses":{"200":{"description":"Paginated listing results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"400":{"description":"Invalid query parameters — for example a malformed date or a priceMax below priceMin","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"parameters":[{"name":"q","in":"query","required":false,"description":"Free-text query matched against title, summary and city.","schema":{"type":"string","maxLength":120,"example":"kassevogn"}},{"name":"category","in":"query","required":false,"description":"Category slug. Listings filed under any descendant category are included, so `?category=koeretoejer` returns cars, vans and trailers.","schema":{"type":"string","example":"varevogn"}},{"name":"city","in":"query","required":false,"description":"City the listing is located in.","schema":{"type":"string","maxLength":100,"example":"København"}},{"name":"postalCode","in":"query","required":false,"description":"Danish postal code.","schema":{"type":"string","maxLength":10,"example":"2100"}},{"name":"region","in":"query","required":false,"description":"One of the five Danish administrative regions.","schema":{"type":"string","enum":["hovedstaden","sjaelland","syddanmark","midtjylland","nordjylland"],"example":"hovedstaden"}},{"name":"priceMin","in":"query","required":false,"description":"Lowest acceptable price, in whole DKK.","schema":{"type":"integer","minimum":0,"example":200}},{"name":"priceMax","in":"query","required":false,"description":"Highest acceptable price, in whole DKK.","schema":{"type":"integer","minimum":0,"example":1200}},{"name":"priceUnit","in":"query","required":false,"description":"Restrict to listings priced per this unit.","schema":{"type":"string","enum":["hour","day","week","month","year","fixed"],"example":"day"}},{"name":"from","in":"query","required":false,"description":"Start of the period the listing must be available for. Maps to `availableFrom`.","schema":{"type":"string","format":"date","example":"2026-09-01"}},{"name":"to","in":"query","required":false,"description":"End of the period the listing must be available for. Maps to `availableTo`.","schema":{"type":"string","format":"date","example":"2026-09-14"}},{"name":"condition","in":"query","required":false,"description":"Physical condition. Comma-separated; any of: new, like-new, good, fair.","schema":{"type":"string","example":"new,like-new"}},{"name":"listerType","in":"query","required":false,"description":"Who is renting it out. Comma-separated; any of: private, business, agent.","schema":{"type":"string","example":"private,business"}},{"name":"features","in":"query","required":false,"description":"Amenity chips the listing must carry, comma-separated. Matched against the free-form `features` list.","schema":{"type":"string","example":"Anhængertræk,Bagsmæk"}},{"name":"onlyWithPhotos","in":"query","required":false,"description":"Only return listings that have at least one photo.","schema":{"type":"string","enum":["1","0","true","false"]}},{"name":"featuredFirst","in":"query","required":false,"description":"Rank boosted listings ahead of the chosen sort.","schema":{"type":"string","enum":["1","0","true","false"]}},{"name":"bbox","in":"query","required":false,"description":"Map viewport as `minLng,minLat,maxLng,maxLat` (GeoJSON order). Used by the map view on `/lej`.","schema":{"type":"string","example":"12.45,55.63,12.65,55.74"}},{"name":"attr.{key}","in":"query","required":false,"description":"Per-category attribute filter. The key is an `attributeSchema[].key` on the listing's category; the value is compared as a display string. Repeatable across different keys.","schema":{"type":"string","example":"3"}},{"name":"sort","in":"query","required":false,"description":"Result ordering.","schema":{"type":"string","enum":["newest","price_asc","price_desc","relevant"],"default":"newest","example":"price_asc"}},{"name":"page","in":"query","required":false,"description":"1-indexed page number.","schema":{"type":"integer","minimum":1,"default":1,"example":1}},{"name":"limit","in":"query","required":false,"description":"Results per page. Values above 48 are clamped to 48 rather than rejected.","schema":{"type":"integer","minimum":1,"default":24,"example":24}}]}},"/api/listings/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the Listing","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findListingById","summary":"Find a Listing by ID","tags":["Listings"],"responses":{"200":{"description":"Listing object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Listing","properties":{"id":{"type":"string"},"title":{"description":"Headline shown on the listing card and detail page, e.g. '3-værelses lejlighed på Østerbro' or 'Ford Transit kassevogn'.","type":"string"},"slug":{"description":"URL segment for /lej/[slug]. Derived from the title when left blank.","type":"string"},"summary":{"description":"One or two sentences. Used on the listing card, in search results and as the meta description — keep it concrete ('60 m², altan mod syd, 5 min til metro').","type":["string","null"]},"description":{"description":"The full description: what it is, what's included, house rules, pickup/delivery.","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"category":{"description":"Always the *leaf* category (Lejlighed, not Bolig & lokaler). The leaf carries the attributeSchema that defines this listing's spec fields and filters.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Category","properties":{"id":{"type":"string"},"name":{"description":"Display name of the category, e.g. 'Lejlighed' or 'Elværktøj'.","type":"string"},"slug":{"description":"URL segment used by /kategori/[slug] and the ?kategori= search filter. Derived from the Danish name if left blank.","type":"string"},"description":{"description":"Intro paragraph shown at the top of the category landing page. Doubles as the SEO meta description when no override is set.","type":["string","null"]},"icon":{"description":"A lucide-react icon name in PascalCase — e.g. Home, Car, Wrench, PartyPopper, Tent, Camera. Stored as a string rather than an upload so the category tiles render as crisp vector icons that follow the theme colour, and so the whole tree can be fetched without a media join.","type":["string","null"]},"image":{"description":"Optional photo for the category landing hero. The tiles on the front page use `icon`, not this.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"parent":{"description":"Leave empty for one of the six top-level branches. Set it to file this category as a leaf under that branch.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Category"}]},"order":{"description":"Manual sort order within the parent (lower first). The tree is curated, not alphabetical — 'Lejlighed' should outrank 'P-plads' regardless of spelling.","type":["number","null"]},"featured":{"description":"Show this category in the front-page category grid and the header quick-links.","type":["boolean","null"]},"attributeSchema":{"description":"Per-category spec fields. This one array drives three surfaces at once: the create-listing wizard renders an input per entry, the listing detail page renders the spec table, and the search rail renders a filter for every entry marked filterable. Define it on the leaf category (Lejlighed → m2, rooms, floor…), not on the branch.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Stable machine key, lowerCamelCase — e.g. m2, rooms, energyLabel. This is what ends up in listings.attributes[].key and in the ?attr. query params, so renaming it orphans existing listings and breaks shared filter URLs. Choose once.","type":"string"},"label":{"description":"Human label shown next to the value, e.g. 'Boligareal' / 'Floor area'.","type":"string"},"type":{"description":"Decides which input the wizard renders and which filter control the search rail renders (number → range slider, select → checkbox list, boolean → switch).","type":"string","enum":["text","number","select","boolean"]},"options":{"description":"The allowed choices — only meaningful when type is 'Select'.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"label":{"type":"string"},"value":{"description":"Machine value stored on the listing and used in filter URLs.","type":"string"},"id":{"type":["string","null"]}},"required":["label","value"]}},"unit":{"description":"Suffix appended when the value is displayed, e.g. m², km, kW, personer. Kept out of the value itself so numbers stay sortable and filterable.","type":["string","null"]},"required":{"description":"Block the create-listing wizard from advancing until this attribute is filled.","type":["boolean","null"]},"filterable":{"description":"Expose this attribute as a filter on /lej and the category landing page. Keep it off for attributes nobody searches by (e.g. 'etage') so the rail stays short.","type":["boolean","null"]},"id":{"type":["string","null"]}},"required":["key","label","type"]}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","name","slug","updatedAt","createdAt"],"description":"The rental taxonomy. A self-referencing tree: six top-level branches (Bolig & lokaler, Køretøjer, Værktøj & maskiner, Fest & event, Fritid & udendørs, Elektronik & medie) each holding the leaf categories a listing is actually filed under."}]},"attributes":{"description":"Denormalised copy of the category's attributeSchema with this listing's answers filled in. Denormalised on purpose: the spec table and the filter query must keep working even after an admin edits or reorders the category schema, and reading a listing must never require a join to categories.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Matches `attributeSchema[].key` on the category — this is the join key for filtering.","type":"string"},"label":{"description":"Label snapshotted at save time so old listings keep rendering sensibly if the category schema is relabelled.","type":"string"},"value":{"description":"Stored as a display string regardless of the declared type ('62', 'true', 'diesel'). The canonical type lives on the category's attributeSchema; the API casts on the way in and out.","type":["string","null"]},"id":{"type":["string","null"]}},"required":["key","label"]}},"images":{"description":"The first photo is the cover used on cards and in link previews. Drag to reorder.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"image":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"alt":{"description":"What the photo shows, for screen readers and SEO — 'Stue med altandør mod gården', not 'billede 1'.","type":["string","null"]},"id":{"type":["string","null"]}},"required":["image"]}},"price":{"description":"Price in whole Danish kroner — 12400, not 1240000. Listings are never charged on-site, so there is no Stripe minor-unit conversion to respect; storing kroner keeps the number human-readable in the admin and formats straight to '12.400 kr'.","type":"number"},"priceUnit":{"description":"What the price buys. Also decides which date inputs the inquiry form shows (hourly rentals ask for times, monthly ones ask for a move-in date).","type":"string","enum":["hour","day","week","month","year","fixed"]},"deposit":{"description":"Refundable deposit in whole kroner. Leave blank if none — the detail page then says 'Intet depositum', which converts better than an ambiguous 0.","type":["number","null"]},"negotiable":{"description":"Show a 'Pris kan forhandles' badge on the listing.","type":["boolean","null"]},"minRentalPeriod":{"description":"Shortest period you will rent this out for.","type":["number","null"]},"maxRentalPeriod":{"description":"Longest period. Leave blank for no limit.","type":["number","null"]},"rentalPeriodUnit":{"description":"Unit for the two period fields. Kept separate from `priceUnit` because a van priced per day is often rented for a minimum of 4 hours.","type":["string","null"],"enum":["hour","day","week","month"]},"location":{"description":"Where the item is. City, postal code and region are indexed because they carry almost every search on a Danish marketplace.","type":"object","additionalProperties":false,"properties":{"address":{"description":"Street and number. Only ever shown publicly when `showExactAddress` is on.","type":["string","null"]},"city":{"description":"e.g. København, Aarhus.","type":["string","null"]},"postalCode":{"description":"Danish 4-digit postal code. Text rather than number so leading zeros survive and prefix search ('21%') stays possible.","type":["string","null"]},"region":{"description":"One of the five Danish administrative regions. Gives the search rail a coarse geography filter that works without a radius query, and gives /kategori pages something to segment by.","type":["string","null"],"enum":["hovedstaden","sjaelland","syddanmark","midtjylland","nordjylland"]},"country":{"description":"ISO 3166-1 alpha-2. Denmark-only today; the field exists so a Nordic expansion isn't a migration.","type":["string","null"]},"lat":{"description":"Latitude for the map view and radius search.","type":["number","null"]},"lng":{"description":"Longitude.","type":["number","null"]},"showExactAddress":{"description":"Off by default, and that default is deliberate: most listers are private people renting out of their own home. When off, the detail page draws an approximate circle instead of a pin and hides the street address until an inquiry is accepted.","type":["boolean","null"]}},"required":[]},"availableFrom":{"description":"First date it can be rented. Blank means immediately.","type":["string","null"]},"availableTo":{"description":"Last date. Blank means open-ended.","type":["string","null"]},"condition":{"description":"Physical condition. Not relevant for property and spaces — the create-listing wizard hides it for those branches. It is deliberately NOT hidden here via `admin.condition`: that callback runs client-side against the raw form data, where `category` is just an opaque relationship ID with no way to know which branch it belongs to.","type":["string","null"],"enum":["new","like-new","good","fair"]},"features":{"description":"Free-form amenity chips shown under the description — 'Altan', 'Vaskemaskine', 'Anhængertræk', 'Stativ medfølger'. Free-form on purpose: the structured, filterable facts belong in `attributes`; this is the long tail that would bloat every category schema.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"},"id":{"type":["string","null"]}},"required":["value"]}},"owner":{"description":"The lister. Drives read/update access, the public profile at /profil/[id], and who receives the inquiry email.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"listerType":{"description":"Snapshotted per listing rather than read from the user, because the same account legitimately lists both privately and on behalf of a company. Renters filter on this — 'kun private' is one of the most-used filters on Danish marketplaces.","type":"string","enum":["private","business","agent"]},"contactPreference":{"description":"Defaults to platform-only so a lister never accidentally publishes their phone number.","type":["string","null"],"enum":["platform","phone","both"]},"contactPhone":{"description":"Only rendered when contactPreference allows phone contact.","type":["string","null"]},"status":{"description":"Only 'Udgivet' is publicly readable. 'Udlejet' keeps the listing in the owner's dashboard and in the lister's public history without it competing in search.","type":"string","enum":["draft","pending","published","rented","archived"]},"featured":{"description":"Boosted placement. Set by the boost fulfilment flow after a successful Stripe payment (server-side, overrideAccess), never by the lister.","type":["boolean","null"]},"featuredUntil":{"description":"When the purchased boost expires. Queries must check both `featured` and this date so an expired boost stops ranking even before the cleanup job runs.","type":["string","null"]},"viewCount":{"description":"Incremented by ListingService on detail-page views (overrideAccess).","type":["number","null"]},"inquiryCount":{"description":"Kept in sync by the afterChange hook on the inquiries collection.","type":["number","null"]},"publishedAt":{"description":"Stamped automatically the first time the listing is published; drives 'Oprettet …' and the default newest-first sort.","type":["string","null"]},"meta":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"description":"Maximum upload file size: 12MB. Recommended file size for images is <500KB.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"required":[]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","title","slug","category","price","priceUnit","owner","listerType","status","updatedAt","createdAt"],"description":"Everything people rent out on Lejested — apartments, vans, tools, party tents, cameras. User-generated: the owner writes it, admins moderate it."}}}},"404":{"description":"Listing not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/reviews":{"get":{"summary":"List reviews for a listing","description":"Returns a paginated list of approved reviews for a given listing, along with aggregate statistics (average rating, star-rating breakdown). Reviews are written by renters after a rental and are read as a verdict on the lister.","tags":["Reviews"],"responses":{"200":{"description":"Paginated reviews with aggregate statistics","content":{"application/json":{"schema":{"type":"object","properties":{"reviews":{"type":"array","maxItems":50,"items":{"type":"object"},"description":"Array of approved review documents"},"totalPages":{"type":"integer","minimum":0,"description":"Total number of pages","example":3},"page":{"type":"integer","minimum":1,"description":"Current page number","example":1},"totalDocs":{"type":"integer","minimum":0,"description":"Total number of approved reviews","example":28},"averageRating":{"type":"number","minimum":0,"maximum":5,"description":"Average rating rounded to one decimal place","example":4.3},"breakdown":{"type":"object","description":"Count of reviews per star rating","properties":{"1":{"type":"integer","minimum":0,"example":1},"2":{"type":"integer","minimum":0,"example":2},"3":{"type":"integer","minimum":0,"example":5},"4":{"type":"integer","minimum":0,"example":10},"5":{"type":"integer","minimum":0,"example":10}}}}}}}},"400":{"description":"Validation error — missing listingId","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"parameters":[{"name":"listingId","in":"query","required":true,"description":"Numeric ID of the listing to fetch reviews for","schema":{"type":"string","minLength":1,"maxLength":20,"example":"42"}},{"name":"page","in":"query","required":false,"description":"Page number for pagination (defaults to 1)","schema":{"type":"string","minLength":1,"maxLength":10,"example":"1"}},{"name":"limit","in":"query","required":false,"description":"Number of reviews per page (max 50, defaults to 10)","schema":{"type":"string","minLength":1,"maxLength":3,"example":"10"}},{"name":"sort","in":"query","required":false,"description":"Sort order for reviews","schema":{"type":"string","enum":["-createdAt","helpful","highest","lowest"],"example":"-createdAt"}}]},"post":{"summary":"Review a listing","description":"Creates a review for a listing. Requires authentication. The review is created with `pending` status and must be approved by an admin before it appears publicly. One review per user per listing is allowed (409 otherwise). `verifiedRental` is set automatically when the reviewer has an accepted inquiry on that listing — nothing is ever purchased on Lejested, so an accepted rental request is the only honest proof of a real transaction.","tags":["Reviews"],"responses":{"201":{"description":"Review created successfully (status: pending)","content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","description":"The newly created review document"}}}}}},"400":{"description":"Validation error — missing or invalid fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden — a lister cannot review their own listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Listing not found, or the authenticated user has no Payload record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict — user has already reviewed this listing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listingId","rating","title","body"],"properties":{"listingId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"Numeric ID of the listing being reviewed","example":42},"rating":{"type":"integer","minimum":1,"maximum":5,"description":"Star rating from 1 to 5","example":4},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Short title for the review","example":"Nem handel og præcis beskrivelse"},"body":{"type":"string","minLength":1,"maxLength":2000,"description":"Full text of the review","example":"Vognen var lige så ren som på billederne, og afhentningen tog fem minutter. Ville leje af Mette igen uden at tøve."}}}}}}}},"/api/reviews/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the Review","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findReviewById","summary":"Find a Review by ID","tags":["Reviews"],"responses":{"200":{"description":"Review object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Review","properties":{"id":{"type":"string"},"listing":{"description":"The listing that was rented. The lister is derived from listing.owner rather than stored again here, so a review can never point at a different person than the listing it belongs to.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Listing","properties":{"id":{"type":"string"},"title":{"description":"Headline shown on the listing card and detail page, e.g. '3-værelses lejlighed på Østerbro' or 'Ford Transit kassevogn'.","type":"string"},"slug":{"description":"URL segment for /lej/[slug]. Derived from the title when left blank.","type":"string"},"summary":{"description":"One or two sentences. Used on the listing card, in search results and as the meta description — keep it concrete ('60 m², altan mod syd, 5 min til metro').","type":["string","null"]},"description":{"description":"The full description: what it is, what's included, house rules, pickup/delivery.","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"category":{"description":"Always the *leaf* category (Lejlighed, not Bolig & lokaler). The leaf carries the attributeSchema that defines this listing's spec fields and filters.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Category","properties":{"id":{"type":"string"},"name":{"description":"Display name of the category, e.g. 'Lejlighed' or 'Elværktøj'.","type":"string"},"slug":{"description":"URL segment used by /kategori/[slug] and the ?kategori= search filter. Derived from the Danish name if left blank.","type":"string"},"description":{"description":"Intro paragraph shown at the top of the category landing page. Doubles as the SEO meta description when no override is set.","type":["string","null"]},"icon":{"description":"A lucide-react icon name in PascalCase — e.g. Home, Car, Wrench, PartyPopper, Tent, Camera. Stored as a string rather than an upload so the category tiles render as crisp vector icons that follow the theme colour, and so the whole tree can be fetched without a media join.","type":["string","null"]},"image":{"description":"Optional photo for the category landing hero. The tiles on the front page use `icon`, not this.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"parent":{"description":"Leave empty for one of the six top-level branches. Set it to file this category as a leaf under that branch.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Category"}]},"order":{"description":"Manual sort order within the parent (lower first). The tree is curated, not alphabetical — 'Lejlighed' should outrank 'P-plads' regardless of spelling.","type":["number","null"]},"featured":{"description":"Show this category in the front-page category grid and the header quick-links.","type":["boolean","null"]},"attributeSchema":{"description":"Per-category spec fields. This one array drives three surfaces at once: the create-listing wizard renders an input per entry, the listing detail page renders the spec table, and the search rail renders a filter for every entry marked filterable. Define it on the leaf category (Lejlighed → m2, rooms, floor…), not on the branch.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Stable machine key, lowerCamelCase — e.g. m2, rooms, energyLabel. This is what ends up in listings.attributes[].key and in the ?attr. query params, so renaming it orphans existing listings and breaks shared filter URLs. Choose once.","type":"string"},"label":{"description":"Human label shown next to the value, e.g. 'Boligareal' / 'Floor area'.","type":"string"},"type":{"description":"Decides which input the wizard renders and which filter control the search rail renders (number → range slider, select → checkbox list, boolean → switch).","type":"string","enum":["text","number","select","boolean"]},"options":{"description":"The allowed choices — only meaningful when type is 'Select'.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"label":{"type":"string"},"value":{"description":"Machine value stored on the listing and used in filter URLs.","type":"string"},"id":{"type":["string","null"]}},"required":["label","value"]}},"unit":{"description":"Suffix appended when the value is displayed, e.g. m², km, kW, personer. Kept out of the value itself so numbers stay sortable and filterable.","type":["string","null"]},"required":{"description":"Block the create-listing wizard from advancing until this attribute is filled.","type":["boolean","null"]},"filterable":{"description":"Expose this attribute as a filter on /lej and the category landing page. Keep it off for attributes nobody searches by (e.g. 'etage') so the rail stays short.","type":["boolean","null"]},"id":{"type":["string","null"]}},"required":["key","label","type"]}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","name","slug","updatedAt","createdAt"],"description":"The rental taxonomy. A self-referencing tree: six top-level branches (Bolig & lokaler, Køretøjer, Værktøj & maskiner, Fest & event, Fritid & udendørs, Elektronik & medie) each holding the leaf categories a listing is actually filed under."}]},"attributes":{"description":"Denormalised copy of the category's attributeSchema with this listing's answers filled in. Denormalised on purpose: the spec table and the filter query must keep working even after an admin edits or reorders the category schema, and reading a listing must never require a join to categories.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Matches `attributeSchema[].key` on the category — this is the join key for filtering.","type":"string"},"label":{"description":"Label snapshotted at save time so old listings keep rendering sensibly if the category schema is relabelled.","type":"string"},"value":{"description":"Stored as a display string regardless of the declared type ('62', 'true', 'diesel'). The canonical type lives on the category's attributeSchema; the API casts on the way in and out.","type":["string","null"]},"id":{"type":["string","null"]}},"required":["key","label"]}},"images":{"description":"The first photo is the cover used on cards and in link previews. Drag to reorder.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"image":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"alt":{"description":"What the photo shows, for screen readers and SEO — 'Stue med altandør mod gården', not 'billede 1'.","type":["string","null"]},"id":{"type":["string","null"]}},"required":["image"]}},"price":{"description":"Price in whole Danish kroner — 12400, not 1240000. Listings are never charged on-site, so there is no Stripe minor-unit conversion to respect; storing kroner keeps the number human-readable in the admin and formats straight to '12.400 kr'.","type":"number"},"priceUnit":{"description":"What the price buys. Also decides which date inputs the inquiry form shows (hourly rentals ask for times, monthly ones ask for a move-in date).","type":"string","enum":["hour","day","week","month","year","fixed"]},"deposit":{"description":"Refundable deposit in whole kroner. Leave blank if none — the detail page then says 'Intet depositum', which converts better than an ambiguous 0.","type":["number","null"]},"negotiable":{"description":"Show a 'Pris kan forhandles' badge on the listing.","type":["boolean","null"]},"minRentalPeriod":{"description":"Shortest period you will rent this out for.","type":["number","null"]},"maxRentalPeriod":{"description":"Longest period. Leave blank for no limit.","type":["number","null"]},"rentalPeriodUnit":{"description":"Unit for the two period fields. Kept separate from `priceUnit` because a van priced per day is often rented for a minimum of 4 hours.","type":["string","null"],"enum":["hour","day","week","month"]},"location":{"description":"Where the item is. City, postal code and region are indexed because they carry almost every search on a Danish marketplace.","type":"object","additionalProperties":false,"properties":{"address":{"description":"Street and number. Only ever shown publicly when `showExactAddress` is on.","type":["string","null"]},"city":{"description":"e.g. København, Aarhus.","type":["string","null"]},"postalCode":{"description":"Danish 4-digit postal code. Text rather than number so leading zeros survive and prefix search ('21%') stays possible.","type":["string","null"]},"region":{"description":"One of the five Danish administrative regions. Gives the search rail a coarse geography filter that works without a radius query, and gives /kategori pages something to segment by.","type":["string","null"],"enum":["hovedstaden","sjaelland","syddanmark","midtjylland","nordjylland"]},"country":{"description":"ISO 3166-1 alpha-2. Denmark-only today; the field exists so a Nordic expansion isn't a migration.","type":["string","null"]},"lat":{"description":"Latitude for the map view and radius search.","type":["number","null"]},"lng":{"description":"Longitude.","type":["number","null"]},"showExactAddress":{"description":"Off by default, and that default is deliberate: most listers are private people renting out of their own home. When off, the detail page draws an approximate circle instead of a pin and hides the street address until an inquiry is accepted.","type":["boolean","null"]}},"required":[]},"availableFrom":{"description":"First date it can be rented. Blank means immediately.","type":["string","null"]},"availableTo":{"description":"Last date. Blank means open-ended.","type":["string","null"]},"condition":{"description":"Physical condition. Not relevant for property and spaces — the create-listing wizard hides it for those branches. It is deliberately NOT hidden here via `admin.condition`: that callback runs client-side against the raw form data, where `category` is just an opaque relationship ID with no way to know which branch it belongs to.","type":["string","null"],"enum":["new","like-new","good","fair"]},"features":{"description":"Free-form amenity chips shown under the description — 'Altan', 'Vaskemaskine', 'Anhængertræk', 'Stativ medfølger'. Free-form on purpose: the structured, filterable facts belong in `attributes`; this is the long tail that would bloat every category schema.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"},"id":{"type":["string","null"]}},"required":["value"]}},"owner":{"description":"The lister. Drives read/update access, the public profile at /profil/[id], and who receives the inquiry email.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"listerType":{"description":"Snapshotted per listing rather than read from the user, because the same account legitimately lists both privately and on behalf of a company. Renters filter on this — 'kun private' is one of the most-used filters on Danish marketplaces.","type":"string","enum":["private","business","agent"]},"contactPreference":{"description":"Defaults to platform-only so a lister never accidentally publishes their phone number.","type":["string","null"],"enum":["platform","phone","both"]},"contactPhone":{"description":"Only rendered when contactPreference allows phone contact.","type":["string","null"]},"status":{"description":"Only 'Udgivet' is publicly readable. 'Udlejet' keeps the listing in the owner's dashboard and in the lister's public history without it competing in search.","type":"string","enum":["draft","pending","published","rented","archived"]},"featured":{"description":"Boosted placement. Set by the boost fulfilment flow after a successful Stripe payment (server-side, overrideAccess), never by the lister.","type":["boolean","null"]},"featuredUntil":{"description":"When the purchased boost expires. Queries must check both `featured` and this date so an expired boost stops ranking even before the cleanup job runs.","type":["string","null"]},"viewCount":{"description":"Incremented by ListingService on detail-page views (overrideAccess).","type":["number","null"]},"inquiryCount":{"description":"Kept in sync by the afterChange hook on the inquiries collection.","type":["number","null"]},"publishedAt":{"description":"Stamped automatically the first time the listing is published; drives 'Oprettet …' and the default newest-first sort.","type":["string","null"]},"meta":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"description":"Maximum upload file size: 12MB. Recommended file size for images is <500KB.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"required":[]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","title","slug","category","price","priceUnit","owner","listerType","status","updatedAt","createdAt"],"description":"Everything people rent out on Lejested — apartments, vans, tools, party tents, cameras. User-generated: the owner writes it, admins moderate it."}]},"customer":{"description":"The renter who wrote this review.","oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"rating":{"description":"Star rating from 1 (lowest) to 5 (highest).","type":"number"},"title":{"description":"Short headline summarising the rental experience.","type":"string"},"body":{"description":"The review itself — was it as described, how was the handover, would you rent from this person again.","type":"string"},"status":{"description":"Moderation status controlling public visibility of the review.","type":"string","enum":["pending","approved","rejected"]},"verifiedRental":{"description":"Set when the reviewer has an accepted inquiry on this listing, i.e. they demonstrably arranged the rental. Renamed from the starter kit's `verifiedPurchase`: nothing is ever purchased on Lejested, so 'verified purchase' would be a badge that can never truthfully be earned.","type":["boolean","null"]},"helpfulCount":{"description":"Number of users who found this review helpful","type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","listing","customer","rating","title","body","status","updatedAt","createdAt"],"description":"Reviews renters leave after a rental. Attached to a listing, but read as a verdict on the lister — they are aggregated onto the public profile at /profil/[id] via the listings that user owns."}}}},"404":{"description":"Review not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/blogs":{"get":{"operationId":"listGuides","summary":"Retrieve a list of Guides","tags":["Guides"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["title","-title","slug","-slug","author","-author","publishedAt","-publishedAt","updatedAt","-updatedAt","createdAt","-createdAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"Guide query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"author":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"not_equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"Guide query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"Guide query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"author":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"not_equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/GuideQueryOperationsAnd"},{"title":"Guide query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"Guide query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"author":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"not_equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/GuideQueryOperationsAnd"},{"$ref":"#/components/schemas/GuideQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"Guide query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"Guide query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"author":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"not_equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"Guide query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"Guide query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"author":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"not_equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/GuideQueryOperationsAnd"},{"$ref":"#/components/schemas/GuideQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/GuideQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of Guides","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"Guide","properties":{"id":{"type":"string"},"title":{"description":"The headline of the guide, shown in the /blogs index and on the detail page.","type":"string"},"slug":{"description":"URL segment for /blogs/[slug], e.g. saadan-skriver-du-en-annonce.","type":"string"},"excerpt":{"description":"Brief summary shown on the guide card and used as the meta description (max 300 chars).","type":"string"},"coverImage":{"description":"Cover image for this guide.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"content":{"description":"Main body of the guide, in rich text.","type":"object","properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"author":{"description":"Byline. Defaults to the house name; use a person's name for guides where the expertise is the point.","type":"string"},"category":{"description":"Who the guide is written for. Drives the filter tabs on /blogs.","type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"tags":{"description":"Free-form tags for cross-linking related guides (e.g. depositum, fremleje, bil).","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"string"},"id":{"type":["string","null"]}},"required":["tag"]}},"status":{"description":"Only published guides appear on the public site.","type":"string","enum":["draft","published"]},"publishedAt":{"description":"When this guide should be considered published.","type":["string","null"]},"meta":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"description":"Maximum upload file size: 12MB. Recommended file size for images is <500KB.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"required":[]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","title","slug","excerpt","content","author","category","status","updatedAt","createdAt"],"description":"Practical guides for the Danish rental market — how to write an annonce that gets rented, what a udlejer may charge in depositum, the rules on fremleje. Published at /blogs."}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/blogs/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the Guide","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findGuideById","summary":"Find a Guide by ID","tags":["Guides"],"responses":{"200":{"description":"Guide object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Guide","properties":{"id":{"type":"string"},"title":{"description":"The headline of the guide, shown in the /blogs index and on the detail page.","type":"string"},"slug":{"description":"URL segment for /blogs/[slug], e.g. saadan-skriver-du-en-annonce.","type":"string"},"excerpt":{"description":"Brief summary shown on the guide card and used as the meta description (max 300 chars).","type":"string"},"coverImage":{"description":"Cover image for this guide.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]},"content":{"description":"Main body of the guide, in rich text.","type":"object","properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"author":{"description":"Byline. Defaults to the house name; use a person's name for guides where the expertise is the point.","type":"string"},"category":{"description":"Who the guide is written for. Drives the filter tabs on /blogs.","type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"tags":{"description":"Free-form tags for cross-linking related guides (e.g. depositum, fremleje, bil).","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"string"},"id":{"type":["string","null"]}},"required":["tag"]}},"status":{"description":"Only published guides appear on the public site.","type":"string","enum":["draft","published"]},"publishedAt":{"description":"When this guide should be considered published.","type":["string","null"]},"meta":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"description":"Maximum upload file size: 12MB. Recommended file size for images is <500KB.","oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"required":[]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","title","slug","excerpt","content","author","category","status","updatedAt","createdAt"],"description":"Practical guides for the Danish rental market — how to write an annonce that gets rented, what a udlejer may charge in depositum, the rules on fremleje. Published at /blogs."}}}},"404":{"description":"Guide not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/faqs":{"get":{"operationId":"listFAQs","summary":"Retrieve a list of FAQs","tags":["FAQs"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["question","-question","order","-order","updatedAt","-updatedAt","createdAt","-createdAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"FAQ query operations","type":"object","properties":{"question":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"FAQ query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"FAQ query operations","type":"object","properties":{"question":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/FAQQueryOperationsAnd"},{"title":"FAQ query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"FAQ query operations","type":"object","properties":{"question":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/FAQQueryOperationsAnd"},{"$ref":"#/components/schemas/FAQQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"FAQ query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"FAQ query operations","type":"object","properties":{"question":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"FAQ query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"FAQ query operations","type":"object","properties":{"question":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/FAQQueryOperationsAnd"},{"$ref":"#/components/schemas/FAQQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/FAQQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of FAQs","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"FAQ","properties":{"id":{"type":"string"},"question":{"description":"The question, phrased the way a user would actually ask it ('Hvad koster det at oprette en annonce?'), not as an internal topic label.","type":"string"},"answer":{"description":"A direct answer in du-form. Lead with the answer, then the caveat — this text is also the source for the FAQPage structured data.","type":"string"},"order":{"description":"Display order (lower numbers appear first)","type":"number"},"isActive":{"description":"Uncheck to retire a question without deleting it — useful when a rule changes and the old answer may need to come back.","type":["boolean","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","question","answer","order","updatedAt","createdAt"],"description":"Frequently asked questions covering both sides of the marketplace — renters asking how contact works and what a depositum is, listers asking what it costs to advertise. Rendered on /faq and as the teaser accordion on the front page."}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/faqs/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the FAQ","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findFAQById","summary":"Find a FAQ by ID","tags":["FAQs"],"responses":{"200":{"description":"FAQ object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"FAQ","properties":{"id":{"type":"string"},"question":{"description":"The question, phrased the way a user would actually ask it ('Hvad koster det at oprette en annonce?'), not as an internal topic label.","type":"string"},"answer":{"description":"A direct answer in du-form. Lead with the answer, then the caveat — this text is also the source for the FAQPage structured data.","type":"string"},"order":{"description":"Display order (lower numbers appear first)","type":"number"},"isActive":{"description":"Uncheck to retire a question without deleting it — useful when a rule changes and the old answer may need to come back.","type":["boolean","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","question","answer","order","updatedAt","createdAt"],"description":"Frequently asked questions covering both sides of the marketplace — renters asking how contact works and what a depositum is, listers asking what it costs to advertise. Rendered on /faq and as the teaser accordion on the front page."}}}},"404":{"description":"FAQ not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/media":{"get":{"operationId":"listMedia","summary":"Retrieve a list of Media","tags":["Media"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["alt","-alt","updatedAt","-updatedAt","createdAt","-createdAt","url","-url","thumbnailURL","-thumbnailURL","filename","-filename","mimeType","-mimeType","filesize","-filesize","width","-width","height","-height","focalX","-focalX","focalY","-focalY"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"Media query operations","type":"object","properties":{"alt":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"thumbnailURL":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filename":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"mimeType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filesize":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"width":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"height":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalX":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalY":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},{"title":"Media query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"Media query operations","type":"object","properties":{"alt":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"thumbnailURL":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filename":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"mimeType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filesize":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"width":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"height":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalX":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalY":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},{"$ref":"#/components/schemas/MediaQueryOperationsAnd"},{"title":"Media query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"Media query operations","type":"object","properties":{"alt":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"thumbnailURL":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filename":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"mimeType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filesize":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"width":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"height":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalX":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalY":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},{"$ref":"#/components/schemas/MediaQueryOperationsAnd"},{"$ref":"#/components/schemas/MediaQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"Media query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"Media query operations","type":"object","properties":{"alt":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"thumbnailURL":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filename":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"mimeType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filesize":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"width":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"height":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalX":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalY":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},{"title":"Media query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"Media query operations","type":"object","properties":{"alt":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"thumbnailURL":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filename":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"mimeType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filesize":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"width":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"height":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalX":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalY":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},{"$ref":"#/components/schemas/MediaQueryOperationsAnd"},{"$ref":"#/components/schemas/MediaQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/MediaQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of Media","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/media/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the Media","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findMediaById","summary":"Find a Media by ID","tags":["Media"],"responses":{"200":{"description":"Media object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}}}},"404":{"description":"Media not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/addresses":{"get":{"operationId":"listAddresses","summary":"Retrieve a list of addresses","tags":["addresses"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["title","-title","firstName","-firstName","lastName","-lastName","company","-company","addressLine1","-addressLine1","addressLine2","-addressLine2","city","-city","state","-state","postalCode","-postalCode","phone","-phone","updatedAt","-updatedAt","createdAt","-createdAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"addresses query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"firstName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"lastName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"company":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine1":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine2":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"state":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"postalCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"country":{"type":"object","properties":{"equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"not_equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"addresses query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"addresses query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"firstName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"lastName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"company":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine1":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine2":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"state":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"postalCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"country":{"type":"object","properties":{"equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"not_equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/AddressesQueryOperationsAnd"},{"title":"addresses query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"addresses query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"firstName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"lastName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"company":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine1":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine2":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"state":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"postalCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"country":{"type":"object","properties":{"equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"not_equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/AddressesQueryOperationsAnd"},{"$ref":"#/components/schemas/AddressesQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"addresses query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"addresses query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"firstName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"lastName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"company":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine1":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine2":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"state":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"postalCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"country":{"type":"object","properties":{"equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"not_equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"addresses query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"addresses query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"firstName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"lastName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"company":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine1":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine2":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"state":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"postalCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"country":{"type":"object","properties":{"equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"not_equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/AddressesQueryOperationsAnd"},{"$ref":"#/components/schemas/AddressesQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/AddressesQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of addresses","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"addresses","properties":{"id":{"type":"string"},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","country","updatedAt","createdAt"]}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[{"ApiKey":[]}]},"post":{"operationId":"createAddresses","summary":"Create a new addresses","tags":["addresses"],"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}}],"requestBody":{"description":"addresses","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Address","properties":{"customer":{"type":"string","description":"ID of the users"},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]}},"required":["country"]}}}},"responses":{"201":{"description":"addresses object","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"doc":{"allOf":[{"type":"object","additionalProperties":false,"title":"addresses","properties":{"id":{"type":"string"},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","country","updatedAt","createdAt"]},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","createdAt","updatedAt"]}]}},"required":["message","doc"]}}}}},"security":[{"ApiKey":[]}]}},"/api/addresses/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the addresses","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findAddressesById","summary":"Find a addresses by ID","tags":["addresses"],"responses":{"200":{"description":"addresses object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"addresses","properties":{"id":{"type":"string"},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","country","updatedAt","createdAt"]}}}},"404":{"description":"addresses not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]},"patch":{"operationId":"updateAddresses","summary":"Update a addresses","tags":["addresses"],"requestBody":{"description":"addresses","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Address","properties":{"customer":{"type":"string","description":"ID of the users"},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]}},"required":[]}}}},"responses":{"200":{"description":"addresses object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"addresses","properties":{"id":{"type":"string"},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","country","updatedAt","createdAt"]}}}},"404":{"description":"addresses not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]},"delete":{"operationId":"deleteAddresses","summary":"Delete a addresses","tags":["addresses"],"responses":{"200":{"description":"addresses object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"addresses","properties":{"id":{"type":"string"},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","country","updatedAt","createdAt"]}}}},"404":{"description":"addresses not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]}},"/api/variants":{"get":{"operationId":"listVariants","summary":"Retrieve a list of variants","tags":["variants"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["title","-title","inventory","-inventory","updatedAt","-updatedAt","createdAt","-createdAt","deletedAt","-deletedAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"variants query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"title":"variants query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"variants query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"$ref":"#/components/schemas/VariantsQueryOperationsAnd"},{"title":"variants query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"variants query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"$ref":"#/components/schemas/VariantsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantsQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"variants query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"variants query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"title":"variants query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"variants query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"$ref":"#/components/schemas/VariantsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantsQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/VariantsQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of variants","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/variants/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the variants","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findVariantsById","summary":"Find a variants by ID","tags":["variants"],"responses":{"200":{"description":"variants object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}}}},"404":{"description":"variants not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/variantTypes":{"get":{"operationId":"listVariantTypes","summary":"Retrieve a list of variantTypes","tags":["variantTypes"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["label","-label","name","-name","updatedAt","-updatedAt","createdAt","-createdAt","deletedAt","-deletedAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"variantTypes query operations","type":"object","properties":{"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"variantTypes query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"variantTypes query operations","type":"object","properties":{"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/VariantTypesQueryOperationsAnd"},{"title":"variantTypes query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"variantTypes query operations","type":"object","properties":{"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/VariantTypesQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantTypesQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"variantTypes query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"variantTypes query operations","type":"object","properties":{"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"variantTypes query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"variantTypes query operations","type":"object","properties":{"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/VariantTypesQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantTypesQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/VariantTypesQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of variantTypes","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/variantTypes/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the variantTypes","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findVariantTypesById","summary":"Find a variantTypes by ID","tags":["variantTypes"],"responses":{"200":{"description":"variantTypes object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}}}},"404":{"description":"variantTypes not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/variantOptions":{"get":{"operationId":"listVariantOptions","summary":"Retrieve a list of variantOptions","tags":["variantOptions"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["_variantOptions_options_order","-_variantOptions_options_order","label","-label","value","-value","updatedAt","-updatedAt","createdAt","-createdAt","deletedAt","-deletedAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"variantOptions query operations","type":"object","properties":{"_variantOptions_options_order":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"variantOptions query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"variantOptions query operations","type":"object","properties":{"_variantOptions_options_order":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsAnd"},{"title":"variantOptions query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"variantOptions query operations","type":"object","properties":{"_variantOptions_options_order":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"variantOptions query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"variantOptions query operations","type":"object","properties":{"_variantOptions_options_order":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"variantOptions query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"variantOptions query operations","type":"object","properties":{"_variantOptions_options_order":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of variantOptions","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/variantOptions/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the variantOptions","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findVariantOptionsById","summary":"Find a variantOptions by ID","tags":["variantOptions"],"responses":{"200":{"description":"variantOptions object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}}}},"404":{"description":"variantOptions not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/products":{"get":{"operationId":"listProducts","summary":"Retrieve a list of products","tags":["products"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["name","-name","slug","-slug","inventory","-inventory","updatedAt","-updatedAt","createdAt","-createdAt","deletedAt","-deletedAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"products query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan"]},"not_equals":{"type":"string","enum":["boost","plan"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"enableVariants":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"title":"products query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"products query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan"]},"not_equals":{"type":"string","enum":["boost","plan"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"enableVariants":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"$ref":"#/components/schemas/ProductsQueryOperationsAnd"},{"title":"products query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"products query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan"]},"not_equals":{"type":"string","enum":["boost","plan"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"enableVariants":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"$ref":"#/components/schemas/ProductsQueryOperationsAnd"},{"$ref":"#/components/schemas/ProductsQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"products query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"products query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan"]},"not_equals":{"type":"string","enum":["boost","plan"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"enableVariants":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"title":"products query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"products query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan"]},"not_equals":{"type":"string","enum":["boost","plan"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"enableVariants":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},{"$ref":"#/components/schemas/ProductsQueryOperationsAnd"},{"$ref":"#/components/schemas/ProductsQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/ProductsQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of products","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[]}},"/api/products/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the products","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findProductsById","summary":"Find a products by ID","tags":["products"],"responses":{"200":{"description":"products object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}}}},"404":{"description":"products not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[]}},"/api/carts":{"get":{"operationId":"listCarts","summary":"Retrieve a list of carts","tags":["carts"],"parameters":[{"in":"query","name":"page","schema":{"type":"number"}},{"in":"query","name":"limit","schema":{"type":"number"}},{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string","enum":["secret","-secret","purchasedAt","-purchasedAt","discountCode","-discountCode","updatedAt","-updatedAt","createdAt","-createdAt"]}},{"in":"query","name":"where","style":"deepObject","schema":{"anyOf":[{"title":"carts query operations","type":"object","properties":{"secret":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"purchasedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["active","purchased","abandoned"]},"not_equals":{"type":"string","enum":["active","purchased","abandoned"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"carts query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"carts query operations","type":"object","properties":{"secret":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"purchasedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["active","purchased","abandoned"]},"not_equals":{"type":"string","enum":["active","purchased","abandoned"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/CartsQueryOperationsAnd"},{"title":"carts query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"carts query operations","type":"object","properties":{"secret":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"purchasedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["active","purchased","abandoned"]},"not_equals":{"type":"string","enum":["active","purchased","abandoned"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/CartsQueryOperationsAnd"},{"$ref":"#/components/schemas/CartsQueryOperationsOr"}]}}},"required":["or"]}]}}},"required":["and"]},{"title":"carts query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"title":"carts query operations","type":"object","properties":{"secret":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"purchasedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["active","purchased","abandoned"]},"not_equals":{"type":"string","enum":["active","purchased","abandoned"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"title":"carts query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"title":"carts query operations","type":"object","properties":{"secret":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"purchasedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["active","purchased","abandoned"]},"not_equals":{"type":"string","enum":["active","purchased","abandoned"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},{"$ref":"#/components/schemas/CartsQueryOperationsAnd"},{"$ref":"#/components/schemas/CartsQueryOperationsOr"}]}}},"required":["and"]},{"$ref":"#/components/schemas/CartsQueryOperationsOr"}]}}},"required":["or"]}]}}],"responses":{"200":{"description":"List of carts","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]}},"totalDocs":{"type":"integer"},"limit":{"type":"integer"},"totalPages":{"type":"integer"},"page":{"type":"integer"},"pagingCounter":{"type":"integer"},"hasPrevPage":{"type":"boolean"},"hasNextPage":{"type":"boolean"},"prevPage":{"type":["integer","null"]},"nextPage":{"type":["integer","null"]}},"required":["docs","totalDocs","limit","totalPages","page","pagingCounter","hasPrevPage","hasNextPage","prevPage","nextPage"]}}}}},"security":[{"ApiKey":[]}]},"post":{"operationId":"createCarts","summary":"Create a new carts","tags":["carts"],"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}}],"requestBody":{"description":"carts","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Cart","properties":{"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"type":"string","description":"ID of the users"},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]}},"required":[]}}}},"responses":{"201":{"description":"carts object","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"doc":{"allOf":[{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]},{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","createdAt","updatedAt"]}]}},"required":["message","doc"]}}}}},"security":[{"ApiKey":[]}]}},"/api/carts/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the carts","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findCartsById","summary":"Find a carts by ID","tags":["carts"],"responses":{"200":{"description":"carts object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]}}}},"404":{"description":"carts not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]},"patch":{"operationId":"updateCarts","summary":"Update a carts","tags":["carts"],"requestBody":{"description":"carts","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"Cart","properties":{"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"type":"string","description":"ID of the users"},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]}},"required":[]}}}},"responses":{"200":{"description":"carts object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]}}}},"404":{"description":"carts not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]},"delete":{"operationId":"deleteCarts","summary":"Delete a carts","tags":["carts"],"responses":{"200":{"description":"carts object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]}}}},"404":{"description":"carts not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]}},"/api/orders":{"get":{"summary":"List the authenticated user's orders","description":"Returns a paginated list of orders belonging to the authenticated user. Orders are matched by the internal user ID or the user's email and are sorted by creation date (newest first).","tags":["Orders"],"responses":{"200":{"description":"Paginated order list","content":{"application/json":{"schema":{"type":"object","required":["orders","totalPages","page"],"properties":{"orders":{"type":"array","maxItems":50,"items":{"type":"object","description":"Order object with depth-2 relations (customer, products, etc.)"},"description":"Array of order objects"},"totalPages":{"type":"integer","minimum":0,"description":"Total number of pages","example":3},"page":{"type":"integer","minimum":1,"description":"Current page number","example":1},"totalDocs":{"type":"integer","minimum":0,"description":"Total number of orders","example":27}}},"example":{"orders":[],"totalPages":3,"page":1,"totalDocs":27}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Unauthorized"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Failed to load orders"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"page","in":"query","required":false,"description":"Page number for pagination (defaults to 1)","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1,"example":1}},{"name":"limit","in":"query","required":false,"description":"Number of orders per page (defaults to 10, max 50)","schema":{"type":"integer","minimum":1,"maximum":50,"default":10,"example":10}}]}},"/api/orders/{id}":{"parameters":[{"in":"query","name":"depth","schema":{"type":"number"}},{"in":"query","name":"locale","schema":{"type":"string"}},{"in":"query","name":"fallback-locale","schema":{"type":"string"}},{"in":"path","name":"id","description":"ID of the orders","required":true,"schema":{"type":"string"}}],"get":{"operationId":"findOrdersById","summary":"Find a orders by ID","tags":["orders"],"responses":{"200":{"description":"orders object","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"title":"orders","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"shippingAddress":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":["string","null"]},"phone":{"type":["string","null"]}},"required":[]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"customerEmail":{"type":["string","null"]},"transactions":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"transactions","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"paymentMethod":{"type":["string","null"],"enum":["stripe"]},"stripe":{"type":"object","additionalProperties":false,"properties":{"customerID":{"type":["string","null"]},"paymentIntentID":{"type":["string","null"]}},"required":[]},"billingAddress":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":["string","null"]},"phone":{"type":["string","null"]}},"required":[]},"status":{"type":"string","enum":["pending","succeeded","failed","cancelled","expired","refunded"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"customerEmail":{"type":["string","null"]},"order":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Orders"}]},"cart":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"variant":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]}]},"amount":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","status","updatedAt","createdAt"]}]}},"status":{"type":["string","null"],"enum":["processing","completed","cancelled","refunded"]},"amount":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"fulfillmentStatus":{"description":"Where this boost or plan is in its lifecycle. Changing it emails the lister.","type":["string","null"],"enum":["pending","processing","shipped","delivered","cancelled"]},"discountCode":{"description":"Discount code applied to this purchase","type":["string","null"]},"discountAmount":{"description":"Discount applied, in øre (14900 = 149,00 kr)","type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]}}}},"404":{"description":"orders not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}}},"security":[{"ApiKey":[]}]}},"/api/contact":{"post":{"summary":"Submit contact form","description":"Accepts a contact form submission and stores it in the Payload CMS `contact-form-submissions` collection. No authentication is required.","tags":["Contact"],"responses":{"201":{"description":"Contact form submitted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true,"description":"Indicates the submission was saved"}}}}}},"400":{"description":"Validation error — missing or invalid fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","email","subject","message"],"properties":{"name":{"type":"string","minLength":1,"maxLength":150,"pattern":"^[\\p{L}\\p{N}\\s\\-'.]+$","description":"Full name of the person submitting the form","example":"Jane Doe"},"email":{"type":"string","format":"email","minLength":5,"maxLength":320,"description":"Contact email address","example":"jane@example.com"},"subject":{"type":"string","minLength":1,"maxLength":200,"description":"Subject line for the contact message","example":"Partnership inquiry"},"message":{"type":"string","minLength":1,"maxLength":5000,"description":"Body of the contact message","example":"Hi, I would love to discuss a potential partnership. Please let me know a good time to connect."}}}}}},"x-dashboard-trigger":"Payload Admin > Contact Form Submissions"}},"/api/newsletter":{"post":{"summary":"Subscribe to newsletter","description":"Subscribes an email address to the newsletter. The address is stored in the Payload CMS `newsletter-subscribers` collection and optionally synced to a Resend audience when `RESEND_API_KEY` and `RESEND_AUDIENCE_ID` are configured. Duplicate emails are silently ignored.","tags":["Newsletter"],"responses":{"200":{"description":"Successfully subscribed (or already subscribed)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true,"description":"Indicates the subscription was recorded"}}}}}},"400":{"description":"Validation error — invalid email address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","minLength":5,"maxLength":320,"description":"Email address to subscribe to the newsletter","example":"subscriber@example.com"}}}}}},"x-dashboard-trigger":"Payload Admin > Newsletter Subscribers"}},"/api/reviews/{reviewId}/helpful":{"post":{"summary":"Mark a review as helpful","description":"Increments the helpful vote count on a review. Requires authentication. The review must exist; otherwise a 404 is returned.","tags":["Reviews"],"responses":{"200":{"description":"Helpful count incremented successfully","content":{"application/json":{"schema":{"type":"object","properties":{"helpfulCount":{"type":"integer","minimum":0,"description":"Updated helpful vote count","example":5}}}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Review not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"reviewId","in":"path","required":true,"description":"Numeric ID of the review to mark as helpful","schema":{"type":"string","minLength":1,"maxLength":20,"example":"17"}}]}},"/api/saved":{"get":{"summary":"Get saved listings","description":"Returns the signed-in user's saved listings, newest first, with the `listing` relation populated (depth 2) so `/konto/gemte` can render cards without a second round-trip. Limited to 50 items.","tags":["Saved"],"responses":{"200":{"description":"Saved listings retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","maxItems":50,"items":{"type":"object"},"description":"Saved-listing documents with the populated listing relation"}}}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}]},"post":{"summary":"Save a listing","description":"Adds a listing to the signed-in user's shortlist. Returns 409 if it is already saved. This is a bookmark, not a cart — nothing here is ever charged, and renters never pay on Lejested.","tags":["Saved"],"responses":{"201":{"description":"Listing saved","content":{"application/json":{"schema":{"type":"object","properties":{"item":{"type":"object","description":"The newly created saved-listing document"}}}}}},"400":{"description":"Validation error — missing or invalid listingId","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Authenticated user not found in the Payload users collection","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict — the listing is already saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listingId"],"properties":{"listingId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"Numeric ID of the listing to save","example":42}}}}}}}},"/api/saved/{listingId}":{"delete":{"summary":"Unsave a listing","description":"Removes a listing from the signed-in user's shortlist. Keyed on the **listing** id rather than the saved-listing row id, so a save button on a listing card can toggle without first looking up which row it created. Ownership is enforced by the lookup itself — the row is only ever matched within your own saved listings, so another user's row can neither be seen nor deleted. Returns 404 if the listing was not saved.","tags":["Saved"],"responses":{"200":{"description":"Listing unsaved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true,"description":"Indicates the listing was unsaved"}}}}}},"400":{"description":"Validation error — non-numeric listingId","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found — this listing is not in your saved listings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"listingId","in":"path","required":true,"description":"Numeric ID of the listing to unsave","schema":{"type":"string","pattern":"^\\d+$","minLength":1,"maxLength":20,"example":"42"}}]}},"/api/saved/check/{listingId}":{"get":{"summary":"Check if a listing is saved","description":"Tells the save button on a listing card or detail page which state to render. Signed-out visitors get `{ saved: false }` with a 200 rather than a 401 — a save button that has not been clicked looks identical whether you are logged in or not, and 401-ing here would put an error in the console on every public listing page.","tags":["Saved"],"responses":{"200":{"description":"Saved-state result","content":{"application/json":{"schema":{"type":"object","properties":{"saved":{"type":"boolean","description":"Whether the listing is in the user's saved listings","example":true},"itemId":{"oneOf":[{"type":"integer","minimum":1,"description":"ID of the matching saved-listing row","example":123},{"type":"null"}],"description":"ID of the matching saved-listing row, or null when not saved"}}}}}},"400":{"description":"Validation error — non-numeric listingId","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"listingId","in":"path","required":true,"description":"Numeric ID of the listing to check","schema":{"type":"string","pattern":"^\\d+$","minLength":1,"maxLength":20,"example":"42"}}]}},"/api/listings/{slug}":{"get":{"summary":"Get one listing by slug","description":"Returns a single published listing with its category, photos, attributes and lister populated.\n\nReading a listing **increments its `viewCount`**, which is the number the detail page and the lister's dashboard show. Treat this as a write: do not call it to poll for changes.\n\n`location.address` is only meaningful when `location.showExactAddress` is true — most listers are private people renting out of their own home, so the default is an approximate location.\n\n`price` is whole Danish kroner and pairs with `priceUnit` (`450` + `day` → `450 kr/dag`).","tags":["Listings"],"responses":{"200":{"description":"The listing","content":{"application/json":{"schema":{"type":"object","required":["listing"],"properties":{"listing":{"type":"object","description":"Listing document with `category`, `images[].image` and `owner` populated."}}}}}},"400":{"description":"The slug is not a valid slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"404":{"description":"No published listing has this slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Listing not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"description":"URL segment of the listing, as used by `/lej/{slug}`.","schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","example":"ford-transit-kassevogn-aarhus"}}]}},"/api/listings/{slug}/similar":{"get":{"summary":"List listings similar to one listing","description":"Returns published listings comparable to the given one — same category first, then nearby location and a similar price band. Used by the 'Lignende annoncer' rail on `/lej/{slug}`.\n\nThe reference listing itself is never included. Unlike `GET /api/listings/{slug}` this endpoint does **not** increment `viewCount`, so it is safe to call on hover or prefetch.","tags":["Listings","Recommendations"],"responses":{"200":{"description":"Similar listings, most relevant first","content":{"application/json":{"schema":{"type":"object","required":["listings"],"properties":{"listings":{"type":"array","maxItems":12,"items":{"type":"object","description":"Listing document"},"description":"Similar published listings, excluding the reference listing."}}},"example":{"listings":[]}}}},"400":{"description":"Invalid slug or limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"404":{"description":"No published listing has this slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Listing not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"description":"URL segment of the listing to find neighbours for.","schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","example":"ford-transit-kassevogn-aarhus"}},{"name":"limit","in":"query","required":false,"description":"How many similar listings to return.","schema":{"type":"integer","minimum":1,"maximum":12,"default":6,"example":6}}]}},"/api/listings/mine":{"get":{"summary":"List the authenticated user's own listings","description":"Returns the caller's listings in **every** status — drafts, pending, published, rented and archived — which is what `/konto/annoncer` needs and what `GET /api/listings` deliberately never returns.","tags":["Listings"],"responses":{"200":{"description":"Paginated listings owned by the caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Unauthorized"}}}},"404":{"description":"The session has no matching user record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"users not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]},{"apiKeyAuth":[]}],"parameters":[{"name":"status","in":"query","required":false,"description":"Only return listings in this status.","schema":{"type":"string","enum":["draft","pending","published","rented","archived"],"example":"published"}},{"name":"q","in":"query","required":false,"description":"Free-text query matched against title and summary.","schema":{"type":"string","maxLength":120,"example":"kassevogn"}},{"name":"sort","in":"query","required":false,"description":"Ordering. Defaults to most recently updated.","schema":{"type":"string","enum":["updated","newest","views","inquiries"],"default":"updated","example":"inquiries"}},{"name":"page","in":"query","required":false,"description":"1-indexed page number.","schema":{"type":"integer","minimum":1,"default":1,"example":1}},{"name":"limit","in":"query","required":false,"description":"Listings per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20,"example":20}}]},"post":{"summary":"Create a listing","description":"Creates a listing owned by the authenticated user.\n\n**Attributes are validated against the category.** Every entry in `attributes` must match an `attributeSchema[].key` on the chosen category; `select` values must be one of that attribute's `options`, `number` values must parse as numbers, and every attribute marked `required` must be present. A mismatch is a `422` with `code: \"category_mismatch\"` and an `issues` array — distinct from the `400` a malformed body produces, so a client can tell 'you sent nonsense' from 'this does not fit the category you picked'.\n\nSend attributes as `{ key, value }`. The `label` stored on the listing is snapshotted from the category, so relabelling a category later never rewrites existing listings.\n\n**Money is DKK in whole kroner.** `price: 450` with `priceUnit: \"day\"` is 450 kr/dag. There are no minor units here — that is only true of the boost and plan products, which are a different collection.\n\n`owner` is taken from the session, and `featured`, `featuredUntil`, `viewCount`, `inquiryCount` and `publishedAt` are ignored if sent: they are set by the boost fulfilment flow, the view counter, the inquiry hook and the collection's own hooks respectively.","tags":["Listings"],"responses":{"201":{"description":"The created listing","content":{"application/json":{"schema":{"type":"object","required":["listing"],"properties":{"listing":{"type":"object","description":"The created listing"}}}}}},"400":{"description":"Validation failed — a malformed body, a missing required field, or publishing without a photo","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Unauthorized"}}}},"404":{"description":"The referenced category does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"categories not found"}}}},"409":{"description":"A listing with this slug already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"A listing with this slug already exists"}}}},"422":{"description":"The attributes do not satisfy the selected category's attributeSchema","content":{"application/json":{"schema":{"type":"object","required":["error","code","categoryId","issues"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["category_mismatch"]},"categoryId":{"type":"integer","minimum":1},"issues":{"type":"array","items":{"type":"string"},"description":"One human-readable message per offending attribute."}}},"example":{"error":"These details do not match the selected category","code":"category_mismatch","categoryId":12,"issues":["Missing required attribute \"seats\"","\"hybrid\" is not a valid option for \"fuel\""]}}}},"429":{"description":"Rate limit exceeded — 20 new listings per hour per user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Too many requests"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]},{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","category","price","priceUnit","listerType"],"properties":{"title":{"type":"string","minLength":3,"maxLength":160,"description":"Headline shown on the card and detail page.","example":"Ford Transit kassevogn — 3,5 t"},"slug":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"URL segment. Derived from the title when omitted. Must be unique across all listings.","example":"ford-transit-kassevogn-aarhus"},"summary":{"type":"string","maxLength":200,"description":"One or two concrete sentences, used on cards and in search.","example":"3,5 t kassevogn med bagsmæk. Afhentes i Åbyhøj."},"description":{"type":"object","description":"Lexical rich-text document with a `root` node."},"category":{"type":"integer","minimum":1,"description":"ID of the leaf category. The category's `attributeSchema` decides which `attributes` are valid.","example":12},"attributes":{"type":"array","maxItems":40,"description":"Answers to the category's attribute schema. Send `{ key, value }`; the label is snapshotted server-side from the category.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","maxLength":60,"example":"seats"},"value":{"type":"string","maxLength":200,"example":"3"}}}},"images":{"type":"array","maxItems":20,"description":"Photos in display order. The first one is the cover.","items":{"type":"object","required":["image"],"properties":{"image":{"type":"integer","minimum":1,"description":"ID of a document in the `media` collection."},"alt":{"type":"string","maxLength":200}}}},"price":{"type":"integer","minimum":0,"description":"Price in whole Danish kroner. 450 means 450 kr — never øre, never a decimal.","example":450},"priceUnit":{"type":"string","enum":["hour","day","week","month","year","fixed"],"description":"What the price buys.","example":"day"},"deposit":{"type":"integer","minimum":0,"description":"Refundable deposit in whole kroner. Omit when there is none.","example":2000},"negotiable":{"type":"boolean","description":"Show a 'kan forhandles' badge."},"minRentalPeriod":{"type":"integer","minimum":0,"example":1},"maxRentalPeriod":{"type":"integer","minimum":0,"example":14},"rentalPeriodUnit":{"type":"string","enum":["hour","day","week","month"]},"location":{"type":"object","properties":{"address":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":100,"example":"Aarhus"},"postalCode":{"type":"string","maxLength":10,"example":"8230"},"region":{"type":"string","enum":["hovedstaden","sjaelland","syddanmark","midtjylland","nordjylland"]},"country":{"type":"string","minLength":2,"maxLength":2,"example":"DK"},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"showExactAddress":{"type":"boolean","description":"Off by default. When off, the detail page shows an approximate area instead of a pin."}}},"availableFrom":{"type":"string","format":"date","example":"2026-09-01"},"availableTo":{"type":"string","format":"date","example":"2026-12-20"},"condition":{"type":"string","enum":["new","like-new","good","fair"]},"features":{"type":"array","maxItems":30,"items":{"type":"string","maxLength":80},"description":"Free-form amenity chips.","example":["Anhængertræk","Bagsmæk"]},"listerType":{"type":"string","enum":["private","business","agent"],"description":"Declared per listing, not read from the account.","example":"private"},"contactPreference":{"type":"string","enum":["platform","phone","both"]},"contactPhone":{"type":"string","maxLength":30,"description":"Required when `contactPreference` is `phone` or `both`."},"status":{"type":"string","enum":["draft","pending","published","rented","archived"],"description":"Defaults to `draft`. Moving to `published` requires at least one photo.","example":"draft"}}},"example":{"title":"Ford Transit kassevogn — 3,5 t","summary":"3,5 t kassevogn med bagsmæk. Afhentes i Åbyhøj.","category":12,"attributes":[{"key":"seats","value":"3"},{"key":"fuel","value":"diesel"}],"images":[{"image":41,"alt":"Hvid kassevogn set fra siden"}],"price":450,"priceUnit":"day","deposit":2000,"location":{"city":"Aarhus","postalCode":"8230","region":"midtjylland"},"features":["Anhængertræk","Bagsmæk"],"listerType":"private","status":"draft"}}}},"x-rate-limit":{"window":"1 hour","max":20}}},"/api/listings/id/{id}":{"patch":{"summary":"Update a listing","description":"Partially updates a listing. The caller must be the listing's owner, or an admin.\n\nThe route lives under a literal `id` segment rather than at `/api/listings/{id}` so it does not collide with the slug-addressed `GET /api/listings/{slug}`.\n\n`category` and `attributes` must be sent together — an attribute list is only meaningful against the category whose `attributeSchema` it answers. The same per-attribute validation as `POST /api/listings/mine` applies.\n\n`featured`, `featuredUntil`, `viewCount`, `inquiryCount`, `owner` and `publishedAt` cannot be set through this endpoint; they belong to the boost flow and the collection's own hooks.","tags":["Listings"],"responses":{"200":{"description":"The updated listing","content":{"application/json":{"schema":{"type":"object","required":["listing"],"properties":{"listing":{"type":"object","description":"The updated listing"}}}}}},"400":{"description":"Validation failed — an empty patch, a malformed field, or publishing a listing that has no photo","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Unauthorized"}}}},"403":{"description":"The listing belongs to someone else","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Forbidden"}}}},"404":{"description":"No listing with this ID, or the category does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Listing not found"}}}},"409":{"description":"Another listing already uses the requested slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"A listing with this slug already exists"}}}},"422":{"description":"The attributes do not satisfy the selected category's attributeSchema","content":{"application/json":{"schema":{"type":"object","required":["error","code","categoryId","issues"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["category_mismatch"]},"categoryId":{"type":"integer","minimum":1},"issues":{"type":"array","items":{"type":"string"}}}},"example":{"error":"These details do not match the selected category","code":"category_mismatch","categoryId":12,"issues":["Missing required attribute \"seats\""]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]},{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric ID of the listing.","schema":{"type":"integer","minimum":1,"example":184}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"properties":{"title":{"type":"string","minLength":3,"maxLength":160,"description":"Headline shown on the card and detail page.","example":"Ford Transit kassevogn — 3,5 t"},"slug":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"URL segment. Derived from the title when omitted. Must be unique across all listings.","example":"ford-transit-kassevogn-aarhus"},"summary":{"type":"string","maxLength":200,"description":"One or two concrete sentences, used on cards and in search.","example":"3,5 t kassevogn med bagsmæk. Afhentes i Åbyhøj."},"description":{"type":"object","description":"Lexical rich-text document with a `root` node."},"category":{"type":"integer","minimum":1,"description":"ID of the leaf category. The category's `attributeSchema` decides which `attributes` are valid.","example":12},"attributes":{"type":"array","maxItems":40,"description":"Answers to the category's attribute schema. Send `{ key, value }`; the label is snapshotted server-side from the category.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","maxLength":60,"example":"seats"},"value":{"type":"string","maxLength":200,"example":"3"}}}},"images":{"type":"array","maxItems":20,"description":"Photos in display order. The first one is the cover.","items":{"type":"object","required":["image"],"properties":{"image":{"type":"integer","minimum":1,"description":"ID of a document in the `media` collection."},"alt":{"type":"string","maxLength":200}}}},"price":{"type":"integer","minimum":0,"description":"Price in whole Danish kroner. 450 means 450 kr — never øre, never a decimal.","example":450},"priceUnit":{"type":"string","enum":["hour","day","week","month","year","fixed"],"description":"What the price buys.","example":"day"},"deposit":{"type":"integer","minimum":0,"description":"Refundable deposit in whole kroner. Omit when there is none.","example":2000},"negotiable":{"type":"boolean","description":"Show a 'kan forhandles' badge."},"minRentalPeriod":{"type":"integer","minimum":0,"example":1},"maxRentalPeriod":{"type":"integer","minimum":0,"example":14},"rentalPeriodUnit":{"type":"string","enum":["hour","day","week","month"]},"location":{"type":"object","properties":{"address":{"type":"string","maxLength":200},"city":{"type":"string","maxLength":100,"example":"Aarhus"},"postalCode":{"type":"string","maxLength":10,"example":"8230"},"region":{"type":"string","enum":["hovedstaden","sjaelland","syddanmark","midtjylland","nordjylland"]},"country":{"type":"string","minLength":2,"maxLength":2,"example":"DK"},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"showExactAddress":{"type":"boolean","description":"Off by default. When off, the detail page shows an approximate area instead of a pin."}}},"availableFrom":{"type":"string","format":"date","example":"2026-09-01"},"availableTo":{"type":"string","format":"date","example":"2026-12-20"},"condition":{"type":"string","enum":["new","like-new","good","fair"]},"features":{"type":"array","maxItems":30,"items":{"type":"string","maxLength":80},"description":"Free-form amenity chips.","example":["Anhængertræk","Bagsmæk"]},"listerType":{"type":"string","enum":["private","business","agent"],"description":"Declared per listing, not read from the account.","example":"private"},"contactPreference":{"type":"string","enum":["platform","phone","both"]},"contactPhone":{"type":"string","maxLength":30,"description":"Required when `contactPreference` is `phone` or `both`."},"status":{"type":"string","enum":["draft","pending","published","rented","archived"],"description":"Defaults to `draft`. Moving to `published` requires at least one photo.","example":"draft"}}},"example":{"price":495,"status":"published"}}}}},"delete":{"summary":"Delete a listing","description":"Permanently removes a listing. The caller must be the listing's owner, or an admin.\n\nPrefer `PATCH` with `status: \"archived\"` for anything a lister might want back: archiving keeps the listing out of search while preserving its inquiry thread and view history, which deletion does not.","tags":["Listings"],"responses":{"200":{"description":"The listing was deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"},"example":{"success":true}}}},"400":{"description":"The ID is not a positive integer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Not authenticated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Unauthorized"}}}},"403":{"description":"The listing belongs to someone else","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Forbidden"}}}},"404":{"description":"No listing with this ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Listing not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]},{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric ID of the listing.","schema":{"type":"integer","minimum":1,"example":184}}]}},"/api/categories/{slug}":{"get":{"summary":"Get one category with its attribute schema","description":"Returns a single category including its `attributeSchema` — the per-category spec fields that drive the create-listing form and the `attr.<key>` filters on `GET /api/listings`.\n\nEach `attributeSchema` entry has a stable `key`, a localised `label`, a `type` of `text`, `number`, `select` or `boolean`, and — for `select` — the allowed `options`. Entries marked `filterable` are the ones worth rendering in a search rail; entries marked `required` must be filled before a listing in this category can be created.\n\n`descendantIds` contains this category's ID plus every category beneath it, which is what a category landing page needs to count or query the listings of a whole branch in one request.\n\nNames, descriptions and attribute labels follow the `locale` cookie and fall back to Danish.","tags":["Categories"],"responses":{"200":{"description":"The category and the IDs of its subtree","content":{"application/json":{"schema":{"type":"object","required":["category","descendantIds"],"properties":{"category":{"type":"object","description":"Category document including `attributeSchema`, `icon`, `parent` and `order`."},"descendantIds":{"type":"array","items":{"type":"integer","minimum":1},"description":"This category's ID followed by every category beneath it.","example":[7,8,9]}}}}}},"400":{"description":"The slug is not a valid slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"404":{"description":"No category has this slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Category not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"parameters":[{"name":"slug","in":"path","required":true,"description":"URL segment of the category, as used by `/kategori/{slug}`.","schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","example":"varevogn"}}]}},"/api/inquiries":{"post":{"summary":"Send a rental inquiry","description":"Creates an inquiry against a published listing. **No account is required** — a logged-out renter can send one, which is the whole point of a lead-based marketplace. When a session is present the inquiry is attached to that user and the session email wins over whatever is in the body.\n\nCreating an inquiry increments the listing's `inquiryCount` and emails both parties. Rate limited to 5 requests per 10 minutes per IP (per IP + user when signed in).","tags":["Inquiries"],"responses":{"201":{"description":"Inquiry created","content":{"application/json":{"schema":{"type":"object","properties":{"inquiry":{"type":"object","description":"The newly created inquiry document"}}}}}},"400":{"description":"Validation error — missing or invalid fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"404":{"description":"Listing not found or not accepting inquiries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many inquiries — retry after the window closes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["listingId","name","email","message"],"properties":{"listingId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"Numeric ID of the listing the renter is asking about","example":42},"name":{"type":"string","minLength":1,"maxLength":150,"description":"Name the renter wants the lister to see","example":"Mette Sørensen"},"email":{"type":"string","format":"email","minLength":5,"maxLength":320,"description":"Where the lister's reply goes. Ignored in favour of the session email when signed in.","example":"mette@example.dk"},"phone":{"type":"string","maxLength":30,"description":"Optional phone number","example":"+45 20 12 34 56"},"message":{"type":"string","minLength":1,"maxLength":4000,"description":"The opening message of the thread","example":"Hej! Er lejligheden stadig ledig fra 1. oktober? Jeg er ikke-ryger og har ingen husdyr."},"startDate":{"type":"string","description":"Requested start of the rental period — `YYYY-MM-DD` or a full offset-aware timestamp","example":"2026-10-01"},"endDate":{"type":"string","description":"Requested end of the rental period. Blank means open-ended.","example":"2027-03-31"},"partySize":{"type":"integer","minimum":0,"maximum":100000,"description":"How many people, for venues and event categories","example":40},"quantity":{"type":"integer","minimum":0,"maximum":100000,"description":"How many units, where a listing is countable","example":6},"source":{"type":"string","enum":["listing-detail","listing-card","profile"],"default":"listing-detail","description":"Which surface the inquiry was sent from","example":"listing-detail"}}}}}},"x-dashboard-trigger":"Payload Admin > Marketplace > Inquiries","x-rate-limit":{"window":"10m","max":5}},"get":{"summary":"List your inquiries","description":"Returns the signed-in user's inquiries, newest first. `box=received` returns inquiries on listings you own (the lister inbox); `box=sent` returns inquiries you sent as a renter. Both sides of `/konto/henvendelser` are served from this one endpoint.","tags":["Inquiries"],"responses":{"200":{"description":"Paginated inquiries","content":{"application/json":{"schema":{"type":"object","properties":{"docs":{"type":"array","items":{"type":"object"},"description":"Inquiry documents for the current page"},"totalDocs":{"type":"integer","example":12},"totalPages":{"type":"integer","example":1},"page":{"type":"integer","example":1},"limit":{"type":"integer","example":20}}}}}},"400":{"description":"Validation error — unknown box or status value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"box","in":"query","required":false,"description":"`received` for the lister inbox, `sent` for inquiries you sent","schema":{"type":"string","enum":["received","sent"],"default":"received"}},{"name":"status","in":"query","required":false,"description":"Filter to a single inquiry status","schema":{"type":"string","enum":["new","read","replied","accepted","declined","closed"]}},{"name":"page","in":"query","required":false,"description":"1-indexed page number","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1}},{"name":"limit","in":"query","required":false,"description":"Documents per page","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}]}},"/api/inquiries/{id}":{"get":{"summary":"Read one inquiry thread","description":"Returns a single inquiry with its full message thread. Readable only by the lister who owns the listing, the renter who sent it, or an admin — anyone else gets 403.","tags":["Inquiries"],"responses":{"200":{"description":"The inquiry","content":{"application/json":{"schema":{"type":"object","properties":{"inquiry":{"type":"object","description":"The inquiry document, with the listing relation populated"}}}}}},"400":{"description":"Validation error — non-numeric id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden — you are neither the lister nor the renter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Inquiry not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric ID of the inquiry","schema":{"type":"string","pattern":"^\\d+$","minLength":1,"maxLength":20,"example":"123"}}]},"patch":{"summary":"Reply to an inquiry or change its status","description":"Two actions behind one endpoint, discriminated by `action`.\n\n- `{ action: \"reply\", body }` appends a message to the thread. The author side (`renter` / `lister`) is derived from who you are, never from the request.\n- `{ action: \"status\", status }` moves the inquiry along its lifecycle (`new` → `read` → `replied` → `accepted` / `declined` / `closed`).\n\nRestricted to the lister, the renter, or an admin.","tags":["Inquiries"],"responses":{"200":{"description":"The updated inquiry","content":{"application/json":{"schema":{"type":"object","properties":{"inquiry":{"type":"object","description":"The inquiry document, with the listing relation populated"}}}}}},"400":{"description":"Validation error — unknown action, or missing body/status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Unauthorized — authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden — you are not a party to this inquiry","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Inquiry not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"cookieAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Numeric ID of the inquiry","schema":{"type":"string","pattern":"^\\d+$","minLength":1,"maxLength":20,"example":"123"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["action","body"],"properties":{"action":{"type":"string","enum":["reply"]},"body":{"type":"string","minLength":1,"maxLength":4000,"description":"The reply text","example":"Hej Mette — ja, den er ledig fra 1. oktober. Vil du se den på lørdag?"}}},{"type":"object","required":["action","status"],"properties":{"action":{"type":"string","enum":["status"]},"status":{"type":"string","enum":["new","read","replied","accepted","declined","closed"],"description":"The status to move the inquiry to","example":"accepted"}}}]}}}}}},"/api/cart/apply-discount":{"post":{"summary":"Apply a discount code to a cart","description":"Validates and applies a discount code to a basket of boosts and plans. The caller must own the cart (via session) or supply the cart secret. Amounts are DKK øre — 14900 is 149,00 kr.","tags":["Cart"],"responses":{"200":{"description":"Discount applied successfully","content":{"application/json":{"schema":{"type":"object","required":["success","discount"],"properties":{"success":{"type":"boolean","enum":[true],"example":true},"discount":{"type":"object","required":["discountId","code","discountType","discountValue","maxDiscountAmount","discountAmount"],"properties":{"discountId":{"type":"integer","minimum":1,"description":"The internal ID of the discount code record","example":7},"code":{"type":"string","description":"The normalised discount code","example":"SOMMER20"},"discountType":{"type":"string","enum":["percentage","flat"],"description":"Whether the discount is a percentage or flat amount","example":"percentage"},"discountValue":{"type":"number","minimum":0,"description":"The discount value (percentage points or DKK øre)","example":20},"maxDiscountAmount":{"type":["number","null"],"minimum":0,"description":"Maximum discount cap in DKK øre (percentage type only)","example":20000},"discountAmount":{"type":"number","minimum":0,"description":"Calculated discount amount in DKK øre for the current cart","example":2980}}}}},"example":{"success":true,"discount":{"discountId":7,"code":"SOMMER20","discountType":"percentage","discountValue":20,"maxDiscountAmount":20000,"discountAmount":2980}}}}},"400":{"description":"Malformed request body, or a discount code that does not apply. The two are distinguishable: a rejected code carries `success: false`, a malformed body carries `details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"},"examples":{"rejectedCode":{"summary":"The code exists but does not apply","value":{"success":false,"error":"This discount code has expired"}},"malformedBody":{"summary":"The request body failed validation","value":{"error":"Invalid request body","details":{"code":"Discount code is required"}}}}}}},"403":{"description":"Not authorised to modify this cart","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Not authorized"}}}},"404":{"description":"Cart not found or already purchased","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Cart not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Internal server error"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code","cartId"],"properties":{"code":{"type":"string","minLength":1,"maxLength":50,"description":"The discount code to apply to the cart","example":"SOMMER20"},"cartId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"The ID of the cart to apply the discount to","example":42},"secret":{"type":"string","minLength":1,"maxLength":255,"description":"Cart secret for guest users who are not authenticated but own the cart","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}}},"example":{"code":"SOMMER20","cartId":42}}}},"x-dashboard-trigger":"Use from the basket or /checkout by entering a discount code and pressing Apply."}},"/api/cart/remove-discount":{"post":{"summary":"Remove a discount code from a cart","description":"Removes any previously applied discount code from a basket of boosts and plans. The caller must own the cart (via session) or supply the cart secret.","tags":["Cart"],"responses":{"200":{"description":"Discount removed successfully","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","enum":[true],"example":true}}},"example":{"success":true}}}},"400":{"description":"Missing or invalid cart ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"},"example":{"success":false,"error":"Cart ID is required"}}}},"403":{"description":"Not authorised to modify this cart","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":"Not authorized"}}}},"404":{"description":"Cart not found or already purchased","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":"Cart not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":"Failed to remove discount"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cartId"],"properties":{"cartId":{"type":"integer","minimum":1,"maximum":2147483647,"description":"The ID of the cart to remove the discount from","example":42},"secret":{"type":"string","minLength":1,"maxLength":255,"description":"Cart secret for guest users who are not authenticated but own the cart","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}}},"example":{"cartId":42}}}},"x-dashboard-trigger":"Use from the basket or /checkout by clicking the remove button next to the applied code."}},"/api/discount/validate":{"post":{"summary":"Validate a discount code","description":"Validates a discount code for a boost or plan purchase: it must exist, be active, sit inside its valid date range, be under its usage limits and meet the minimum order amount. Optionally calculates the discount when a subtotal is supplied. All amounts are DKK øre — 14900 is 149,00 kr. Rate limited to 10 requests per IP per minute.","tags":["Discounts"],"responses":{"200":{"description":"Validation result. Both valid and invalid codes return 200; check the `valid` field.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["valid","discountId","code","discountType","discountValue","maxDiscountAmount","discountAmount"],"properties":{"valid":{"type":"boolean","enum":[true]},"discountId":{"type":"integer","minimum":1,"description":"Internal ID of the discount code record","example":3},"code":{"type":"string","description":"The normalised discount code","example":"VELKOMMEN10"},"discountType":{"type":"string","enum":["percentage","flat"],"example":"percentage"},"discountValue":{"type":"number","minimum":0,"description":"Discount value (percentage points or DKK øre)","example":10},"maxDiscountAmount":{"type":["number","null"],"minimum":0,"description":"Maximum discount cap in DKK øre","example":null},"discountAmount":{"type":"number","minimum":0,"description":"Calculated discount amount in DKK øre","example":1490}}},{"type":"object","required":["valid","error"],"properties":{"valid":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"Human-readable error message","example":"Invalid discount code"}}}]},"examples":{"valid":{"summary":"Valid discount code","value":{"valid":true,"discountId":3,"code":"VELKOMMEN10","discountType":"percentage","discountValue":10,"maxDiscountAmount":null,"discountAmount":1490}},"invalid":{"summary":"Invalid discount code","value":{"valid":false,"error":"Invalid discount code"}},"expired":{"summary":"Expired discount code","value":{"valid":false,"error":"This discount code has expired"}}}}}},"400":{"description":"Missing or invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"},"example":{"valid":false,"error":"Discount code is required"}}}},"429":{"description":"Rate limit exceeded (10 requests per minute per IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"valid":false,"error":"Too many attempts. Please try again later."}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"valid":false,"error":"Failed to validate discount code"}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code"],"properties":{"code":{"type":"string","minLength":1,"maxLength":50,"description":"The discount code to validate","example":"VELKOMMEN10"},"customerEmail":{"type":"string","format":"email","minLength":3,"maxLength":320,"description":"Customer email for per-customer usage limit checks","example":"mette@eksempel.dk"},"subtotal":{"type":"integer","minimum":0,"maximum":99999999,"description":"Cart subtotal in DKK øre for the minimum-order check and discount calculation","example":14900}}},"example":{"code":"VELKOMMEN10","customerEmail":"mette@eksempel.dk","subtotal":14900}}}},"x-rate-limit":{"window":"60s","max":10}}},"/api/payment-amount":{"post":{"summary":"Calculate final payment amount with optional discount","description":"Retrieves the current amount of a Stripe PaymentIntent for a boost or plan purchase and optionally applies a discount code. Every amount is DKK øre — 14900 is 149,00 kr. The PaymentIntent must still be in the `requires_payment_method` status. For authenticated users, ownership is verified via the Stripe customer. For guests, the PaymentIntent ID acts as authorization. Rate limited to 20 requests per IP per minute.","tags":["Payments"],"responses":{"200":{"description":"Payment amount calculated successfully","content":{"application/json":{"schema":{"type":"object","required":["amount","currency","discountAmount"],"properties":{"amount":{"type":"integer","minimum":0,"description":"Final payment amount in DKK øre after any discount (11920 = 119,20 kr)","example":11920},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Three-letter currency code as Stripe reports it. Lejested only ever charges Danish kroner.","example":"usd"},"discountAmount":{"type":"integer","minimum":0,"description":"Discount amount in DKK øre","example":2980}}},"example":{"amount":11920,"currency":"usd","discountAmount":2980}}}},"400":{"description":"Missing paymentIntentId, invalid payment state, or discount error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"},"examples":{"missingId":{"summary":"Missing payment intent ID","value":{"error":"paymentIntentId is required"}},"alreadyInitiated":{"summary":"Payment already in progress","value":{"error":"Cannot modify payment amount after payment has been initiated","amount":14900,"currency":"usd"}}}}}},"403":{"description":"PaymentIntent does not belong to the authenticated user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Not authorized"}}}},"429":{"description":"Rate limit exceeded (20 requests per minute per IP)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Too many requests. Please try again later."}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Failed to retrieve payment amount"}}}}},"security":[{"cookieAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["paymentIntentId"],"properties":{"paymentIntentId":{"type":"string","minLength":1,"maxLength":255,"description":"The Stripe PaymentIntent ID","example":"pi_3Oc0X2Abc123def456"},"discountCode":{"type":"string","minLength":1,"maxLength":50,"description":"Optional discount code to apply to the payment","example":"SOMMER20"}}},"example":{"paymentIntentId":"pi_3Oc0X2Abc123def456","discountCode":"SOMMER20"}}}},"x-rate-limit":{"window":"60s","max":20}}},"/api/search":{"get":{"summary":"Search listings, categories and guides","description":"Full-text search across published rental listings (title, summary, city), the category tree and the guide archive. Listings are matched in Payload and re-ordered by the SaaSignal ranking index when it is available — if SaaSignal is unconfigured or unreachable the endpoint still returns Payload matches rather than failing. Returns empty arrays when no query is supplied. Prices are in whole Danish kroner.","tags":["Search"],"responses":{"200":{"description":"Matched listings, categories and guides","content":{"application/json":{"schema":{"type":"object","properties":{"hits":{"type":"array","maxItems":20,"description":"Listing results (alias for listings)","items":{"type":"object","properties":{"id":{"type":"string","example":"42"},"score":{"type":"number","example":0.95},"document":{"type":"object","properties":{"title":{"type":"string","example":"Ford Transit kassevogn med lift"},"name":{"type":"string","description":"Alias of title","example":"Ford Transit kassevogn med lift"},"slug":{"type":"string","example":"ford-transit-kassevogn-med-lift"},"summary":{"type":"string","example":"3,5 t, lift bagpå, hentes på Amager. Ren og klar."},"description":{"type":"string","description":"Alias of summary"},"price":{"type":"number","description":"Whole Danish kroner. Never minor units.","example":450},"priceUnit":{"type":"string","enum":["hour","day","week","month","year","fixed"],"example":"day"},"currency":{"type":"string","enum":["DKK"],"example":"DKK"},"city":{"type":"string","example":"København"},"category":{"type":"string","example":"varevogn"},"categoryName":{"type":"string","example":"Varevogn"},"imageUrl":{"type":"string","example":"/media/transit-1.jpg"}}}}}},"listings":{"type":"array","maxItems":20,"description":"Listing results","items":{"type":"object","properties":{"id":{"type":"string","example":"42"},"score":{"type":"number","example":0.95},"document":{"type":"object","properties":{"title":{"type":"string","example":"Ford Transit kassevogn med lift"},"name":{"type":"string","description":"Alias of title","example":"Ford Transit kassevogn med lift"},"slug":{"type":"string","example":"ford-transit-kassevogn-med-lift"},"summary":{"type":"string","example":"3,5 t, lift bagpå, hentes på Amager. Ren og klar."},"description":{"type":"string","description":"Alias of summary"},"price":{"type":"number","description":"Whole Danish kroner. Never minor units.","example":450},"priceUnit":{"type":"string","enum":["hour","day","week","month","year","fixed"],"example":"day"},"currency":{"type":"string","enum":["DKK"],"example":"DKK"},"city":{"type":"string","example":"København"},"category":{"type":"string","example":"varevogn"},"categoryName":{"type":"string","example":"Varevogn"},"imageUrl":{"type":"string","example":"/media/transit-1.jpg"}}}}}},"categories":{"type":"array","maxItems":5,"description":"Matching categories","items":{"type":"object","properties":{"id":{"type":"string","example":"7"},"name":{"type":"string","example":"Varevogn"},"slug":{"type":"string","example":"varevogn"},"icon":{"type":"string","example":"Car"},"description":{"type":"string","example":"Kassevogne og flyttebiler i hele landet."}}}},"blogs":{"type":"array","maxItems":5,"description":"Matching guides","items":{"type":"object","properties":{"id":{"type":"string","example":"3"},"title":{"type":"string","example":"Tjekliste før du lejer bil ud"},"slug":{"type":"string","example":"tjekliste-foer-du-lejer-bil-ud"},"excerpt":{"type":"string","example":"Otte ting du skal have styr på inden nøglen skifter hænder."},"category":{"type":"string","example":"udlejning"},"coverImageUrl":{"type":"string","example":"/media/guide-bil.jpg"}}}}}},"example":{"hits":[{"id":"42","score":0.95,"document":{"title":"Ford Transit kassevogn med lift","name":"Ford Transit kassevogn med lift","slug":"ford-transit-kassevogn-med-lift","summary":"3,5 t, lift bagpå, hentes på Amager.","price":450,"priceUnit":"day","currency":"DKK","city":"København","category":"varevogn","categoryName":"Varevogn"}}],"listings":[],"categories":[{"id":"7","name":"Varevogn","slug":"varevogn","icon":"Car"}],"blogs":[]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Internal server error"}}}}},"security":[],"parameters":[{"name":"q","in":"query","required":true,"description":"Full-text search query","schema":{"type":"string","minLength":1,"maxLength":200,"example":"kassevogn aarhus"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results per group (default 10, max 20)","schema":{"type":"integer","minimum":1,"maximum":20,"default":10,"example":10}},{"name":"locale","in":"query","required":false,"description":"Locale for editorial content (categories, guides)","schema":{"type":"string","enum":["da","en"],"default":"da","example":"da"}}]}},"/api/search/suggest":{"get":{"summary":"Autocomplete search suggestions","description":"Prefix-based autocomplete for the listing search box. Served from the SaaSignal suggest index when available, falling back to Payload prefix matches on published listing titles and category names so the type-ahead keeps working without SaaSignal configured. Returns an empty array when no prefix is supplied.","tags":["Search"],"responses":{"200":{"description":"Autocomplete suggestions","content":{"application/json":{"schema":{"type":"object","properties":{"suggestions":{"type":"array","maxItems":10,"description":"Autocomplete suggestion results","items":{"type":"object","properties":{"text":{"type":"string","description":"Suggested search completion text","example":"Kassevogn med lift"},"score":{"type":"number","description":"Relevance score, ranked suggestions only","example":0.92},"kind":{"type":"string","enum":["listing","category"],"example":"listing"},"slug":{"type":"string","description":"Target slug, when the suggestion resolves","example":"kassevogn-med-lift"}}}}}},"example":{"suggestions":[{"text":"Varevogn","kind":"category","slug":"varevogn"},{"text":"Kassevogn med lift","kind":"listing","slug":"kassevogn-med-lift"}]}}}},"429":{"description":"Too many requests — 30 suggestions per minute per IP","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Too many requests"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Internal server error"}}}}},"security":[],"parameters":[{"name":"q","in":"query","required":true,"description":"Prefix text for autocomplete suggestions","schema":{"type":"string","minLength":1,"maxLength":200,"example":"kass"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of suggestions (default 5, max 10)","schema":{"type":"integer","minimum":1,"maximum":10,"default":5,"example":5}},{"name":"locale","in":"query","required":false,"description":"Locale for category names in the fallback suggestions","schema":{"type":"string","enum":["da","en"],"default":"da","example":"da"}}],"x-rate-limit":{"window":"1m","max":30}}},"/api/recommendations/related/{listingId}":{"get":{"summary":"Get similar listings","description":"Returns published listings similar to the given one — same category, comparable price band, source listing excluded. Candidates come from `ListingService.similar`; the SaaSignal ranking engine only reorders them, so an unconfigured or stale index costs relevance but never correctness and never fails the request. Returns 404 when the source listing does not exist. Prices are in whole Danish kroner.","tags":["Recommendations"],"responses":{"200":{"description":"Similar listings","content":{"application/json":{"schema":{"type":"object","properties":{"listings":{"type":"array","maxItems":12,"description":"Listings similar to the source listing","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique listing identifier","example":15},"title":{"type":"string","example":"Mercedes Sprinter kassevogn"},"slug":{"type":"string","example":"mercedes-sprinter-kassevogn"},"summary":{"type":"string","example":"Lang model, hentes i Valby."},"price":{"type":"number","description":"Whole Danish kroner","example":525},"priceUnit":{"type":"string","enum":["hour","day","week","month","year","fixed"],"example":"day"}}}}}},"example":{"listings":[{"id":15,"title":"Mercedes Sprinter kassevogn","slug":"mercedes-sprinter-kassevogn","summary":"Lang model, hentes i Valby.","price":525,"priceUnit":"day"}]}}}},"400":{"description":"Validation error — listingId is not a positive integer","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"404":{"description":"Listing not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"listings not found"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"parameters":[{"name":"listingId","in":"path","required":true,"description":"The numeric ID of the listing to find similar listings for","schema":{"type":"string","minLength":1,"maxLength":20,"example":"42"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of similar listings (default 6, max 12)","schema":{"type":"integer","minimum":1,"maximum":12,"default":6,"example":6}}]}},"/api/openapi.json":{"get":{"summary":"OpenAPI 3.1 specification (JSON)","description":"Returns this API's full OpenAPI 3.1 specification as JSON. Use this to generate client SDKs, import into API tools (Postman, Insomnia), or power interactive documentation UIs.","tags":["Documentation"],"security":[],"responses":{"200":{"description":"OpenAPI 3.1 JSON specification","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/llms.txt":{"get":{"summary":"LLM-friendly API reference (plain text)","description":"Returns the full API reference as structured plain text optimized for LLM context windows. Use this to feed API documentation into AI assistants, chatbots, or code generators.","tags":["Documentation"],"security":[],"responses":{"200":{"description":"Plain-text API reference","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/to-humans.md":{"get":{"summary":"Human-readable API reference (Markdown)","description":"Returns the full API reference as a Markdown document with table of contents, request/response tables, cURL examples, and error reference. Suitable for rendering in documentation sites or reading directly.","tags":["Documentation"],"security":[],"responses":{"200":{"description":"Markdown API reference","content":{"text/markdown":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"supportedTimezones":{"type":"string","example":"Europe/Prague"},"User":{"type":"object","additionalProperties":false,"title":"User","properties":{"id":{"type":"string"},"name":{"description":"Users chosen display name","type":"string"},"email":{"description":"The email of the user","type":"string"},"emailVerified":{"description":"Whether the email of the user has been verified","type":"boolean"},"image":{"description":"The image of the user","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"role":{"description":"The role/ roles of the user","type":["array","null"],"items":{"type":"string","enum":["admin","user"]}},"account":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Account"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"session":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Session"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"stripeCustomerId":{"type":["string","null"]},"accountType":{"description":"Bestemmer hvordan brugerens annoncer præsenteres for lejere.","type":"string","enum":["private","business","agent"]},"displayName":{"description":"Vises på offentlige annoncer og profilsider.","type":["string","null"]},"companyName":{"type":["string","null"]},"cvr":{"description":"CVR-nummer","type":["string","null"]},"phone":{"type":["string","null"]},"bio":{"description":"Kort præsentation på den offentlige profil.","type":["string","null"]},"city":{"type":["string","null"]},"verified":{"description":"Sættes af Lejested efter manuel verificering.","type":["boolean","null"]},"responseRate":{"description":"Andel af forespørgsler brugeren har svaret på, i procent.","type":["number","null"]},"responseTimeHours":{"description":"Gennemsnitlig svartid i timer.","type":["number","null"]},"collection":{"type":"string","enum":["users"]}},"required":["id","name","email","emailVerified","createdAt","updatedAt","accountType","collection"]},"Session":{"type":"object","additionalProperties":false,"title":"Session","properties":{"id":{"type":"string"},"expiresAt":{"description":"The date and time when the session will expire","type":"string"},"token":{"description":"The unique session token","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"ipAddress":{"description":"The IP address of the device","type":["string","null"]},"userAgent":{"description":"The user agent information of the device","type":["string","null"]},"user":{"description":"The user that the session belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["id","expiresAt","token","createdAt","updatedAt","user"],"description":"Sessions are active sessions for users. They are used to authenticate users with a session token"},"Account":{"type":"object","additionalProperties":false,"title":"Account","properties":{"id":{"type":"string"},"accountId":{"description":"The id of the account as provided by the SSO or equal to userId for credential accounts","type":"string"},"providerId":{"description":"The id of the provider as provided by the SSO","type":"string"},"user":{"description":"The user that the account belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"accessToken":{"description":"The access token of the account. Returned by the provider","type":["string","null"]},"refreshToken":{"description":"The refresh token of the account. Returned by the provider","type":["string","null"]},"idToken":{"description":"The id token for the account. Returned by the provider","type":["string","null"]},"accessTokenExpiresAt":{"description":"The date and time when the access token will expire","type":["string","null"]},"refreshTokenExpiresAt":{"description":"The date and time when the refresh token will expire","type":["string","null"]},"scope":{"description":"The scope of the account. Returned by the provider","type":["string","null"]},"password":{"description":"The hashed password of the account. Mainly used for email and password authentication","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","accountId","providerId","user","createdAt","updatedAt"],"description":"Accounts are used to store user accounts for authentication providers"},"Verification":{"type":"object","additionalProperties":false,"title":"Verification","properties":{"id":{"type":"string"},"identifier":{"description":"The identifier of the verification request","type":"string"},"value":{"description":"The value to be verified","type":"string"},"expiresAt":{"description":"The date and time when the verification request will expire","type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","identifier","value","expiresAt","createdAt","updatedAt"],"description":"Verifications are used to verify authentication requests"},"Passkey":{"type":"object","additionalProperties":false,"title":"Passkey","properties":{"id":{"type":"string"},"name":{"description":"The name of the passkey","type":["string","null"]},"publicKey":{"description":"The public key of the passkey","type":"string"},"user":{"description":"The user that the passkey belongs to","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"credentialId":{"description":"The unique identifier of the registered credential","type":"string"},"counter":{"description":"The counter of the passkey","type":"number"},"deviceType":{"description":"The type of device used to register the passkey","type":"string"},"backedUp":{"description":"Whether the passkey is backed up","type":"boolean"},"transports":{"description":"The transports used to register the passkey","type":"string"},"createdAt":{"type":"string"},"aaguid":{"type":["string","null"]},"updatedAt":{"type":"string"}},"required":["id","publicKey","user","credentialId","counter","deviceType","backedUp","transports","createdAt","updatedAt"],"description":"Passkeys are used to authenticate users"},"ApiKey":{"type":"object","additionalProperties":false,"title":"Api Key","properties":{"id":{"type":"string"},"name":{"description":"The name of the API key.","type":["string","null"]},"start":{"description":"The starting characters of the API key.","type":["string","null"]},"prefix":{"description":"The API Key prefix. Stored as plain text.","type":["string","null"]},"key":{"description":"The hashed API key itself.","type":"string"},"user":{"description":"The user associated with the API key.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"refillInterval":{"description":"The interval to refill the key in milliseconds.","type":["number","null"]},"refillAmount":{"description":"The amount to refill the remaining count of the key.","type":["number","null"]},"lastRefillAt":{"description":"The date and time when the key was last refilled.","type":["string","null"]},"enabled":{"description":"Whether the API key is enabled.","type":["boolean","null"]},"rateLimitEnabled":{"description":"Whether the API key has rate limiting enabled.","type":["boolean","null"]},"rateLimitTimeWindow":{"description":"The time window in milliseconds for the rate limit.","type":["number","null"]},"rateLimitMax":{"description":"The maximum number of requests allowed within the rate limit time window.","type":["number","null"]},"requestCount":{"description":"The number of requests made within the rate limit time window.","type":["number","null"]},"remaining":{"description":"The number of requests remaining.","type":["number","null"]},"lastRequest":{"description":"The date and time of the last request made to the key.","type":["string","null"]},"expiresAt":{"description":"The date and time of when the API key will expire.","type":["string","null"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"permissions":{"description":"The permissions for the API key.","type":["string","null"]},"metadata":{"description":"Any additional metadata you want to store with the key.","type":["string","null"]}},"required":["id","key","user","createdAt","updatedAt"],"description":"API keys are used to authenticate requests to the API."},"AdminInvitation":{"type":"object","additionalProperties":false,"title":"Admin Invitation","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["admin","user"]},"token":{"type":"string"},"url":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","role","token","updatedAt","createdAt"]},"Category":{"type":"object","additionalProperties":false,"title":"Category","properties":{"id":{"type":"string"},"name":{"description":"Display name of the category, e.g. 'Lejlighed' or 'Elværktøj'.","type":"string"},"slug":{"description":"URL segment used by /kategori/[slug] and the ?kategori= search filter. Derived from the Danish name if left blank.","type":"string"},"description":{"description":"Intro paragraph shown at the top of the category landing page. Doubles as the SEO meta description when no override is set.","type":["string","null"]},"icon":{"description":"A lucide-react icon name in PascalCase — e.g. Home, Car, Wrench, PartyPopper, Tent, Camera. Stored as a string rather than an upload so the category tiles render as crisp vector icons that follow the theme colour, and so the whole tree can be fetched without a media join.","type":["string","null"]},"image":{"description":"Optional photo for the category landing hero. The tiles on the front page use `icon`, not this.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Media"}]},"parent":{"description":"Leave empty for one of the six top-level branches. Set it to file this category as a leaf under that branch.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Category"}]},"order":{"description":"Manual sort order within the parent (lower first). The tree is curated, not alphabetical — 'Lejlighed' should outrank 'P-plads' regardless of spelling.","type":["number","null"]},"featured":{"description":"Show this category in the front-page category grid and the header quick-links.","type":["boolean","null"]},"attributeSchema":{"description":"Per-category spec fields. This one array drives three surfaces at once: the create-listing wizard renders an input per entry, the listing detail page renders the spec table, and the search rail renders a filter for every entry marked filterable. Define it on the leaf category (Lejlighed → m2, rooms, floor…), not on the branch.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Stable machine key, lowerCamelCase — e.g. m2, rooms, energyLabel. This is what ends up in listings.attributes[].key and in the ?attr. query params, so renaming it orphans existing listings and breaks shared filter URLs. Choose once.","type":"string"},"label":{"description":"Human label shown next to the value, e.g. 'Boligareal' / 'Floor area'.","type":"string"},"type":{"description":"Decides which input the wizard renders and which filter control the search rail renders (number → range slider, select → checkbox list, boolean → switch).","type":"string","enum":["text","number","select","boolean"]},"options":{"description":"The allowed choices — only meaningful when type is 'Select'.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"label":{"type":"string"},"value":{"description":"Machine value stored on the listing and used in filter URLs.","type":"string"},"id":{"type":["string","null"]}},"required":["label","value"]}},"unit":{"description":"Suffix appended when the value is displayed, e.g. m², km, kW, personer. Kept out of the value itself so numbers stay sortable and filterable.","type":["string","null"]},"required":{"description":"Block the create-listing wizard from advancing until this attribute is filled.","type":["boolean","null"]},"filterable":{"description":"Expose this attribute as a filter on /lej and the category landing page. Keep it off for attributes nobody searches by (e.g. 'etage') so the rail stays short.","type":["boolean","null"]},"id":{"type":["string","null"]}},"required":["key","label","type"]}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","name","slug","updatedAt","createdAt"],"description":"The rental taxonomy. A self-referencing tree: six top-level branches (Bolig & lokaler, Køretøjer, Værktøj & maskiner, Fest & event, Fritid & udendørs, Elektronik & medie) each holding the leaf categories a listing is actually filed under."},"Listing":{"type":"object","additionalProperties":false,"title":"Listing","properties":{"id":{"type":"string"},"title":{"description":"Headline shown on the listing card and detail page, e.g. '3-værelses lejlighed på Østerbro' or 'Ford Transit kassevogn'.","type":"string"},"slug":{"description":"URL segment for /lej/[slug]. Derived from the title when left blank.","type":"string"},"summary":{"description":"One or two sentences. Used on the listing card, in search results and as the meta description — keep it concrete ('60 m², altan mod syd, 5 min til metro').","type":["string","null"]},"description":{"description":"The full description: what it is, what's included, house rules, pickup/delivery.","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"category":{"description":"Always the *leaf* category (Lejlighed, not Bolig & lokaler). The leaf carries the attributeSchema that defines this listing's spec fields and filters.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Category"}]},"attributes":{"description":"Denormalised copy of the category's attributeSchema with this listing's answers filled in. Denormalised on purpose: the spec table and the filter query must keep working even after an admin edits or reorders the category schema, and reading a listing must never require a join to categories.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"key":{"description":"Matches `attributeSchema[].key` on the category — this is the join key for filtering.","type":"string"},"label":{"description":"Label snapshotted at save time so old listings keep rendering sensibly if the category schema is relabelled.","type":"string"},"value":{"description":"Stored as a display string regardless of the declared type ('62', 'true', 'diesel'). The canonical type lives on the category's attributeSchema; the API casts on the way in and out.","type":["string","null"]},"id":{"type":["string","null"]}},"required":["key","label"]}},"images":{"description":"The first photo is the cover used on cards and in link previews. Drag to reorder.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"image":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Media"}]},"alt":{"description":"What the photo shows, for screen readers and SEO — 'Stue med altandør mod gården', not 'billede 1'.","type":["string","null"]},"id":{"type":["string","null"]}},"required":["image"]}},"price":{"description":"Price in whole Danish kroner — 12400, not 1240000. Listings are never charged on-site, so there is no Stripe minor-unit conversion to respect; storing kroner keeps the number human-readable in the admin and formats straight to '12.400 kr'.","type":"number"},"priceUnit":{"description":"What the price buys. Also decides which date inputs the inquiry form shows (hourly rentals ask for times, monthly ones ask for a move-in date).","type":"string","enum":["hour","day","week","month","year","fixed"]},"deposit":{"description":"Refundable deposit in whole kroner. Leave blank if none — the detail page then says 'Intet depositum', which converts better than an ambiguous 0.","type":["number","null"]},"negotiable":{"description":"Show a 'Pris kan forhandles' badge on the listing.","type":["boolean","null"]},"minRentalPeriod":{"description":"Shortest period you will rent this out for.","type":["number","null"]},"maxRentalPeriod":{"description":"Longest period. Leave blank for no limit.","type":["number","null"]},"rentalPeriodUnit":{"description":"Unit for the two period fields. Kept separate from `priceUnit` because a van priced per day is often rented for a minimum of 4 hours.","type":["string","null"],"enum":["hour","day","week","month"]},"location":{"description":"Where the item is. City, postal code and region are indexed because they carry almost every search on a Danish marketplace.","type":"object","additionalProperties":false,"properties":{"address":{"description":"Street and number. Only ever shown publicly when `showExactAddress` is on.","type":["string","null"]},"city":{"description":"e.g. København, Aarhus.","type":["string","null"]},"postalCode":{"description":"Danish 4-digit postal code. Text rather than number so leading zeros survive and prefix search ('21%') stays possible.","type":["string","null"]},"region":{"description":"One of the five Danish administrative regions. Gives the search rail a coarse geography filter that works without a radius query, and gives /kategori pages something to segment by.","type":["string","null"],"enum":["hovedstaden","sjaelland","syddanmark","midtjylland","nordjylland"]},"country":{"description":"ISO 3166-1 alpha-2. Denmark-only today; the field exists so a Nordic expansion isn't a migration.","type":["string","null"]},"lat":{"description":"Latitude for the map view and radius search.","type":["number","null"]},"lng":{"description":"Longitude.","type":["number","null"]},"showExactAddress":{"description":"Off by default, and that default is deliberate: most listers are private people renting out of their own home. When off, the detail page draws an approximate circle instead of a pin and hides the street address until an inquiry is accepted.","type":["boolean","null"]}},"required":[]},"availableFrom":{"description":"First date it can be rented. Blank means immediately.","type":["string","null"]},"availableTo":{"description":"Last date. Blank means open-ended.","type":["string","null"]},"condition":{"description":"Physical condition. Not relevant for property and spaces — the create-listing wizard hides it for those branches. It is deliberately NOT hidden here via `admin.condition`: that callback runs client-side against the raw form data, where `category` is just an opaque relationship ID with no way to know which branch it belongs to.","type":["string","null"],"enum":["new","like-new","good","fair"]},"features":{"description":"Free-form amenity chips shown under the description — 'Altan', 'Vaskemaskine', 'Anhængertræk', 'Stativ medfølger'. Free-form on purpose: the structured, filterable facts belong in `attributes`; this is the long tail that would bloat every category schema.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"value":{"type":"string"},"id":{"type":["string","null"]}},"required":["value"]}},"owner":{"description":"The lister. Drives read/update access, the public profile at /profil/[id], and who receives the inquiry email.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"listerType":{"description":"Snapshotted per listing rather than read from the user, because the same account legitimately lists both privately and on behalf of a company. Renters filter on this — 'kun private' is one of the most-used filters on Danish marketplaces.","type":"string","enum":["private","business","agent"]},"contactPreference":{"description":"Defaults to platform-only so a lister never accidentally publishes their phone number.","type":["string","null"],"enum":["platform","phone","both"]},"contactPhone":{"description":"Only rendered when contactPreference allows phone contact.","type":["string","null"]},"status":{"description":"Only 'Udgivet' is publicly readable. 'Udlejet' keeps the listing in the owner's dashboard and in the lister's public history without it competing in search.","type":"string","enum":["draft","pending","published","rented","archived"]},"featured":{"description":"Boosted placement. Set by the boost fulfilment flow after a successful Stripe payment (server-side, overrideAccess), never by the lister.","type":["boolean","null"]},"featuredUntil":{"description":"When the purchased boost expires. Queries must check both `featured` and this date so an expired boost stops ranking even before the cleanup job runs.","type":["string","null"]},"viewCount":{"description":"Incremented by ListingService on detail-page views (overrideAccess).","type":["number","null"]},"inquiryCount":{"description":"Kept in sync by the afterChange hook on the inquiries collection.","type":["number","null"]},"publishedAt":{"description":"Stamped automatically the first time the listing is published; drives 'Oprettet …' and the default newest-first sort.","type":["string","null"]},"meta":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"description":"Maximum upload file size: 12MB. Recommended file size for images is <500KB.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Media"}]}},"required":[]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","title","slug","category","price","priceUnit","owner","listerType","status","updatedAt","createdAt"],"description":"Everything people rent out on Lejested — apartments, vans, tools, party tents, cameras. User-generated: the owner writes it, admins moderate it."},"Inquiry":{"type":"object","additionalProperties":false,"title":"Inquiry","properties":{"id":{"type":"string"},"listing":{"description":"The listing this request is about.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Listing"}]},"lister":{"description":"Auto-filled from listing.owner on create. Denormalised so the inbox query is a flat index lookup.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/User"}]},"renter":{"description":"Auto-filled from the session. Empty for guest inquiries — that is expected, not an error.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/User"}]},"name":{"description":"Captured on the form even for signed-in users, so a lister always sees the name the renter chose to give.","type":"string"},"email":{"description":"Where the lister's reply goes.","type":"string"},"phone":{"description":"Optional. Listers with contactPreference 'phone' or 'both' convert noticeably better when it's there, so the form asks — but never requires it.","type":["string","null"]},"message":{"description":"The opening message. The form pre-fills a polite Danish template the renter can edit.","type":"string"},"startDate":{"description":"Requested start of the rental period.","type":["string","null"]},"endDate":{"description":"Requested end. Left blank for open-ended rentals such as an apartment.","type":["string","null"]},"partySize":{"description":"How many people — asked only for venues and event categories (Festlokale, Telte).","type":["number","null"]},"quantity":{"description":"How many units — asked only where a listing is countable (borde & stole, stilladser). Separate from partySize because 40 guests and 40 chairs are different questions and a lister needs to see which was asked.","type":["number","null"]},"status":{"description":"Drives the inbox pills and the lister's response-rate stat. 'read' is set automatically when the thread is opened; the rest are explicit lister actions.","type":"string","enum":["new","read","replied","accepted","declined","closed"]},"messages":{"description":"The conversation after the opening message. Stored as an array on the inquiry rather than a separate collection: threads are short, always read whole, and never queried across inquiries — a join table would buy nothing and cost a query per thread.","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"author":{"description":"Which side wrote this. A role rather than a user relationship, so guest replies via the emailed link still render on the correct side of the thread.","type":"string","enum":["renter","lister"]},"body":{"type":"string"},"sentAt":{"type":["string","null"]},"id":{"type":["string","null"]}},"required":["author","body"]}},"source":{"description":"Where the inquiry came from — 'listing-detail', 'listing-card', 'profile'. Set by the API route, never by the client, so it stays trustworthy as an attribution signal.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","listing","name","email","message","status","updatedAt","createdAt"],"description":"Rental requests sent from a renter to a lister. This is Lejested's conversion event — no money changes hands on-site, so an inquiry is the transaction."},"SavedListing":{"type":"object","additionalProperties":false,"title":"Saved Listing","properties":{"id":{"type":"string"},"customer":{"description":"The user who saved this listing.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"listing":{"description":"The saved listing. Deliberately no variant relationship: a listing is one specific physical thing in one specific place, so there is nothing to pick a size or colour of.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Listing"}]},"addedAt":{"description":"When it was saved. /konto/gemte sorts newest-first on this rather than on createdAt so the ordering survives any future re-save behaviour.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","customer","listing","updatedAt","createdAt"],"description":"Listings a renter has bookmarked, shown at /konto/gemte. A shortlist, not a cart — nothing here is ever charged."},"Review":{"type":"object","additionalProperties":false,"title":"Review","properties":{"id":{"type":"string"},"listing":{"description":"The listing that was rented. The lister is derived from listing.owner rather than stored again here, so a review can never point at a different person than the listing it belongs to.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Listing"}]},"customer":{"description":"The renter who wrote this review.","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]},"rating":{"description":"Star rating from 1 (lowest) to 5 (highest).","type":"number"},"title":{"description":"Short headline summarising the rental experience.","type":"string"},"body":{"description":"The review itself — was it as described, how was the handover, would you rent from this person again.","type":"string"},"status":{"description":"Moderation status controlling public visibility of the review.","type":"string","enum":["pending","approved","rejected"]},"verifiedRental":{"description":"Set when the reviewer has an accepted inquiry on this listing, i.e. they demonstrably arranged the rental. Renamed from the starter kit's `verifiedPurchase`: nothing is ever purchased on Lejested, so 'verified purchase' would be a badge that can never truthfully be earned.","type":["boolean","null"]},"helpfulCount":{"description":"Number of users who found this review helpful","type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","listing","customer","rating","title","body","status","updatedAt","createdAt"],"description":"Reviews renters leave after a rental. Attached to a listing, but read as a verdict on the lister — they are aggregated onto the public profile at /profil/[id] via the listings that user owns."},"Guide":{"type":"object","additionalProperties":false,"title":"Guide","properties":{"id":{"type":"string"},"title":{"description":"The headline of the guide, shown in the /blogs index and on the detail page.","type":"string"},"slug":{"description":"URL segment for /blogs/[slug], e.g. saadan-skriver-du-en-annonce.","type":"string"},"excerpt":{"description":"Brief summary shown on the guide card and used as the meta description (max 300 chars).","type":"string"},"coverImage":{"description":"Cover image for this guide.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Media"}]},"content":{"description":"Main body of the guide, in rich text.","type":"object","properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"author":{"description":"Byline. Defaults to the house name; use a person's name for guides where the expertise is the point.","type":"string"},"category":{"description":"Who the guide is written for. Drives the filter tabs on /blogs.","type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"tags":{"description":"Free-form tags for cross-linking related guides (e.g. depositum, fremleje, bil).","type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"string"},"id":{"type":["string","null"]}},"required":["tag"]}},"status":{"description":"Only published guides appear on the public site.","type":"string","enum":["draft","published"]},"publishedAt":{"description":"When this guide should be considered published.","type":["string","null"]},"meta":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"description":{"type":["string","null"]},"image":{"description":"Maximum upload file size: 12MB. Recommended file size for images is <500KB.","oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Media"}]}},"required":[]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","title","slug","excerpt","content","author","category","status","updatedAt","createdAt"],"description":"Practical guides for the Danish rental market — how to write an annonce that gets rented, what a udlejer may charge in depositum, the rules on fremleje. Published at /blogs."},"FAQ":{"type":"object","additionalProperties":false,"title":"FAQ","properties":{"id":{"type":"string"},"question":{"description":"The question, phrased the way a user would actually ask it ('Hvad koster det at oprette en annonce?'), not as an internal topic label.","type":"string"},"answer":{"description":"A direct answer in du-form. Lead with the answer, then the caveat — this text is also the source for the FAQPage structured data.","type":"string"},"order":{"description":"Display order (lower numbers appear first)","type":"number"},"isActive":{"description":"Uncheck to retire a question without deleting it — useful when a rule changes and the old answer may need to come back.","type":["boolean","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","question","answer","order","updatedAt","createdAt"],"description":"Frequently asked questions covering both sides of the marketplace — renters asking how contact works and what a depositum is, listers asking what it costs to advertise. Rendered on /faq and as the teaser accordion on the front page."},"Media":{"type":"object","additionalProperties":false,"title":"Media","properties":{"id":{"type":"string"},"alt":{"description":"Accessible alternative text describing the image for screen readers and SEO. Auto-filled from the filename if left blank. For listing photos, prefer the per-photo `alt` on the listing itself — the same image reused across listings needs different alt text in each.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"url":{"type":["string","null"]},"thumbnailURL":{"type":["string","null"]},"filename":{"type":["string","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"focalX":{"type":["number","null"]},"focalY":{"type":["number","null"]},"sizes":{"type":"object","additionalProperties":false,"properties":{"thumbnail":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"card":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]},"hero":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"mimeType":{"type":["string","null"]},"filesize":{"type":["number","null"]},"filename":{"type":["string","null"]}},"required":[]}},"required":[]}},"required":["id","updatedAt","createdAt"],"description":"Every uploaded image on Lejested: listing photos, category art, guide covers, profile pictures. The three generated sizes map to where they are used — `thumbnail` in the admin and inquiry inbox, `card` in the search result grid, `hero` on the listing detail gallery."},"DiscountCode":{"type":"object","additionalProperties":false,"title":"Discount Code","properties":{"id":{"type":"string"},"code":{"description":"The code a lister types at checkout, e.g. VELKOMST25 (case-insensitive).","type":"string"},"description":{"description":"Internal note about this discount — which campaign it belongs to, who approved it. Never shown to listers.","type":["string","null"]},"discountType":{"type":"string","enum":["percentage","flat"]},"discountValue":{"description":"For percentage: enter 10 for 10%. For flat: enter the amount in øre (e.g. 5000 = 50,00 kr).","type":"number"},"maxDiscountAmount":{"description":"Maximum discount in øre (e.g. 50000 = 500,00 kr). Only applies to percentage discounts. Leave blank for no cap.","type":["number","null"]},"minimumOrderAmount":{"description":"Minimum order subtotal in øre required to use this code (e.g. 30000 = 300,00 kr). Leave blank for no minimum.","type":["number","null"]},"maxUses":{"description":"Maximum total uses across all listers. Leave blank for unlimited.","type":["number","null"]},"currentUses":{"description":"Number of times this code has been used.","type":["number","null"]},"maxUsesPerCustomer":{"description":"Maximum uses per email address. Leave blank for unlimited per lister.","type":["number","null"]},"validFrom":{"description":"Start date. Leave blank for immediately active.","type":["string","null"]},"validUntil":{"description":"Expiration date. Leave blank for no expiration.","type":["string","null"]},"isActive":{"description":"Only active codes can be applied at checkout. Deactivating beats deleting — the usage counter stays intact for reporting.","type":["boolean","null"]},"appliesToProducts":{"description":"Restrict this code to specific boosts or plans. Leave empty to apply to everything a lister can buy.","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]}},"appliesToCategories":{"description":"Restrict this code to boosts or to subscription plans. Leave empty to apply to both.","type":["array","null"],"items":{"type":"string","enum":["boost","plan","other"]}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","code","discountType","discountValue","updatedAt","createdAt"],"description":"Promo codes for the lister-side purchases — featured-listing boosts and Erhverv/Mægler plans. Renters never pay on Lejested, so a code here can only ever discount what a lister buys."},"ContactFormSubmission":{"type":"object","additionalProperties":false,"title":"Contact Form Submission","properties":{"id":{"type":"string"},"name":{"description":"Full name of the person writing to us.","type":"string"},"email":{"description":"Email address for follow-up correspondence.","type":"string"},"subject":{"description":"Subject line summarising what the message is about.","type":"string"},"message":{"description":"Full message body of the contact form submission.","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","name","email","subject","message","updatedAt","createdAt"],"description":"Messages sent to Lejested itself from /kontakt — support, press, partnership. Not to be confused with `inquiries`, which are renter-to-lister rental requests and never reach us."},"NewsletterSubscriber":{"type":"object","additionalProperties":false,"title":"Newsletter Subscriber","properties":{"id":{"type":"string"},"email":{"description":"Subscriber email address collected from the newsletter signup form.","type":"string"},"subscribedAt":{"description":"Date and time when the user subscribed to the newsletter.","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","updatedAt","createdAt"],"description":"People who asked to hear from Lejested — new guides, market updates, feature news. Separate from `users`: subscribing never creates an account, and deleting an account must not silently unsubscribe."},"Addresses":{"type":"object","additionalProperties":false,"title":"addresses","properties":{"id":{"type":"string"},"customer":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/User"}]},"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"phone":{"type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","country","updatedAt","createdAt"]},"Variants":{"type":"object","additionalProperties":false,"title":"variants","properties":{"id":{"type":"string"},"images":{"description":"Variant images","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Media"}]}},"title":{"description":"Used for administrative purposes, not shown to customers. This is populated by default.","type":["string","null"]},"product":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]},"options":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"inventory":{"type":["number","null"]},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","product","options","updatedAt","createdAt"]},"VariantTypes":{"type":"object","additionalProperties":false,"title":"variantTypes","properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"options":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","label","name","updatedAt","createdAt"]},"VariantOptions":{"type":"object","additionalProperties":false,"title":"variantOptions","properties":{"id":{"type":"string"},"_variantOptions_options_order":{"type":["string","null"]},"variantType":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]},"label":{"type":"string"},"value":{"description":"should be defaulted or dynamic based on label","type":"string"},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]}},"required":["id","variantType","label","value","updatedAt","createdAt"]},"Products":{"type":"object","additionalProperties":false,"title":"products","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"URL-friendly version of the name","type":"string"},"description":{"description":"One-line pitch shown on the /priser card, e.g. “Din annonce ligger øverst i 7 dage”","type":"string"},"longDescription":{"description":"Everything the boost or plan includes — placement, number of active listings, seats, support","type":["object","null"],"properties":{"root":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"children":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","tsType":"any"},"version":{"type":"integer"}},"required":["type","version"]}},"direction":{"oneOf":[{"enum":["ltr","rtl"]},{"type":"null"}]},"format":{"type":"string","enum":["left","start","center","right","end","justify",""]},"indent":{"type":"integer"},"version":{"type":"integer"}},"required":["children","direction","format","indent","type","version"]}},"required":["root"]},"images":{"description":"Artwork for the plan card (first image is the one shown)","type":["array","null"],"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Media"}]}},"category":{"description":"A boost is a one-off purchase for a single listing; a plan renews monthly for the whole account","type":"string","enum":["boost","plan"]},"featured":{"description":"Highlight this boost or plan as the recommended option on /priser","type":["boolean","null"]},"inventory":{"type":["number","null"]},"enableVariants":{"type":["boolean","null"]},"variantTypes":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]}},"variants":{"type":"object","additionalProperties":false,"properties":{"docs":{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"hasNextPage":{"type":"boolean"},"totalDocs":{"type":"number"}}},"priceInUSDEnabled":{"type":["boolean","null"]},"priceInUSD":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":["string","null"]},"_status":{"type":["string","null"],"enum":["draft","published"]}},"required":["id","name","slug","description","category","updatedAt","createdAt"]},"Carts":{"type":"object","additionalProperties":false,"title":"carts","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Products"}]},"variant":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Variants"}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"secret":{"type":["string","null"]},"customer":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/User"}]},"purchasedAt":{"type":["string","null"]},"status":{"type":["string","null"],"enum":["active","purchased","abandoned"]},"subtotal":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"discountCode":{"description":"Applied discount code for this cart","type":["string","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]},"Orders":{"type":"object","additionalProperties":false,"title":"orders","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Products"}]},"variant":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Variants"}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"shippingAddress":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":["string","null"]},"phone":{"type":["string","null"]}},"required":[]},"customer":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/User"}]},"customerEmail":{"type":["string","null"]},"transactions":{"type":["array","null"],"items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Transactions"}]}},"status":{"type":["string","null"],"enum":["processing","completed","cancelled","refunded"]},"amount":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"fulfillmentStatus":{"description":"Where this boost or plan is in its lifecycle. Changing it emails the lister.","type":["string","null"],"enum":["pending","processing","shipped","delivered","cancelled"]},"discountCode":{"description":"Discount code applied to this purchase","type":["string","null"]},"discountAmount":{"description":"Discount applied, in øre (14900 = 149,00 kr)","type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]},"Transactions":{"type":"object","additionalProperties":false,"title":"transactions","properties":{"id":{"type":"string"},"items":{"type":["array","null"],"items":{"type":"object","additionalProperties":false,"properties":{"product":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Products"}]},"variant":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Variants"}]},"quantity":{"type":"number"},"id":{"type":["string","null"]}},"required":["quantity"]}},"paymentMethod":{"type":["string","null"],"enum":["stripe"]},"stripe":{"type":"object","additionalProperties":false,"properties":{"customerID":{"type":["string","null"]},"paymentIntentID":{"type":["string","null"]}},"required":[]},"billingAddress":{"type":"object","additionalProperties":false,"properties":{"title":{"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"company":{"type":["string","null"]},"addressLine1":{"type":["string","null"]},"addressLine2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"country":{"type":["string","null"]},"phone":{"type":["string","null"]}},"required":[]},"status":{"type":"string","enum":["pending","succeeded","failed","cancelled","expired","refunded"]},"customer":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/User"}]},"customerEmail":{"type":["string","null"]},"order":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Orders"}]},"cart":{"oneOf":[{"type":["string","null"]},{"$ref":"#/components/schemas/Carts"}]},"amount":{"type":["number","null"]},"currency":{"type":["string","null"],"enum":["USD"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","status","updatedAt","createdAt"]},"PayloadKv":{"type":"object","additionalProperties":false,"title":"Payload Kv","properties":{"id":{"type":"string"},"key":{"type":"string"},"data":{"type":["object","array","string","number","boolean","null"]}},"required":["id","key","data"]},"PayloadLockedDocument":{"type":"object","additionalProperties":false,"title":"Payload Locked Document","properties":{"id":{"type":"string"},"document":{"oneOf":[{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"users"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"sessions"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Session"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"accounts"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Account"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"verifications"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Verification"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"passkeys"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Passkey"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"apiKeys"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ApiKey"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"admin-invitations"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/AdminInvitation"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"categories"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Category"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"listings"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Listing"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"inquiries"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Inquiry"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"saved-listings"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/SavedListing"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"reviews"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Review"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"blogs"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Guide"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"faqs"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/FAQ"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"media"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Media"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"discount-codes"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/DiscountCode"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"contact-form-submissions"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/ContactFormSubmission"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"newsletter-subscribers"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/NewsletterSubscriber"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"addresses"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Addresses"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"variants"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Variants"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"variantTypes"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantTypes"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"variantOptions"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/VariantOptions"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"products"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Products"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"carts"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Carts"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"orders"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Orders"}]}},"required":["value","relationTo"]},{"type":["object","null"],"additionalProperties":false,"properties":{"relationTo":{"const":"transactions"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/Transactions"}]}},"required":["value","relationTo"]}]},"globalSlug":{"type":["string","null"]},"user":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"relationTo":{"const":"users"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["value","relationTo"]}]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","user","updatedAt","createdAt"]},"PayloadPreference":{"type":"object","additionalProperties":false,"title":"Payload Preference","properties":{"id":{"type":"string"},"user":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"relationTo":{"const":"users"},"value":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/User"}]}},"required":["value","relationTo"]}]},"key":{"type":["string","null"]},"value":{"type":["object","array","string","number","boolean","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","user","updatedAt","createdAt"]},"PayloadMigration":{"type":"object","additionalProperties":false,"title":"Payload Migration","properties":{"id":{"type":"string"},"name":{"type":["string","null"]},"batch":{"type":["number","null"]},"updatedAt":{"type":"string"},"createdAt":{"type":"string"}},"required":["id","updatedAt","createdAt"]},"UserQueryOperations":{"title":"User query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"email":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"emailVerified":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"image":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"role":{"type":"object","properties":{"equals":{"type":"string","enum":["admin","user"]},"not_equals":{"type":"string","enum":["admin","user"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"stripeCustomerId":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"accountType":{"type":"object","properties":{"equals":{"type":"string","enum":["private","business","agent"]},"not_equals":{"type":"string","enum":["private","business","agent"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"displayName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"companyName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"cvr":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"verified":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"responseRate":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"responseTimeHours":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},"UserQueryOperationsAnd":{"title":"User query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/UserQueryOperations"},{"$ref":"#/components/schemas/UserQueryOperationsAnd"},{"$ref":"#/components/schemas/UserQueryOperationsOr"}]}}},"required":["and"]},"UserQueryOperationsOr":{"title":"User query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/UserQueryOperations"},{"$ref":"#/components/schemas/UserQueryOperationsAnd"},{"$ref":"#/components/schemas/UserQueryOperationsOr"}]}}},"required":["or"]},"SessionQueryOperations":{"title":"Session query operations","type":"object","properties":{"expiresAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"token":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"ipAddress":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"userAgent":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}}}},"SessionQueryOperationsAnd":{"title":"Session query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SessionQueryOperations"},{"$ref":"#/components/schemas/SessionQueryOperationsAnd"},{"$ref":"#/components/schemas/SessionQueryOperationsOr"}]}}},"required":["and"]},"SessionQueryOperationsOr":{"title":"Session query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SessionQueryOperations"},{"$ref":"#/components/schemas/SessionQueryOperationsAnd"},{"$ref":"#/components/schemas/SessionQueryOperationsOr"}]}}},"required":["or"]},"AccountQueryOperations":{"title":"Account query operations","type":"object","properties":{"accountId":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"providerId":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"accessToken":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"refreshToken":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"idToken":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"accessTokenExpiresAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"refreshTokenExpiresAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"scope":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"password":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"AccountQueryOperationsAnd":{"title":"Account query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/AccountQueryOperations"},{"$ref":"#/components/schemas/AccountQueryOperationsAnd"},{"$ref":"#/components/schemas/AccountQueryOperationsOr"}]}}},"required":["and"]},"AccountQueryOperationsOr":{"title":"Account query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/AccountQueryOperations"},{"$ref":"#/components/schemas/AccountQueryOperationsAnd"},{"$ref":"#/components/schemas/AccountQueryOperationsOr"}]}}},"required":["or"]},"VerificationQueryOperations":{"title":"Verification query operations","type":"object","properties":{"identifier":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"expiresAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"VerificationQueryOperationsAnd":{"title":"Verification query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VerificationQueryOperations"},{"$ref":"#/components/schemas/VerificationQueryOperationsAnd"},{"$ref":"#/components/schemas/VerificationQueryOperationsOr"}]}}},"required":["and"]},"VerificationQueryOperationsOr":{"title":"Verification query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VerificationQueryOperations"},{"$ref":"#/components/schemas/VerificationQueryOperationsAnd"},{"$ref":"#/components/schemas/VerificationQueryOperationsOr"}]}}},"required":["or"]},"PasskeyQueryOperations":{"title":"Passkey query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"publicKey":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"credentialId":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"counter":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"deviceType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"backedUp":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"transports":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"aaguid":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"PasskeyQueryOperationsAnd":{"title":"Passkey query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PasskeyQueryOperations"},{"$ref":"#/components/schemas/PasskeyQueryOperationsAnd"},{"$ref":"#/components/schemas/PasskeyQueryOperationsOr"}]}}},"required":["and"]},"PasskeyQueryOperationsOr":{"title":"Passkey query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PasskeyQueryOperations"},{"$ref":"#/components/schemas/PasskeyQueryOperationsAnd"},{"$ref":"#/components/schemas/PasskeyQueryOperationsOr"}]}}},"required":["or"]},"ApiKeyQueryOperations":{"title":"Api Key query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"start":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"prefix":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"key":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"refillInterval":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"refillAmount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"lastRefillAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"enabled":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"rateLimitEnabled":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"rateLimitTimeWindow":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"rateLimitMax":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"requestCount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"remaining":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"lastRequest":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"expiresAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"permissions":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"metadata":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}}}},"ApiKeyQueryOperationsAnd":{"title":"Api Key query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ApiKeyQueryOperations"},{"$ref":"#/components/schemas/ApiKeyQueryOperationsAnd"},{"$ref":"#/components/schemas/ApiKeyQueryOperationsOr"}]}}},"required":["and"]},"ApiKeyQueryOperationsOr":{"title":"Api Key query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ApiKeyQueryOperations"},{"$ref":"#/components/schemas/ApiKeyQueryOperationsAnd"},{"$ref":"#/components/schemas/ApiKeyQueryOperationsOr"}]}}},"required":["or"]},"AdminInvitationQueryOperations":{"title":"Admin Invitation query operations","type":"object","properties":{"role":{"type":"object","properties":{"equals":{"type":"string","enum":["admin","user"]},"not_equals":{"type":"string","enum":["admin","user"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"token":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"AdminInvitationQueryOperationsAnd":{"title":"Admin Invitation query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/AdminInvitationQueryOperations"},{"$ref":"#/components/schemas/AdminInvitationQueryOperationsAnd"},{"$ref":"#/components/schemas/AdminInvitationQueryOperationsOr"}]}}},"required":["and"]},"AdminInvitationQueryOperationsOr":{"title":"Admin Invitation query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/AdminInvitationQueryOperations"},{"$ref":"#/components/schemas/AdminInvitationQueryOperationsAnd"},{"$ref":"#/components/schemas/AdminInvitationQueryOperationsOr"}]}}},"required":["or"]},"CategoryQueryOperations":{"title":"Category query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"icon":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"CategoryQueryOperationsAnd":{"title":"Category query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/CategoryQueryOperations"},{"$ref":"#/components/schemas/CategoryQueryOperationsAnd"},{"$ref":"#/components/schemas/CategoryQueryOperationsOr"}]}}},"required":["and"]},"CategoryQueryOperationsOr":{"title":"Category query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/CategoryQueryOperations"},{"$ref":"#/components/schemas/CategoryQueryOperationsAnd"},{"$ref":"#/components/schemas/CategoryQueryOperationsOr"}]}}},"required":["or"]},"ListingQueryOperations":{"title":"Listing query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"condition":{"type":"object","properties":{"equals":{"type":"string","enum":["new","like-new","good","fair"]},"not_equals":{"type":"string","enum":["new","like-new","good","fair"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"listerType":{"type":"object","properties":{"equals":{"type":"string","enum":["private","business","agent"]},"not_equals":{"type":"string","enum":["private","business","agent"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","pending","published","rented","archived"]},"not_equals":{"type":"string","enum":["draft","pending","published","rented","archived"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"featuredUntil":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"viewCount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"inquiryCount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"ListingQueryOperationsAnd":{"title":"Listing query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ListingQueryOperations"},{"$ref":"#/components/schemas/ListingQueryOperationsAnd"},{"$ref":"#/components/schemas/ListingQueryOperationsOr"}]}}},"required":["and"]},"ListingQueryOperationsOr":{"title":"Listing query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ListingQueryOperations"},{"$ref":"#/components/schemas/ListingQueryOperationsAnd"},{"$ref":"#/components/schemas/ListingQueryOperationsOr"}]}}},"required":["or"]},"InquiryQueryOperations":{"title":"Inquiry query operations","type":"object","properties":{"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["new","read","replied","accepted","declined","closed"]},"not_equals":{"type":"string","enum":["new","read","replied","accepted","declined","closed"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"source":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"InquiryQueryOperationsAnd":{"title":"Inquiry query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/InquiryQueryOperations"},{"$ref":"#/components/schemas/InquiryQueryOperationsAnd"},{"$ref":"#/components/schemas/InquiryQueryOperationsOr"}]}}},"required":["and"]},"InquiryQueryOperationsOr":{"title":"Inquiry query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/InquiryQueryOperations"},{"$ref":"#/components/schemas/InquiryQueryOperationsAnd"},{"$ref":"#/components/schemas/InquiryQueryOperationsOr"}]}}},"required":["or"]},"SavedListingQueryOperations":{"title":"Saved Listing query operations","type":"object","properties":{"addedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"SavedListingQueryOperationsAnd":{"title":"Saved Listing query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SavedListingQueryOperations"},{"$ref":"#/components/schemas/SavedListingQueryOperationsAnd"},{"$ref":"#/components/schemas/SavedListingQueryOperationsOr"}]}}},"required":["and"]},"SavedListingQueryOperationsOr":{"title":"Saved Listing query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SavedListingQueryOperations"},{"$ref":"#/components/schemas/SavedListingQueryOperationsAnd"},{"$ref":"#/components/schemas/SavedListingQueryOperationsOr"}]}}},"required":["or"]},"ReviewQueryOperations":{"title":"Review query operations","type":"object","properties":{"rating":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["pending","approved","rejected"]},"not_equals":{"type":"string","enum":["pending","approved","rejected"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"verifiedRental":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"helpfulCount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"ReviewQueryOperationsAnd":{"title":"Review query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ReviewQueryOperations"},{"$ref":"#/components/schemas/ReviewQueryOperationsAnd"},{"$ref":"#/components/schemas/ReviewQueryOperationsOr"}]}}},"required":["and"]},"ReviewQueryOperationsOr":{"title":"Review query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ReviewQueryOperations"},{"$ref":"#/components/schemas/ReviewQueryOperationsAnd"},{"$ref":"#/components/schemas/ReviewQueryOperationsOr"}]}}},"required":["or"]},"GuideQueryOperations":{"title":"Guide query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"author":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"not_equals":{"type":"string","enum":["for-listers","for-renters","rules","safety","pricing","news"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"publishedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"GuideQueryOperationsAnd":{"title":"Guide query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/GuideQueryOperations"},{"$ref":"#/components/schemas/GuideQueryOperationsAnd"},{"$ref":"#/components/schemas/GuideQueryOperationsOr"}]}}},"required":["and"]},"GuideQueryOperationsOr":{"title":"Guide query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/GuideQueryOperations"},{"$ref":"#/components/schemas/GuideQueryOperationsAnd"},{"$ref":"#/components/schemas/GuideQueryOperationsOr"}]}}},"required":["or"]},"FAQQueryOperations":{"title":"FAQ query operations","type":"object","properties":{"question":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"order":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"FAQQueryOperationsAnd":{"title":"FAQ query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/FAQQueryOperations"},{"$ref":"#/components/schemas/FAQQueryOperationsAnd"},{"$ref":"#/components/schemas/FAQQueryOperationsOr"}]}}},"required":["and"]},"FAQQueryOperationsOr":{"title":"FAQ query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/FAQQueryOperations"},{"$ref":"#/components/schemas/FAQQueryOperationsAnd"},{"$ref":"#/components/schemas/FAQQueryOperationsOr"}]}}},"required":["or"]},"MediaQueryOperations":{"title":"Media query operations","type":"object","properties":{"alt":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"url":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"thumbnailURL":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filename":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"mimeType":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"filesize":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"width":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"height":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalX":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"focalY":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}}}},"MediaQueryOperationsAnd":{"title":"Media query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/MediaQueryOperations"},{"$ref":"#/components/schemas/MediaQueryOperationsAnd"},{"$ref":"#/components/schemas/MediaQueryOperationsOr"}]}}},"required":["and"]},"MediaQueryOperationsOr":{"title":"Media query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/MediaQueryOperations"},{"$ref":"#/components/schemas/MediaQueryOperationsAnd"},{"$ref":"#/components/schemas/MediaQueryOperationsOr"}]}}},"required":["or"]},"DiscountCodeQueryOperations":{"title":"Discount Code query operations","type":"object","properties":{"code":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"maxDiscountAmount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"minimumOrderAmount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"maxUsesPerCustomer":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"isActive":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"appliesToCategories":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan","other"]},"not_equals":{"type":"string","enum":["boost","plan","other"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"DiscountCodeQueryOperationsAnd":{"title":"Discount Code query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/DiscountCodeQueryOperations"},{"$ref":"#/components/schemas/DiscountCodeQueryOperationsAnd"},{"$ref":"#/components/schemas/DiscountCodeQueryOperationsOr"}]}}},"required":["and"]},"DiscountCodeQueryOperationsOr":{"title":"Discount Code query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/DiscountCodeQueryOperations"},{"$ref":"#/components/schemas/DiscountCodeQueryOperationsAnd"},{"$ref":"#/components/schemas/DiscountCodeQueryOperationsOr"}]}}},"required":["or"]},"ContactFormSubmissionQueryOperations":{"title":"Contact Form Submission query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"email":{"type":"object","properties":{"equals":{"type":"string","format":"email"},"not_equals":{"type":"string","format":"email"},"in":{"type":"string"},"not_in":{"type":"string"},"contains":{"type":"string","format":"email"}}},"subject":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"ContactFormSubmissionQueryOperationsAnd":{"title":"Contact Form Submission query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ContactFormSubmissionQueryOperations"},{"$ref":"#/components/schemas/ContactFormSubmissionQueryOperationsAnd"},{"$ref":"#/components/schemas/ContactFormSubmissionQueryOperationsOr"}]}}},"required":["and"]},"ContactFormSubmissionQueryOperationsOr":{"title":"Contact Form Submission query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ContactFormSubmissionQueryOperations"},{"$ref":"#/components/schemas/ContactFormSubmissionQueryOperationsAnd"},{"$ref":"#/components/schemas/ContactFormSubmissionQueryOperationsOr"}]}}},"required":["or"]},"NewsletterSubscriberQueryOperations":{"title":"Newsletter Subscriber query operations","type":"object","properties":{"email":{"type":"object","properties":{"equals":{"type":"string","format":"email"},"not_equals":{"type":"string","format":"email"},"in":{"type":"string"},"not_in":{"type":"string"},"contains":{"type":"string","format":"email"}}},"subscribedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"NewsletterSubscriberQueryOperationsAnd":{"title":"Newsletter Subscriber query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/NewsletterSubscriberQueryOperations"},{"$ref":"#/components/schemas/NewsletterSubscriberQueryOperationsAnd"},{"$ref":"#/components/schemas/NewsletterSubscriberQueryOperationsOr"}]}}},"required":["and"]},"NewsletterSubscriberQueryOperationsOr":{"title":"Newsletter Subscriber query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/NewsletterSubscriberQueryOperations"},{"$ref":"#/components/schemas/NewsletterSubscriberQueryOperationsAnd"},{"$ref":"#/components/schemas/NewsletterSubscriberQueryOperationsOr"}]}}},"required":["or"]},"AddressesQueryOperations":{"title":"addresses query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"firstName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"lastName":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"company":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine1":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"addressLine2":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"city":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"state":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"postalCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"country":{"type":"object","properties":{"equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"not_equals":{"type":"string","enum":["US","GB","CA","AU","AT","BE","BR","BG","CY","CZ","DK","EE","FI","FR","DE","GR","HK","HU","IN","IE","IT","JP","LV","LT","LU","MY","MT","MX","NL","NZ","NO","PL","PT","RO","SG","SK","SI","ES","SE","CH"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"phone":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"AddressesQueryOperationsAnd":{"title":"addresses query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/AddressesQueryOperations"},{"$ref":"#/components/schemas/AddressesQueryOperationsAnd"},{"$ref":"#/components/schemas/AddressesQueryOperationsOr"}]}}},"required":["and"]},"AddressesQueryOperationsOr":{"title":"addresses query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/AddressesQueryOperations"},{"$ref":"#/components/schemas/AddressesQueryOperationsAnd"},{"$ref":"#/components/schemas/AddressesQueryOperationsOr"}]}}},"required":["or"]},"VariantsQueryOperations":{"title":"variants query operations","type":"object","properties":{"title":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},"VariantsQueryOperationsAnd":{"title":"variants query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VariantsQueryOperations"},{"$ref":"#/components/schemas/VariantsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantsQueryOperationsOr"}]}}},"required":["and"]},"VariantsQueryOperationsOr":{"title":"variants query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VariantsQueryOperations"},{"$ref":"#/components/schemas/VariantsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantsQueryOperationsOr"}]}}},"required":["or"]},"VariantTypesQueryOperations":{"title":"variantTypes query operations","type":"object","properties":{"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"VariantTypesQueryOperationsAnd":{"title":"variantTypes query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VariantTypesQueryOperations"},{"$ref":"#/components/schemas/VariantTypesQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantTypesQueryOperationsOr"}]}}},"required":["and"]},"VariantTypesQueryOperationsOr":{"title":"variantTypes query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VariantTypesQueryOperations"},{"$ref":"#/components/schemas/VariantTypesQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantTypesQueryOperationsOr"}]}}},"required":["or"]},"VariantOptionsQueryOperations":{"title":"variantOptions query operations","type":"object","properties":{"_variantOptions_options_order":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"label":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"value":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"VariantOptionsQueryOperationsAnd":{"title":"variantOptions query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VariantOptionsQueryOperations"},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsOr"}]}}},"required":["and"]},"VariantOptionsQueryOperationsOr":{"title":"variantOptions query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/VariantOptionsQueryOperations"},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsAnd"},{"$ref":"#/components/schemas/VariantOptionsQueryOperationsOr"}]}}},"required":["or"]},"ProductsQueryOperations":{"title":"products query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"slug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"category":{"type":"object","properties":{"equals":{"type":"string","enum":["boost","plan"]},"not_equals":{"type":"string","enum":["boost","plan"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"featured":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"inventory":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"enableVariants":{"type":"object","properties":{"equals":{"type":"boolean"},"not_equals":{"type":"boolean"},"in":{"type":"string"},"not_in":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"deletedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"_status":{"type":"object","properties":{"equals":{"type":"string","enum":["draft","published"]},"not_equals":{"type":"string","enum":["draft","published"]},"in":{"type":"string"},"not_in":{"type":"string"}}}}},"ProductsQueryOperationsAnd":{"title":"products query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ProductsQueryOperations"},{"$ref":"#/components/schemas/ProductsQueryOperationsAnd"},{"$ref":"#/components/schemas/ProductsQueryOperationsOr"}]}}},"required":["and"]},"ProductsQueryOperationsOr":{"title":"products query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/ProductsQueryOperations"},{"$ref":"#/components/schemas/ProductsQueryOperationsAnd"},{"$ref":"#/components/schemas/ProductsQueryOperationsOr"}]}}},"required":["or"]},"CartsQueryOperations":{"title":"carts query operations","type":"object","properties":{"secret":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"purchasedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["active","purchased","abandoned"]},"not_equals":{"type":"string","enum":["active","purchased","abandoned"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"CartsQueryOperationsAnd":{"title":"carts query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/CartsQueryOperations"},{"$ref":"#/components/schemas/CartsQueryOperationsAnd"},{"$ref":"#/components/schemas/CartsQueryOperationsOr"}]}}},"required":["and"]},"CartsQueryOperationsOr":{"title":"carts query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/CartsQueryOperations"},{"$ref":"#/components/schemas/CartsQueryOperationsAnd"},{"$ref":"#/components/schemas/CartsQueryOperationsOr"}]}}},"required":["or"]},"OrdersQueryOperations":{"title":"orders query operations","type":"object","properties":{"customerEmail":{"type":"object","properties":{"equals":{"type":"string","format":"email"},"not_equals":{"type":"string","format":"email"},"in":{"type":"string"},"not_in":{"type":"string"},"contains":{"type":"string","format":"email"}}},"status":{"type":"object","properties":{"equals":{"type":"string","enum":["processing","completed","cancelled","refunded"]},"not_equals":{"type":"string","enum":["processing","completed","cancelled","refunded"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"fulfillmentStatus":{"type":"object","properties":{"equals":{"type":"string","enum":["pending","processing","shipped","delivered","cancelled"]},"not_equals":{"type":"string","enum":["pending","processing","shipped","delivered","cancelled"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"discountCode":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"discountAmount":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"OrdersQueryOperationsAnd":{"title":"orders query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/OrdersQueryOperations"},{"$ref":"#/components/schemas/OrdersQueryOperationsAnd"},{"$ref":"#/components/schemas/OrdersQueryOperationsOr"}]}}},"required":["and"]},"OrdersQueryOperationsOr":{"title":"orders query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/OrdersQueryOperations"},{"$ref":"#/components/schemas/OrdersQueryOperationsAnd"},{"$ref":"#/components/schemas/OrdersQueryOperationsOr"}]}}},"required":["or"]},"TransactionsQueryOperations":{"title":"transactions query operations","type":"object","properties":{"status":{"type":"object","properties":{"equals":{"type":"string","enum":["pending","succeeded","failed","cancelled","expired","refunded"]},"not_equals":{"type":"string","enum":["pending","succeeded","failed","cancelled","expired","refunded"]},"in":{"type":"string"},"not_in":{"type":"string"}}},"customerEmail":{"type":"object","properties":{"equals":{"type":"string","format":"email"},"not_equals":{"type":"string","format":"email"},"in":{"type":"string"},"not_in":{"type":"string"},"contains":{"type":"string","format":"email"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"TransactionsQueryOperationsAnd":{"title":"transactions query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/TransactionsQueryOperations"},{"$ref":"#/components/schemas/TransactionsQueryOperationsAnd"},{"$ref":"#/components/schemas/TransactionsQueryOperationsOr"}]}}},"required":["and"]},"TransactionsQueryOperationsOr":{"title":"transactions query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/TransactionsQueryOperations"},{"$ref":"#/components/schemas/TransactionsQueryOperationsAnd"},{"$ref":"#/components/schemas/TransactionsQueryOperationsOr"}]}}},"required":["or"]},"PayloadKvQueryOperations":{"title":"Payload Kv query operations","type":"object","properties":{"key":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}}}},"PayloadKvQueryOperationsAnd":{"title":"Payload Kv query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadKvQueryOperations"},{"$ref":"#/components/schemas/PayloadKvQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadKvQueryOperationsOr"}]}}},"required":["and"]},"PayloadKvQueryOperationsOr":{"title":"Payload Kv query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadKvQueryOperations"},{"$ref":"#/components/schemas/PayloadKvQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadKvQueryOperationsOr"}]}}},"required":["or"]},"PayloadLockedDocumentQueryOperations":{"title":"Payload Locked Document query operations","type":"object","properties":{"globalSlug":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"PayloadLockedDocumentQueryOperationsAnd":{"title":"Payload Locked Document query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadLockedDocumentQueryOperations"},{"$ref":"#/components/schemas/PayloadLockedDocumentQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadLockedDocumentQueryOperationsOr"}]}}},"required":["and"]},"PayloadLockedDocumentQueryOperationsOr":{"title":"Payload Locked Document query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadLockedDocumentQueryOperations"},{"$ref":"#/components/schemas/PayloadLockedDocumentQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadLockedDocumentQueryOperationsOr"}]}}},"required":["or"]},"PayloadPreferenceQueryOperations":{"title":"Payload Preference query operations","type":"object","properties":{"key":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"PayloadPreferenceQueryOperationsAnd":{"title":"Payload Preference query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadPreferenceQueryOperations"},{"$ref":"#/components/schemas/PayloadPreferenceQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadPreferenceQueryOperationsOr"}]}}},"required":["and"]},"PayloadPreferenceQueryOperationsOr":{"title":"Payload Preference query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadPreferenceQueryOperations"},{"$ref":"#/components/schemas/PayloadPreferenceQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadPreferenceQueryOperationsOr"}]}}},"required":["or"]},"PayloadMigrationQueryOperations":{"title":"Payload Migration query operations","type":"object","properties":{"name":{"type":"object","properties":{"equals":{"type":"string"},"not_equals":{"type":"string"},"in":{"type":"string"},"not_in":{"type":"string"},"like":{"type":"string"},"contains":{"type":"string"}}},"batch":{"type":"object","properties":{"equals":{"type":"number"},"not_equals":{"type":"number"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"number"},"greater_than_equal":{"type":"number"},"less_than":{"type":"number"},"less_than_equal":{"type":"number"}}},"updatedAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}},"createdAt":{"type":"object","properties":{"equals":{"type":"string","format":"date-time"},"not_equals":{"type":"string","format":"date-time"},"in":{"type":"string"},"not_in":{"type":"string"},"greater_than":{"type":"string","format":"date-time"},"greater_than_equal":{"type":"string","format":"date-time"},"less_than":{"type":"string","format":"date-time"},"less_than_equal":{"type":"string","format":"date-time"}}}}},"PayloadMigrationQueryOperationsAnd":{"title":"Payload Migration query conjunction","type":"object","properties":{"and":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadMigrationQueryOperations"},{"$ref":"#/components/schemas/PayloadMigrationQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadMigrationQueryOperationsOr"}]}}},"required":["and"]},"PayloadMigrationQueryOperationsOr":{"title":"Payload Migration query disjunction","type":"object","properties":{"or":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/PayloadMigrationQueryOperations"},{"$ref":"#/components/schemas/PayloadMigrationQueryOperationsAnd"},{"$ref":"#/components/schemas/PayloadMigrationQueryOperationsOr"}]}}},"required":["or"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","example":"Internal server error"}}},"ValidationError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Summary of the validation failure.","example":"Validation failed"},"details":{"type":"object","description":"Structured validation error details from Zod.","properties":{"fieldErrors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"Per-field error messages.","example":{"email":["Invalid email address"]}},"formErrors":{"type":"array","items":{"type":"string"},"description":"Form-level error messages.","example":[]}}}}},"SuccessResponse":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","example":true}}},"ProductHit":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier from the search index"},"score":{"type":"number","description":"Relevance score from the search engine"},"document":{"type":"object","properties":{"name":{"type":"string","description":"Listing title"},"slug":{"type":"string","description":"URL-safe listing slug"},"description":{"type":"string","description":"Listing summary"},"priceInUSD":{"type":"number","description":"Indexed price. Despite the legacy field name this is DKK — whole kroner for listings."},"category":{"type":"string","description":"Category slug"},"imageUrl":{"type":"string","description":"URL of the cover image thumbnail"}}}}},"PaginatedResponse":{"type":"object","properties":{"docs":{"type":"array","items":{},"description":"Array of documents for the current page."},"totalDocs":{"type":"integer","description":"Total number of matching documents.","example":42},"totalPages":{"type":"integer","description":"Total number of pages.","example":5},"page":{"type":"integer","description":"Current page number (1-indexed).","example":1},"limit":{"type":"integer","description":"Maximum documents per page.","example":10},"hasNextPage":{"type":"boolean","example":true},"hasPrevPage":{"type":"boolean","example":false}}}},"securitySchemes":{"ApiKey":{"type":"oauth2","flows":{"password":{"tokenUrl":"/api//openapi-auth","scopes":{}}}},"cookieAuth":{"type":"apiKey","in":"cookie","name":"better-auth.session_token","description":"Session cookie set by Better-Auth after login. Authenticate via POST /api/auth/sign-in/email or OAuth flow."},"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key for programmatic access. Create keys at /konto/developer or via POST /api/auth/api-key/create. Keys are scoped — only endpoints matching the key's permissions are accessible."}}},"security":[{"cookieAuth":[]},{"apiKeyAuth":[]}]}