Shace
Shace Partner API

Units for rent. PUT /listings/{id} by your own reference is the call to make whenever a unit is saved in your system; POST /listings/{id}/unpublish takes it off the market.


Read a listing

GET
https://api-preview.shace.se/partner/v1
/listings/{id}
Bearer

id is a Shace UUID or ext:<externalRef>. A UUID that is not one of your listings is looked up as an externalRef, so the URL you pushed to with PUT always reads back.

Read a listingpath Parameters

id
string · minLength: 1 · required

Listing id, or ext:<your reference>.

Read a listing Responses

OK

id
string · uuid · pattern: ^([0-9a-fA-F]{8}-[0-… · required

Shace id.

required

Your reference, or null when none was sent.

status
string · enum · required

draft (never live), published, or unpublished (was live, taken off).

Enum values:
draft
published
unpublished
publishBlockers
string[] · required

Empty when the listing can go live; otherwise what is missing: images, price, noticePeriod, object.

Enum values:
images
price
noticePeriod
object
object · required

The object (building or address) the listing sits on.

type
string · enum · required

office for a whole office, coworking for desks or rooms in a shared workspace, part_of_office for part of a larger office.

Enum values:
office
coworking
part_of_office
locale
string · enum · required

Locale the description was submitted in; Shace translates the rest.

Enum values:
sv
en
required

Free text about the premises, in locale.

required

Floor area in square metres.

required

Number of workplaces.

required

Furnished or not.

object · required

Base rent, as sent.

required

Notice period in months, month-priced listings only.

required

Binding period in months, or null for no minimum.

amenityIds
integer[] · required

Ids from the catalogue in GET /amenities.

object[] · required

Amenities outside the catalogue, as sent.

images
string[] · required

Public image URLs in display order.

required

Public floor plan URL, or null.

required

Opening hours per weekday for coworking listings, or null.

required

Email of the assigned organization member.

createdVia
string · enum · required

Whether the listing was created in the app or through this API.

Enum values:
app
api
required

Last time a PUT through this API wrote content fields.

createdAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

ISO 8601 UTC.

updatedAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

Latest update to the listing, its primary-language description, or its object. ISO 8601 UTC, millisecond precision.


Create or update a listing by your own reference

PUT
https://api-preview.shace.se/partner/v1
/listings/{id}
Bearer

Idempotent. Pushing the same ref again updates the listing instead of duplicating it; an unchanged body is a no-op. The body points at the object the listing sits on with exactly one of objectRef, objectId or address. Publishes on success unless the body says status: "draft". A listing that is valid but not publishable is stored as a draft and the response lists the publishBlockers. A ref whose listing was unpublished is republished.

Outcomes

The same request in other situations, as outcome, status and any publishBlockers:

  • First push of a new reference: created, published
  • The same body again: nothing is written, no translation is queued, updatedAt does not move: unchanged, published
  • A field changed, for example the price: updated, published
  • Two images instead of three on a listing that was live: stored, taken off the market until a third is pushed: updated, unpublished, blockers images
  • The body says status: "draft" for a listing that was live: updated, unpublished
  • The body says status: "draft" for a listing that was never live, with the same content: unchanged, draft
  • The reference of a listing that was unpublished, pushed again: updated, published

Create or update a listing by your own referencepath Parameters

id
string · minLength: 1 · maxLength: 128 · required

Your external reference for the listing, URL-encoded. Send it directly, without adding ext:.

Create or update a listing by your own reference Request Body

type
string · enum · required

office for a whole office, coworking for desks or rooms in a shared workspace, part_of_office for part of a larger office.

Enum values:
office
coworking
part_of_office
object · required

Base rent. Transparent pricing is part of Shace, so there is no price on request.

objectRef
string · minLength: 1 · maxLength: 128

Your reference for an object pushed with PUT /objects/{id}. Send exactly one of objectRef, objectId or address.

objectId
string · minLength: 1

A Shace object id, or ext:<your reference>. Send exactly one of objectRef, objectId or address.

object

Inline address. Reuses your organization's active object at that address or creates and geocodes one. Send exactly one of objectRef, objectId or address.

locale
string · enum

Language of description and customAmenities. Shace translates to the other locales.

Enum values:
sv
en
Default: sv

Free text about the premises, in locale.

Floor area in square metres, with at most two decimal places.

Number of workplaces.

Furnished or not.

Notice period in months. Required to publish month-priced listings; must be omitted for day pricing.

Binding period in months, month-priced listings only. Omit for no minimum.

amenityIds
integer[] · maxItems: 100

Ids from the catalogue in GET /amenities.

Default: []
object[] · maxItems: 20

Amenities not in the catalogue: { id (uuid), icon, translations: { sv?, en? } }. Include a label in locale. Supplied labels are preserved; omitted languages are translated automatically.

images
string[] · maxItems: 30

URLs returned by POST /uploads/images for your organization, in display order; the first is the cover. At least 3 to publish. Reordering counts as a change.

Default: []
object

Blur placeholders keyed by image URL, as returned by the upload endpoint. Optional.

URL returned by POST /uploads/floor-plan. Optional; does not count towards the three-image minimum.

Opening hours per weekday for coworking listings. Each day is { open, close } as HH:MM, or null for closed.

status
string · enum

published (default) goes live when there are no publish blockers; draft holds the listing back.

Enum values:
published
draft
Default: published
assignedTo
string · email · pattern: ^(?!\.)(?!.*\.\.)([A…

Email of the organization member who owns the listing. Defaults to the organization owner when the listing is created; omitted on an update, the current assignee is kept.

Create or update a listing by your own reference Responses

OK

id
string · uuid · pattern: ^([0-9a-fA-F]{8}-[0-… · required

Shace id.

required

Your reference, or null when none was sent.

status
string · enum · required

draft (never live), published, or unpublished (was live, taken off).

Enum values:
draft
published
unpublished
publishBlockers
string[] · required

Empty when the listing can go live; otherwise what is missing: images, price, noticePeriod, object.

Enum values:
images
price
noticePeriod
object
object · required

The object (building or address) the listing sits on.

type
string · enum · required

office for a whole office, coworking for desks or rooms in a shared workspace, part_of_office for part of a larger office.

Enum values:
office
coworking
part_of_office
locale
string · enum · required

Locale the description was submitted in; Shace translates the rest.

Enum values:
sv
en
required

Free text about the premises, in locale.

required

Floor area in square metres.

required

Number of workplaces.

required

Furnished or not.

object · required

Base rent, as sent.

required

Notice period in months, month-priced listings only.

required

Binding period in months, or null for no minimum.

amenityIds
integer[] · required

Ids from the catalogue in GET /amenities.

object[] · required

Amenities outside the catalogue, as sent.

images
string[] · required

Public image URLs in display order.

required

Public floor plan URL, or null.

required

Opening hours per weekday for coworking listings, or null.

required

Email of the assigned organization member.

createdVia
string · enum · required

Whether the listing was created in the app or through this API.

Enum values:
app
api
required

Last time a PUT through this API wrote content fields.

createdAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

ISO 8601 UTC.

updatedAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

Latest update to the listing, its primary-language description, or its object. ISO 8601 UTC, millisecond precision.

outcome
string · enum · required

What the request did. unchanged means the body matched what Shace already holds.

Enum values:
created
updated
unchanged

List your listings

GET
https://api-preview.shace.se/partner/v1
/listings
Bearer

Newest first, cursor paginated. Use updatedSince to verify what Shace holds without re-pushing.

List your listingsquery Parameters

cursor
string

nextCursor from the previous page.

limit
integer · min: 1 · max: 200

Page size, 1 to 200.

Default: 50
status
string · enum

Only listings in this status.

Enum values:
draft
published
unpublished
updatedSince
string · date-time · pattern: ^(?:(?:\d\d[2468][04…

ISO 8601 instant. Only listings whose returned updatedAt is after it, compared at millisecond precision. Includes changes to their objects and primary-language descriptions.

List your listings Responses

OK

object[] · required

The page, newest first.

required

Pass as ?cursor= to fetch the next page; null on the last page.


Create a listing without an external reference

POST
https://api-preview.shace.se/partner/v1
/listings
Bearer

For landlords with nothing to key on. Every call creates a new listing; prefer PUT /listings/{id} when your system has a stable id for the unit. Same body as the upsert, including exactly one of objectRef, objectId or address.

Create a listing without an external reference Request Body

type
string · enum · required

office for a whole office, coworking for desks or rooms in a shared workspace, part_of_office for part of a larger office.

Enum values:
office
coworking
part_of_office
object · required

Base rent. Transparent pricing is part of Shace, so there is no price on request.

objectRef
string · minLength: 1 · maxLength: 128

Your reference for an object pushed with PUT /objects/{id}. Send exactly one of objectRef, objectId or address.

objectId
string · minLength: 1

A Shace object id, or ext:<your reference>. Send exactly one of objectRef, objectId or address.

object

Inline address. Reuses your organization's active object at that address or creates and geocodes one. Send exactly one of objectRef, objectId or address.

locale
string · enum

Language of description and customAmenities. Shace translates to the other locales.

Enum values:
sv
en
Default: sv

Free text about the premises, in locale.

Floor area in square metres, with at most two decimal places.

Number of workplaces.

Furnished or not.

Notice period in months. Required to publish month-priced listings; must be omitted for day pricing.

Binding period in months, month-priced listings only. Omit for no minimum.

amenityIds
integer[] · maxItems: 100

Ids from the catalogue in GET /amenities.

Default: []
object[] · maxItems: 20

Amenities not in the catalogue: { id (uuid), icon, translations: { sv?, en? } }. Include a label in locale. Supplied labels are preserved; omitted languages are translated automatically.

images
string[] · maxItems: 30

URLs returned by POST /uploads/images for your organization, in display order; the first is the cover. At least 3 to publish. Reordering counts as a change.

Default: []
object

Blur placeholders keyed by image URL, as returned by the upload endpoint. Optional.

URL returned by POST /uploads/floor-plan. Optional; does not count towards the three-image minimum.

Opening hours per weekday for coworking listings. Each day is { open, close } as HH:MM, or null for closed.

status
string · enum

published (default) goes live when there are no publish blockers; draft holds the listing back.

Enum values:
published
draft
Default: published
assignedTo
string · email · pattern: ^(?!\.)(?!.*\.\.)([A…

Email of the organization member who owns the listing. Defaults to the organization owner when the listing is created; omitted on an update, the current assignee is kept.

Create a listing without an external reference Responses

OK

id
string · uuid · pattern: ^([0-9a-fA-F]{8}-[0-… · required

Shace id.

required

Your reference, or null when none was sent.

status
string · enum · required

draft (never live), published, or unpublished (was live, taken off).

Enum values:
draft
published
unpublished
publishBlockers
string[] · required

Empty when the listing can go live; otherwise what is missing: images, price, noticePeriod, object.

Enum values:
images
price
noticePeriod
object
object · required

The object (building or address) the listing sits on.

type
string · enum · required

office for a whole office, coworking for desks or rooms in a shared workspace, part_of_office for part of a larger office.

Enum values:
office
coworking
part_of_office
locale
string · enum · required

Locale the description was submitted in; Shace translates the rest.

Enum values:
sv
en
required

Free text about the premises, in locale.

required

Floor area in square metres.

required

Number of workplaces.

required

Furnished or not.

object · required

Base rent, as sent.

required

Notice period in months, month-priced listings only.

required

Binding period in months, or null for no minimum.

amenityIds
integer[] · required

Ids from the catalogue in GET /amenities.

object[] · required

Amenities outside the catalogue, as sent.

images
string[] · required

Public image URLs in display order.

required

Public floor plan URL, or null.

required

Opening hours per weekday for coworking listings, or null.

required

Email of the assigned organization member.

createdVia
string · enum · required

Whether the listing was created in the app or through this API.

Enum values:
app
api
required

Last time a PUT through this API wrote content fields.

createdAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

ISO 8601 UTC.

updatedAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

Latest update to the listing, its primary-language description, or its object. ISO 8601 UTC, millisecond precision.

outcome
string · enum · required

What the request did. unchanged means the body matched what Shace already holds.

Enum values:
created
updated
unchanged

Take a listing off the market

POST
https://api-preview.shace.se/partner/v1
/listings/{id}/unpublish
Bearer

For the unpublish action in your system. id is a Shace UUID or ext:<externalRef>. The listing is hidden from matchmaking and keeps its content and reference; nothing is deleted, and the next PUT of the same reference puts it back on the market. Idempotent: a listing that is already off the market answers outcome: "unchanged".

Take a listing off the marketpath Parameters

id
string · minLength: 1 · required

Listing id, or ext:<your reference>.

Take a listing off the market Responses

OK

id
string · uuid · pattern: ^([0-9a-fA-F]{8}-[0-… · required

Shace id.

required

Your reference, or null when none was sent.

status
string · enum · required

draft (never live), published, or unpublished (was live, taken off).

Enum values:
draft
published
unpublished
publishBlockers
string[] · required

Empty when the listing can go live; otherwise what is missing: images, price, noticePeriod, object.

Enum values:
images
price
noticePeriod
object
object · required

The object (building or address) the listing sits on.

type
string · enum · required

office for a whole office, coworking for desks or rooms in a shared workspace, part_of_office for part of a larger office.

Enum values:
office
coworking
part_of_office
locale
string · enum · required

Locale the description was submitted in; Shace translates the rest.

Enum values:
sv
en
required

Free text about the premises, in locale.

required

Floor area in square metres.

required

Number of workplaces.

required

Furnished or not.

object · required

Base rent, as sent.

required

Notice period in months, month-priced listings only.

required

Binding period in months, or null for no minimum.

amenityIds
integer[] · required

Ids from the catalogue in GET /amenities.

object[] · required

Amenities outside the catalogue, as sent.

images
string[] · required

Public image URLs in display order.

required

Public floor plan URL, or null.

required

Opening hours per weekday for coworking listings, or null.

required

Email of the assigned organization member.

createdVia
string · enum · required

Whether the listing was created in the app or through this API.

Enum values:
app
api
required

Last time a PUT through this API wrote content fields.

createdAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

ISO 8601 UTC.

updatedAt
string · date-time · pattern: ^(?:(?:\d\d[2468][04… · required

Latest update to the listing, its primary-language description, or its object. ISO 8601 UTC, millisecond precision.

outcome
string · enum · required

What the request did. unchanged means the body matched what Shace already holds.

Enum values:
created
updated
unchanged