{
    "componentChunkName": "component---src-templates-article-page-template-js",
    "path": "/concepts/listings-overview/",
    "result": {"data":{"markdownRemark":{"frontmatter":{"title":"Listings in Flex","slug":"listings-overview","updated":"2022-06-27T00:00:00.000Z","category":"concepts-listings","ingress":"Flex powers online marketplaces, and listings are at the core of any marketplace. This article explains the different aspects of listings in Flex.","skills":null},"htmlAst":{"type":"root","children":[{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"On a Flex marketplace, listings represent the items, facilities or\nservices that users buy and sell or book and offer. Using extended data,\nlistings can be modified to cover several different kinds of\nmarketplaces."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"listing-lifecycle","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#listing-lifecycle","ariaLabel":"listing lifecycle permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Listing lifecycle"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Between being created and deleted, listings go through several different\nstates. Depending on the listing's state, they are either returned with\nthe public Listing endpoints or they are only available to the listing's\nauthor."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When tracking\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/events/#supported-event-types"},"children":[{"type":"text","value":"listing events"}]},{"type":"text","value":" through the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/integration.html","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Integration API"}]},{"type":"text","value":",\nit is important to also pay attention to the state of the listing. For\ninstance, in the default FTW template implementation the listing is\ncreated as draft and then goes through several updates in the draft\nstate before it is published. In other words, to catch the correct\nlisting event, it is useful to filter by both event type and listing\nstate."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"draft","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#draft","ariaLabel":"draft permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Draft"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"When a listing is first created, it is created in "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"state: draft"}]},{"type":"text","value":".\nDraft listings are not returned by the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#query-listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings/query"}]},{"type":"text","value":"\nendpoint, but they are visible to the author and through Flex Console.\nDraft listings can be published using the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#publish-draft-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"own_listings/publish_draft"}]},{"type":"text","value":"\nendpoint."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"pending-approval","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#pending-approval","ariaLabel":"pending approval permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Pending approval"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"If the marketplace\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/requiring-approval/"},"children":[{"type":"text","value":"requires listing approval for new listings"}]},{"type":"text","value":",\na draft listing does not get published directly when the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#publish-draft-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"own_listings/publish_draft"}]},{"type":"text","value":"\nis called. Instead, it moves into "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"state: pendingApproval"}]},{"type":"text","value":". The\noperator can then approve the listing in Flex Console or, if the\napproval is dependent on e.g. an extended data attribute, through the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/integration.html#approve-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listing approval Integration API endpoint"}]},{"type":"text","value":".\nA use case for this would be e.g. a marketplace where non-paid members\ncan publish one listing and paid members can publish unlimited listings\n– an integration could check whether the user has a "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"premium: true"}]},{"type":"text","value":" flag\nin their metadata and approve the listing accordingly."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"published","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#published","ariaLabel":"published permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Published"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Published listings are returned by\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#query-listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings/query"}]},{"type":"text","value":"\nand\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#show-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings/show"}]},{"type":"text","value":"\nendpoints."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"After a listing has been published, it can still be modified by the\nauthor. Even if the marketplace has listing approval enabled, modifying\nlistings after they are published does not set them back to the\n"},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"pendingApproval"}]},{"type":"text","value":" state. This means that the listing approval feature\ncan not fully be used to moderate e.g. listing content, but rather the\nnumber of listings each user has active on the marketplace."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"closed","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#closed","ariaLabel":"closed permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Closed"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A listing can be closed by both the author and the marketplace operator.\nA closed listing is not returned by the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#query-listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings/query"}]},{"type":"text","value":"\nand\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#show-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings/show"}]},{"type":"text","value":"\nendpoints, but it is still returned by the\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#query-own-listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"own_listings/query"}]},{"type":"text","value":"\nand\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#show-own-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"own_listings/show"}]},{"type":"text","value":"\nendpoints, i.e. it is visible to the author. Both author and marketplace\noperator can also\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#open-listing","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"open the listing"}]},{"type":"text","value":"\nafter it has been closed i.e. set its state back to published."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"deleted","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#deleted","ariaLabel":"deleted permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Deleted"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listings in Flex can only be deleted by the operator in Flex Console. In\naddition, if the author's user account is deleted, all their listings\nare marked deleted as well. Listing deletion is permanent. Deleted\nlistings don't get returned by any listing endpoints. If a marketplace\nuser has transactions related to a deleted listing, however, the deleted\nlisting can be returned as an included related resource with no other\ndata than the listing id and "},{"type":"element","tagName":"code","properties":{},"children":[{"type":"text","value":"deleted: true"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{"id":"listing-extended-data","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#listing-extended-data","ariaLabel":"listing extended data permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Listing extended data"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Listings are one of the resource types in Flex where you can add\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/extended-data/"},"children":[{"type":"text","value":"extended data"}]},{"type":"text","value":". This means that listings\ncan have custom attributes beyond the default ones that Flex offers.\nExtended data can be managed through Marketplace API\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#own-listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"own_listings"}]},{"type":"text","value":"\nand Integration API\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/integration.html#listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings"}]},{"type":"text","value":"\ncreate and update endpoints, as well as in Flex Console for individual\nlistings."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Two example use cases for listing extended data are custom search and\ndifferentiating between listing types. However, listing extended data is\na powerful feature to customise listing behavior in Flex, so there are\nmultiple use cases that can be solved with setting attributes in listing\nextended data and then either passing those attributes as query\nparameters or managing the client application behavior based on the\nattributes."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"custom-listing-search","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#custom-listing-search","ariaLabel":"custom listing search permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Custom listing search"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"One of the most powerful features of Flex is the listing search using\nthe\n"},{"type":"element","tagName":"a","properties":{"href":"https://www.sharetribe.com/api-reference/marketplace.html#query-listings","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"listings/query"}]},{"type":"text","value":"\nendpoint. By default, you can query by price,\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/how-the-listing-search-works/"},"children":[{"type":"text","value":"keywords, origin,"}]},{"type":"text","value":" bounds,\navailability, and stock, among others."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In addition to the default parameters, you can query listings by public\nextended data attributes, i.e. public data and metadata. You will need\nto "},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/manage-search-schemas-with-flex-cli/"},"children":[{"type":"text","value":"set a search schema"}]},{"type":"text","value":"\nfor the attribute so that it is indexed for search within Flex."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{"id":"different-types-of-listings","style":"position:relative;"},"children":[{"type":"element","tagName":"a","properties":{"href":"#different-types-of-listings","ariaLabel":"different types of listings permalink","className":["anchor","before"]},"children":[{"type":"element","tagName":"svg","properties":{"ariaHidden":"true","focusable":"false","height":"16","version":"1.1","viewBox":"0 0 16 16","width":"16"},"children":[{"type":"element","tagName":"path","properties":{"fillRule":"evenodd","d":"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"},"children":[]}]}]},{"type":"text","value":"Different types of listings"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In addition to search filtering, you can also build views that filter\nlistings by type."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"You can for instance create service listings with\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/availability/"},"children":[{"type":"text","value":"availability and bookings"}]},{"type":"text","value":", as well as\nproduct listings with "},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/references/stock/"},"children":[{"type":"text","value":"stock"}]},{"type":"text","value":", in the same\nmarketplace, and differentiate them with a "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"listingType"}]},{"type":"text","value":" attribute in\nlisting extended data. With both availability and stock listings in the\nsame marketplace, you likely want to have separate\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/concepts/transaction-process/"},"children":[{"type":"text","value":"transaction processes"}]},{"type":"text","value":", whose\ninformation is also saved in the listing extended data."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"By passing listing type as a query parameter to the endpoint, you can\nthen create differentiated views for the two types of listings. Again,\nusing extended data as query parameters requires\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/how-to/manage-search-schemas-with-flex-cli/"},"children":[{"type":"text","value":"setting a search schema"}]},{"type":"text","value":"."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Some marketplaces want to allow filtering by entities that are not\nstrictly speaking listings available to be purchased. Examples include\nsearching by service provider, or searching for storefronts to see what\nlistings they offer. In these kinds of cases, it is useful to model\nthose elements as a new type of listing, and then determine their\nbehavior in the client app based on the extended data attribute."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"For instance, the "},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/ftw/ftw-hourly/"},"children":[{"type":"text","value":"FTW-hourly template"}]},{"type":"text","value":" handles\n"},{"type":"element","tagName":"a","properties":{"href":"/docs/legacy/introduction/introducing-yogatime/#profiles-as-bookable-listings"},"children":[{"type":"text","value":"yoga teacher profiles as bookable listings"}]},{"type":"text","value":",\nwhich follows the concept of modeling entities as listings. You could\nalso create a searchable storefront listing that cannot itself be\nbooked, and instead it displays all the listings from that specific\nprovider and allows users to contact the store."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"In Flex, listings can be modeled and modified to cover a range of\ndifferent use cases. If you are wondering about a use case for listings\nin Flex, do reach out to Flex Support through the chat widget in your\nFlex Console and let us know. We'll be happy to help you figure out your\nspecific use case and give you some suggestions for implementation."}]}],"data":{"quirksMode":false}},"headings":[{"value":"Listing lifecycle","depth":2},{"value":"Draft","depth":3},{"value":"Pending approval","depth":3},{"value":"Published","depth":3},{"value":"Closed","depth":3},{"value":"Deleted","depth":3},{"value":"Listing extended data","depth":2},{"value":"Custom listing search","depth":3},{"value":"Different types of listings","depth":3}]}},"pageContext":{"slug":"listings-overview","category":"concepts-listings"}},
    "staticQueryHashes": ["3794076007","439097193","717698143"]}