> For the complete documentation index, see [llms.txt](https://docs.limio.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.limio.com/api/catalog-api/deprecated-catalog-reads.md).

# Deprecated Catalog Reads

One endpoint for each record type, answering from the same index as `/catalog_items`. They are superseded and they stay only for the integrations that call them.

Use `/catalog_items` or `/published_catalog_items` for new work. Read the description of each endpoint first: some hold behaviour that the two general endpoints do not have yet.

## Get Pages

> \*\*Superseded.\*\* Use \`GET /catalog\_items?record\_type=page\` for the working copy, or \`GET /published\_catalog\_items?record\_type=page\` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\
> \
> This endpoint reads the \`/pages\` tree. \`/catalog\_items\` with \`record\_type=page\` reads \`/pages2\`, which is the tree that the platform gives the page record type. The two answer with different records, so compare them before you move.\
> \
> Retrieves published pages that match the supplied query parameters. The response includes metadata about the total matches, paging details, and the matching page definitions.

```json
{"openapi":"3.1.0","info":{"title":"Limio Commerce API","version":"1.0.0"},"tags":[{"name":"Deprecated Catalog Reads","description":"One endpoint for each record type, answering from the same index as `/catalog_items`. They are superseded and they stay only for the integrations that call them.\n\nUse `/catalog_items` or `/published_catalog_items` for new work. Read the description of each endpoint first: some hold behaviour that the two general endpoints do not have yet."}],"servers":[{"url":"https://{tenant}/api","description":"Limio environment API","variables":{"tenant":{"default":"your-environment.prod.limio.com","description":"Your Limio environment hostname, e.g. `acme.prod.limio.com` or `acme-sandbox.prod.limio.com`."}}}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","name":"Authorization","in":"header","description":"Publishable API key for read-only catalog access. Suitable for client-side or public-facing integrations where only catalog data (offers, products, pages, segments) is needed.\n\nGenerate a key in the Limio dashboard. See [Authentication](https://docs.limio.com/developers/api-documentation/authentication-overview#api-keys-legacy) for details."}},"parameters":{"path":{"in":"query","name":"path","description":"Filter by the exact catalog path of the item, e.g. `/offers/2024 Summer Campaign` or `/pages/Homepage`.","schema":{"type":"string"}},"tags":{"in":"query","name":"tags","description":"Filter by a tag path in the `tags` list of the record, e.g. `/tags/main`. Give the whole tag path. Pages carry tags. Offers seldom do, so on offers this filter usually answers with no records, not with an error. To find the offers with a label, use `attributes.label__limio` instead.","schema":{"type":"string"}},"optPageSize":{"in":"query","name":"opt.pageSize","description":"Number of items per page (default 50, maximum 160). The response size limit is 6 MB, so use smaller page sizes with `queryMore` pagination when retrieving large datasets. Note: this parameter cannot be used in combination with `opt.all=true` — once `opt.all` is set, the page size cannot be increased.","schema":{"type":"integer","default":50}},"optModifiedAfter":{"in":"query","name":"opt.modifiedAfter","description":"Filter items modified after the indicated date or date-time (ISO-date format, i.e '2020-12-01' or '2020-12-01T16:00:00Z')","schema":{"type":"string","format":"date-time"}},"optAll":{"in":"query","name":"opt.all","description":"Set to `true` to enable cursor-based pagination. When enabled, the response includes a `queryMore` object with `from` and `alias` fields that can be passed to subsequent requests to retrieve the next page. A maximum of 100 items will be returned per page when active.","schema":{"type":"boolean","default":false}},"optQueryMoreFrom":{"in":"query","name":"opt.queryMoreFrom","description":"The From Hash for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.from in the response)","schema":{"type":"string"}},"optQueryMoreAlias":{"in":"query","name":"opt.queryMoreAlias","description":"The Alias for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.alias in the response)","schema":{"type":"string"}},"attributes":{"in":"query","name":"attributes.YOUR_ATTRIBUTE_HERE","description":"To query with attributes, replace 'YOUR_ATTRIBUTE_HERE' with your attribute. Attributes are defined by your templates.","schema":{"type":"string"}}},"schemas":{"GetPagesResponse":{"type":"object","description":"Paginated list of published pages.","properties":{"items":{"type":"array","description":"Pages returned for the current query window.","items":{"$ref":"#/components/schemas/ElasticPage"}},"hits":{"type":"object","description":"Total number of pages that matched the query.","properties":{"value":{"type":"number","description":"The number of records found"},"relation":{"type":"string","description":"How value relates to the true total: eq (exact) or gte (lower bound)"}}},"queryMore":{"type":"object","description":"Cursor information for retrieving the next page of results.","properties":{"from":{"type":"string","description":"Cursor token for the next request."},"alias":{"type":"string","description":"Elastic alias used to continue the query."}}},"commitId":{"type":"string","description":"Commit identifier for the source index."},"buildId":{"type":"string","description":"Build identifier of the index queried."},"indexName":{"type":"string","description":"Name of the Elastic index queried."}}},"ElasticPage":{"type":"object","description":"A published page stored in the Limio catalog index.","properties":{"id":{"type":"string","description":"Page identifier within the catalog index."},"parent_path":{"type":"string","description":"Parent path for the page."},"path":{"type":"string","description":"Full path to the page."},"name":{"type":"string","description":"Human readable page name."},"type":{"type":"string","description":"Catalog record type."},"version":{"type":"string","description":"Version identifier for the page definition."},"attributes":{"type":"object","description":"Additional metadata stored with the page."},"data":{"type":"object","description":"Page configuration payload as stored in the catalog."}}}},"responses":{"401ApplicationResponse":{"description":"Unauthorized: the request lacks valid authentication credentials. Verify your Bearer token or API key is correct and has not expired.","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","description":"The unique identifier of the request"},"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"paths":{"/pages":{"get":{"operationId":"getPages","summary":"Get Pages","tags":["Deprecated Catalog Reads"],"deprecated":true,"description":"**Superseded.** Use `GET /catalog_items?record_type=page` for the working copy, or `GET /published_catalog_items?record_type=page` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\n\nThis endpoint reads the `/pages` tree. `/catalog_items` with `record_type=page` reads `/pages2`, which is the tree that the platform gives the page record type. The two answer with different records, so compare them before you move.\n\nRetrieves published pages that match the supplied query parameters. The response includes metadata about the total matches, paging details, and the matching page definitions.","parameters":[{"$ref":"#/components/parameters/path"},{"$ref":"#/components/parameters/tags"},{"$ref":"#/components/parameters/optPageSize"},{"$ref":"#/components/parameters/optModifiedAfter"},{"$ref":"#/components/parameters/optAll"},{"$ref":"#/components/parameters/optQueryMoreFrom"},{"$ref":"#/components/parameters/optQueryMoreAlias"},{"$ref":"#/components/parameters/attributes"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPagesResponse"}}}},"401":{"$ref":"#/components/responses/401ApplicationResponse"}}}}}}
```

## Get Offers V2

> \*\*Superseded.\*\* Use \`GET /catalog\_items?record\_type=offer\` for the working copy, or \`GET /published\_catalog\_items?record\_type=offer\` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\
> \
> This endpoint accepts \`offersSource\` to choose the catalog index or the published index. \`/catalog\_items\` reads the catalog index and \`/published\_catalog\_items\` reads the published one. It also accepts \`customer\_segment\`, which expands to the tags of the journeys that match the segment. \`/catalog\_items\` does not do that yet.\
> \
> Retrieves all the standalone offers in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query, an array with the details of these offers (limited to the pageSize property, a maximum of 160 items will be returned) and a queryMore object for continuing query if the amount of hits exceeded the retrieved offers and pagination is activated.\
> \
> V2 offers are offers that are created using the new offer creation flow. They are standalone offers that are not part of a campaign, but can be attached to campaigns / pages using labels. They are created using the new offer creation flow and are more flexible than legacy offers.\
> \
> V2 offers can also be versioned - you can find out more about offer versioning at the following resources:\
> &#x20; \- \[Published Offers API and Versioned Offers v2]\(<https://limio.zendesk.com/hc/en-gb/articles/10026477323421-Published-Offers-API-and-Versioned-Offers-v2)\\>
> &#x20; \- \[Set or Update an Offer Version]\(<https://limio.zendesk.com/hc/en-gb/articles/4641968133917-How-to-create-Offers-v2-to-Attach-to-Campaigns-Pages#h\\_01HCEYQE26NJSQSCDNQ7EAVZFJ)\\>
> \
> If you have the \[Published Offers API]\(<https://limio.zendesk.com/hc/en-gb/articles/10026477323421-Published-Offers-API-and-Versioned-Offers-v2>) enabled, the API will, by default, return only the published offersV2. To retrieve all offersV2 in your catalog, including both published and unpublished, you can use the offersSource query parameter.

```json
{"openapi":"3.1.0","info":{"title":"Limio Commerce API","version":"1.0.0"},"tags":[{"name":"Deprecated Catalog Reads","description":"One endpoint for each record type, answering from the same index as `/catalog_items`. They are superseded and they stay only for the integrations that call them.\n\nUse `/catalog_items` or `/published_catalog_items` for new work. Read the description of each endpoint first: some hold behaviour that the two general endpoints do not have yet."}],"servers":[{"url":"https://{tenant}/api","description":"Limio environment API","variables":{"tenant":{"default":"your-environment.prod.limio.com","description":"Your Limio environment hostname, e.g. `acme.prod.limio.com` or `acme-sandbox.prod.limio.com`."}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 Bearer token for authenticated API access. Required for order submission, object management, and administrative operations.\n\nObtain a token via the OAuth flow described in [OAuth Bearer Token](https://docs.limio.com/developers/api-documentation/authentication-overview/oauth-bearer-token).\n\nPass the token in the `Authorization` header: `Bearer <token>`"}},"parameters":{"offersSource":{"in":"query","name":"offersSource","description":"Specifies the source for fetching offers. `catalog` Retrieves all offersV2 from your catalog. `published` Retrieves only published offers.","schema":{"type":"string","enum":["catalog","published"]}},"path":{"in":"query","name":"path","description":"Filter by the exact catalog path of the item, e.g. `/offers/2024 Summer Campaign` or `/pages/Homepage`.","schema":{"type":"string"}},"tags":{"in":"query","name":"tags","description":"Filter by a tag path in the `tags` list of the record, e.g. `/tags/main`. Give the whole tag path. Pages carry tags. Offers seldom do, so on offers this filter usually answers with no records, not with an error. To find the offers with a label, use `attributes.label__limio` instead.","schema":{"type":"string"}},"reducedData":{"in":"query","name":"reducedData","description":"Set to `true` to leave out a fixed set of heavy display attributes (assets, attachments, checkout, offer features and styling) and the attributes of each expanded product. It is not a projection: it does not take a list of fields, and it does not remove a large attribute array such as `allowed_countries`. Use it to trim a response, not to choose what a response holds.","schema":{"type":"boolean"}},"optPageSize":{"in":"query","name":"opt.pageSize","description":"Number of items per page (default 50, maximum 160). The response size limit is 6 MB, so use smaller page sizes with `queryMore` pagination when retrieving large datasets. Note: this parameter cannot be used in combination with `opt.all=true` — once `opt.all` is set, the page size cannot be increased.","schema":{"type":"integer","default":50}},"optModifiedAfter":{"in":"query","name":"opt.modifiedAfter","description":"Filter items modified after the indicated date or date-time (ISO-date format, i.e '2020-12-01' or '2020-12-01T16:00:00Z')","schema":{"type":"string","format":"date-time"}},"optAll":{"in":"query","name":"opt.all","description":"Set to `true` to enable cursor-based pagination. When enabled, the response includes a `queryMore` object with `from` and `alias` fields that can be passed to subsequent requests to retrieve the next page. A maximum of 100 items will be returned per page when active.","schema":{"type":"boolean","default":false}},"optQueryMoreFrom":{"in":"query","name":"opt.queryMoreFrom","description":"The From Hash for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.from in the response)","schema":{"type":"string"}},"optQueryMoreAlias":{"in":"query","name":"opt.queryMoreAlias","description":"The Alias for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.alias in the response)","schema":{"type":"string"}},"attributes":{"in":"query","name":"attributes.YOUR_ATTRIBUTE_HERE","description":"To query with attributes, replace 'YOUR_ATTRIBUTE_HERE' with your attribute. Attributes are defined by your templates.","schema":{"type":"string"}}},"schemas":{"GetOffersV2Response":{"type":"object","properties":{"hits":{"type":"object","description":"Amount of records found on the catalog in response to the query","properties":{"value":{"type":"number","description":"The number of records found"},"relation":{"type":"string","description":"How value relates to the true total: eq (exact) or gte (lower bound)"}}},"items":{"type":"array","description":"Offers retrieved","items":{"$ref":"#/components/schemas/ElasticOfferV2"}},"queryMore":{"type":"object","description":"query more object used for pagination","properties":{"from":{"type":"string","description":"Cursor for the next page of results"},"alias":{"type":"string","description":"The Alias used to fetch next page of the query"}}},"commitId":{"description":"the commitId from the index used to query","type":"string"}}},"ElasticOfferV2":{"properties":{"id":{"type":"string","description":"Offer id in the Elastic index"},"name":{"type":"string","description":"Offer name"},"path":{"type":"string","description":"Path to the offer"},"created":{"type":"string","description":"Offer creation date"},"modified":{"type":"string","description":"Offer last modification date"},"version":{"type":"string","description":"Offer version"},"version_date":{"type":"string","description":"Offer version date"},"record_type":{"type":"string","description":"Record type"},"duplicatedFrom":{"type":"string","description":"Path of offer duplicated from"},"baseTemplate":{"type":"string","description":"Base template path"},"priceReference":{"type":"string","description":"Reference price path"},"user":{"type":"string","description":"User associated with offer"},"data":{"type":"object","description":"Data attached to offer","properties":{"attributes":{"type":"object","properties":{"display_name__limio":{"type":"string","description":"Display name"},"checkout_description__limio":{"type":"string","description":"Checkout description"},"allowed_countries__limio":{"type":"array","description":"Allowed countries"},"checkout__limio":{"type":"object","properties":{"checkout_type":{"type":"string"},"external_url":{"type":"string"}}},"allow_multibuy__limio":{"type":"boolean","description":"Whether multiple purchases of this offer are allowed"},"label__limio":{"type":"array","description":"Labels"},"term__limio":{"type":"object","properties":{"renewal_type":{"type":"string"},"renewal_trigger":{"type":"string"}}},"push_to_checkout__limio":{"type":"boolean","description":"Push to checkout"},"initial_term__limio":{"type":"object","properties":{"renewal_type":{"type":"string"},"renewal_trigger":{"type":"string"}}},"cross_sell_addons__limio":{"type":"object","description":"Cross-sell add-ons such as additional services","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"}}}},"item_label":{"type":"string"},"item_type":{"type":"string"}}},"upsell_offers__limio":{"type":"object","description":"Upsell offers to higher SaaS tiers","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"}}}},"item_label":{"type":"string"},"item_type":{"type":"string"}}},"cross_sell_offers__limio":{"type":"object","description":"Cross-sell offers such as complementary SaaS solutions","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"path":{"type":"string"}}}},"item_label":{"type":"string"},"item_type":{"type":"string"}}},"upsell_display_name__limio":{"type":"string","description":"Upsell display name"},"upsell_display_description__limio":{"type":"string","description":"Upsell display description"},"cross_sell_display_description__limio":{"type":"string","description":"Cross-sell display description"},"cross_sell_display_name__limio":{"type":"string","description":"Cross-sell display name"}}},"price":{"type":"array","description":"Prices of offer","items":{"type":"object","description":"Price item","properties":{"name":{"type":"string","description":"Charge name"},"label":{"type":"string","description":"Label for charge"},"value":{"type":"string","description":"Value of charge"},"currencyCode":{"type":"string","description":"Currency of charge"},"type":{"type":"string","description":"Pricing type"},"trigger":{"type":"string","description":"Trigger for the charge"},"repeat_interval":{"type":"integer","description":"Number of repeat_interval_type between charges"},"repeat_interval_type":{"type":"string","description":"The unit between charges"},"repeat_count":{"type":"integer","description":"The number of times the charge will be repeated"},"delay_interval":{"type":"integer","description":"Number of delay_interval_type that charge will be delayed"},"delay_interval_type":{"type":"string","description":"The unit charge will be delayed"},"attributes":{"type":"array","items":{}},"subscription_start_day":{"type":"string","description":"When the subscription starts"}}}},"productBundles":{"type":"array","description":"Product bundles attached to offer","items":{"type":"object","properties":{"product_path":{"type":"string","description":"Path to product"},"revenue_split":{"type":"string","description":"Revenue split percentage"},"rate_plan":{"type":"string","description":"Rate plan"}}}},"products":{"type":"array","description":"Products attached to offer","items":{"type":"object","properties":{"baseTemplate":{"type":"string","description":"Base template path"},"path":{"type":"string","description":"Path to product"},"lastSynced":{"type":"string","description":"Last synced timestamp"},"synced":{"type":"boolean"},"created":{"type":"string","description":"Product creation date"},"syncedFrom":{"type":"string","description":"Synced from id"},"modified":{"type":"string","description":"Product last modification date"},"attributes":{"type":"object","properties":{"display_name__limio":{"type":"string","description":"Display name"},"has_delivery__limio":{"type":"boolean","description":"Has delivery"},"product_code__limio":{"type":"string","description":"Product code"}}},"record_type":{"type":"string"}}}}}}}}},"responses":{"401ApplicationResponse":{"description":"Unauthorized: the request lacks valid authentication credentials. Verify your Bearer token or API key is correct and has not expired.","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","description":"The unique identifier of the request"},"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"paths":{"/offers/v2":{"get":{"operationId":"getOffers2","summary":"Get Offers V2","tags":["Deprecated Catalog Reads"],"deprecated":true,"description":"**Superseded.** Use `GET /catalog_items?record_type=offer` for the working copy, or `GET /published_catalog_items?record_type=offer` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\n\nThis endpoint accepts `offersSource` to choose the catalog index or the published index. `/catalog_items` reads the catalog index and `/published_catalog_items` reads the published one. It also accepts `customer_segment`, which expands to the tags of the journeys that match the segment. `/catalog_items` does not do that yet.\n\nRetrieves all the standalone offers in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query, an array with the details of these offers (limited to the pageSize property, a maximum of 160 items will be returned) and a queryMore object for continuing query if the amount of hits exceeded the retrieved offers and pagination is activated.\n\nV2 offers are offers that are created using the new offer creation flow. They are standalone offers that are not part of a campaign, but can be attached to campaigns / pages using labels. They are created using the new offer creation flow and are more flexible than legacy offers.\n\nV2 offers can also be versioned - you can find out more about offer versioning at the following resources:\n  - [Published Offers API and Versioned Offers v2](https://limio.zendesk.com/hc/en-gb/articles/10026477323421-Published-Offers-API-and-Versioned-Offers-v2)\n  - [Set or Update an Offer Version](https://limio.zendesk.com/hc/en-gb/articles/4641968133917-How-to-create-Offers-v2-to-Attach-to-Campaigns-Pages#h_01HCEYQE26NJSQSCDNQ7EAVZFJ)\n\nIf you have the [Published Offers API](https://limio.zendesk.com/hc/en-gb/articles/10026477323421-Published-Offers-API-and-Versioned-Offers-v2) enabled, the API will, by default, return only the published offersV2. To retrieve all offersV2 in your catalog, including both published and unpublished, you can use the offersSource query parameter.","parameters":[{"$ref":"#/components/parameters/offersSource"},{"$ref":"#/components/parameters/path"},{"$ref":"#/components/parameters/tags"},{"$ref":"#/components/parameters/reducedData"},{"$ref":"#/components/parameters/optPageSize"},{"$ref":"#/components/parameters/optModifiedAfter"},{"$ref":"#/components/parameters/optAll"},{"$ref":"#/components/parameters/optQueryMoreFrom"},{"$ref":"#/components/parameters/optQueryMoreAlias"},{"$ref":"#/components/parameters/attributes"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOffersV2Response"}}}},"401":{"$ref":"#/components/responses/401ApplicationResponse"}}}}}}
```

## Get Add Ons

> \*\*Superseded.\*\* Use \`GET /catalog\_items?record\_type=add\_on\` for the working copy, or \`GET /published\_catalog\_items?record\_type=add\_on\` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\
> \
> This endpoint accepts \`addOnsSource\` to choose the catalog index or the published index. \`/catalog\_items\` reads the catalog index and \`/published\_catalog\_items\` reads the published one.\
> \
> Retrieves all the standalone add ons in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query, an array with the details of these add ons (limited to the pageSize property, default to 50) and a queryMore object for continuing query if the amount of hits exceeded the retrieved offers and pagination is activated.

```json
{"openapi":"3.1.0","info":{"title":"Limio Commerce API","version":"1.0.0"},"tags":[{"name":"Deprecated Catalog Reads","description":"One endpoint for each record type, answering from the same index as `/catalog_items`. They are superseded and they stay only for the integrations that call them.\n\nUse `/catalog_items` or `/published_catalog_items` for new work. Read the description of each endpoint first: some hold behaviour that the two general endpoints do not have yet."}],"servers":[{"url":"https://{tenant}/api","description":"Limio environment API","variables":{"tenant":{"default":"your-environment.prod.limio.com","description":"Your Limio environment hostname, e.g. `acme.prod.limio.com` or `acme-sandbox.prod.limio.com`."}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 Bearer token for authenticated API access. Required for order submission, object management, and administrative operations.\n\nObtain a token via the OAuth flow described in [OAuth Bearer Token](https://docs.limio.com/developers/api-documentation/authentication-overview/oauth-bearer-token).\n\nPass the token in the `Authorization` header: `Bearer <token>`"}},"parameters":{"path":{"in":"query","name":"path","description":"Filter by the exact catalog path of the item, e.g. `/offers/2024 Summer Campaign` or `/pages/Homepage`.","schema":{"type":"string"}},"addOnsSource":{"in":"query","name":"addOnsSource","description":"Specifies the source for fetching Add Ons. `catalog` Retrieves all add ons from your catalog. `published` Retrieves only published add ons.","schema":{"type":"string","enum":["catalog","published"]}},"reducedData":{"in":"query","name":"reducedData","description":"Set to `true` to leave out a fixed set of heavy display attributes (assets, attachments, checkout, offer features and styling) and the attributes of each expanded product. It is not a projection: it does not take a list of fields, and it does not remove a large attribute array such as `allowed_countries`. Use it to trim a response, not to choose what a response holds.","schema":{"type":"boolean"}},"optPageSize":{"in":"query","name":"opt.pageSize","description":"Number of items per page (default 50, maximum 160). The response size limit is 6 MB, so use smaller page sizes with `queryMore` pagination when retrieving large datasets. Note: this parameter cannot be used in combination with `opt.all=true` — once `opt.all` is set, the page size cannot be increased.","schema":{"type":"integer","default":50}},"optModifiedAfter":{"in":"query","name":"opt.modifiedAfter","description":"Filter items modified after the indicated date or date-time (ISO-date format, i.e '2020-12-01' or '2020-12-01T16:00:00Z')","schema":{"type":"string","format":"date-time"}},"optAll":{"in":"query","name":"opt.all","description":"Set to `true` to enable cursor-based pagination. When enabled, the response includes a `queryMore` object with `from` and `alias` fields that can be passed to subsequent requests to retrieve the next page. A maximum of 100 items will be returned per page when active.","schema":{"type":"boolean","default":false}},"optQueryMoreFrom":{"in":"query","name":"opt.queryMoreFrom","description":"The From Hash for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.from in the response)","schema":{"type":"string"}},"optQueryMoreAlias":{"in":"query","name":"opt.queryMoreAlias","description":"The Alias for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.alias in the response)","schema":{"type":"string"}},"attributes":{"in":"query","name":"attributes.YOUR_ATTRIBUTE_HERE","description":"To query with attributes, replace 'YOUR_ATTRIBUTE_HERE' with your attribute. Attributes are defined by your templates.","schema":{"type":"string"}}},"schemas":{"ElasticAddOn":{"properties":{"id":{"type":"string","description":"Add On id in the Elastic index"},"name":{"type":"string","description":"Add On name"},"path":{"type":"string","description":"Path to the Add On"},"created":{"type":"string","description":"Add On creation date"},"modified":{"type":"string","description":"Add On last modification date"},"version":{"type":"string","description":"Add On version"},"version_date":{"type":"string","description":"Add On version date"},"record_type":{"type":"string","description":"Record type"},"duplicatedFrom":{"type":"string","description":"Path of Add On duplicated from"},"baseTemplate":{"type":"string","description":"Base template path"},"user":{"type":"string","description":"User associated with Add On"},"data":{"type":"object","description":"Data attached to Add On","properties":{"attributes":{"type":"object","properties":{"display_name__limio":{"type":"string","description":"Display name"},"label__limio":{"type":"array","description":"Labels"}}},"price":{"type":"array","description":"Prices of Add On","items":{"type":"object","description":"Price item","properties":{"attributes":{"type":"object"},"name":{"type":"string","description":"Charge name"},"label":{"type":"string","description":"Label for charge"},"currencyCode":{"type":"string","description":"Currency of charge"},"value":{"type":"string","description":"Value of charge"},"type":{"type":"string","description":"Pricing type"},"trigger":{"type":"string","description":"Trigger for the charge"},"repeat_interval":{"type":"integer","description":"Number of repeat_interval_type between charges"},"repeat_interval_type":{"type":"string","description":"The unit between charges"},"repeat_count":{"type":"integer","description":"The number of times the charge will be repeated"},"delay_interval":{"type":"integer","description":"Number of delay_interval_type that charge will be delayed"},"delay_interval_type":{"type":"string","description":"The unit charge will be delayed"}}}},"productBundles":{"type":"array","description":"Product bundles attached to Add On","items":{"type":"object","properties":{"product_path":{"type":"string","description":"Path to product"},"revenue_split":{"type":"string","description":"Revenue split percentage"},"rate_plan":{"type":"string","description":"Rate plan"}}}},"products":{"type":"array","description":"Products attached to Add On","items":{"type":"object","properties":{"baseTemplate":{"type":"string","description":"Base template path"},"path":{"type":"string","description":"Path to product"},"lastSynced":{"type":"string","description":"Last synced timestamp"},"synced":{"type":"boolean"},"created":{"type":"string","description":"Product creation date"},"syncedFrom":{"type":"string","description":"Synced from id"},"modified":{"type":"string","description":"Product last modification date"},"attributes":{"type":"object","properties":{"display_name__limio":{"type":"string","description":"Display name"},"has_delivery__limio":{"type":"boolean","description":"Has delivery"},"product_code__limio":{"type":"string","description":"Product code"}}},"record_type":{"type":"string"}}}}}}}}},"responses":{"401ApplicationResponse":{"description":"Unauthorized: the request lacks valid authentication credentials. Verify your Bearer token or API key is correct and has not expired.","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","description":"The unique identifier of the request"},"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"paths":{"/add_ons":{"get":{"operationId":"getAddOns","summary":"Get Add Ons","tags":["Deprecated Catalog Reads"],"deprecated":true,"description":"**Superseded.** Use `GET /catalog_items?record_type=add_on` for the working copy, or `GET /published_catalog_items?record_type=add_on` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\n\nThis endpoint accepts `addOnsSource` to choose the catalog index or the published index. `/catalog_items` reads the catalog index and `/published_catalog_items` reads the published one.\n\nRetrieves all the standalone add ons in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query, an array with the details of these add ons (limited to the pageSize property, default to 50) and a queryMore object for continuing query if the amount of hits exceeded the retrieved offers and pagination is activated.","parameters":[{"$ref":"#/components/parameters/path"},{"$ref":"#/components/parameters/addOnsSource"},{"$ref":"#/components/parameters/reducedData"},{"$ref":"#/components/parameters/optPageSize"},{"$ref":"#/components/parameters/optModifiedAfter"},{"$ref":"#/components/parameters/optAll"},{"$ref":"#/components/parameters/optQueryMoreFrom"},{"$ref":"#/components/parameters/optQueryMoreAlias"},{"$ref":"#/components/parameters/attributes"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"hits":{"type":"object","description":"Amount of records found on the catalog in response to the query","properties":{"value":{"type":"number","description":"The number of records found"},"relation":{"type":"string","description":"How value relates to the true total: eq (exact) or gte (lower bound)"}}},"items":{"type":"array","description":"Add Ons retrieved","items":{"$ref":"#/components/schemas/ElasticAddOn"}},"queryMore":{"type":"object","description":"query more object used for pagination","properties":{"from":{"type":"string","description":"Cursor for the next page of results"},"alias":{"type":"string","description":"The Alias used to fetch next page of the query"}}},"commitId":{"description":"the commitId from the index used to query","type":"string"}}}}}},"401":{"$ref":"#/components/responses/401ApplicationResponse"}}}}}}
```

## Get Products

> \*\*Superseded.\*\* Use \`GET /catalog\_items?record\_type=product\` for the working copy, or \`GET /published\_catalog\_items?record\_type=product\` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\
> \
> Retrieves all the products in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query, an array with the details of these products (limited to the pageSize property, default to 50) and a queryMore object for continuing query if the amount of hits exceeded the retrieved products and pagination is activated.

```json
{"openapi":"3.1.0","info":{"title":"Limio Commerce API","version":"1.0.0"},"tags":[{"name":"Deprecated Catalog Reads","description":"One endpoint for each record type, answering from the same index as `/catalog_items`. They are superseded and they stay only for the integrations that call them.\n\nUse `/catalog_items` or `/published_catalog_items` for new work. Read the description of each endpoint first: some hold behaviour that the two general endpoints do not have yet."}],"servers":[{"url":"https://{tenant}/api","description":"Limio environment API","variables":{"tenant":{"default":"your-environment.prod.limio.com","description":"Your Limio environment hostname, e.g. `acme.prod.limio.com` or `acme-sandbox.prod.limio.com`."}}}],"security":[{"ApiKey":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","name":"Authorization","in":"header","description":"Publishable API key for read-only catalog access. Suitable for client-side or public-facing integrations where only catalog data (offers, products, pages, segments) is needed.\n\nGenerate a key in the Limio dashboard. See [Authentication](https://docs.limio.com/developers/api-documentation/authentication-overview#api-keys-legacy) for details."},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 Bearer token for authenticated API access. Required for order submission, object management, and administrative operations.\n\nObtain a token via the OAuth flow described in [OAuth Bearer Token](https://docs.limio.com/developers/api-documentation/authentication-overview/oauth-bearer-token).\n\nPass the token in the `Authorization` header: `Bearer <token>`"}},"parameters":{"path":{"in":"query","name":"path","description":"Filter by the exact catalog path of the item, e.g. `/offers/2024 Summer Campaign` or `/pages/Homepage`.","schema":{"type":"string"}},"optPageSize":{"in":"query","name":"opt.pageSize","description":"Number of items per page (default 50, maximum 160). The response size limit is 6 MB, so use smaller page sizes with `queryMore` pagination when retrieving large datasets. Note: this parameter cannot be used in combination with `opt.all=true` — once `opt.all` is set, the page size cannot be increased.","schema":{"type":"integer","default":50}},"optModifiedAfter":{"in":"query","name":"opt.modifiedAfter","description":"Filter items modified after the indicated date or date-time (ISO-date format, i.e '2020-12-01' or '2020-12-01T16:00:00Z')","schema":{"type":"string","format":"date-time"}},"optAll":{"in":"query","name":"opt.all","description":"Set to `true` to enable cursor-based pagination. When enabled, the response includes a `queryMore` object with `from` and `alias` fields that can be passed to subsequent requests to retrieve the next page. A maximum of 100 items will be returned per page when active.","schema":{"type":"boolean","default":false}},"optQueryMoreFrom":{"in":"query","name":"opt.queryMoreFrom","description":"The From Hash for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.from in the response)","schema":{"type":"string"}},"optQueryMoreAlias":{"in":"query","name":"opt.queryMoreAlias","description":"The Alias for the query more functionality. Use it to fetch next page of the query (obtained from queryMore.alias in the response)","schema":{"type":"string"}},"attributes":{"in":"query","name":"attributes.YOUR_ATTRIBUTE_HERE","description":"To query with attributes, replace 'YOUR_ATTRIBUTE_HERE' with your attribute. Attributes are defined by your templates.","schema":{"type":"string"}}},"schemas":{"GetProductsResponse":{"type":"object","properties":{"hits":{"type":"object","description":"Amount of records found on the catalog responding the query","properties":{"value":{"type":"number","description":"The number of records found"},"relation":{"type":"string","description":"How value relates to the true total: eq (exact) or gte (lower bound)"}}},"items":{"type":"array","description":"Products retrieved","items":{"$ref":"#/components/schemas/ElasticProduct"}},"queryMore":{"type":"object","description":"query more object used for pagination","properties":{"from":{"type":"string","description":"Cursor for the next page of results"},"alias":{"type":"string","description":"The Alias used to fetch next page of the query"}}},"commitId":{"description":"the commitId from the index used to query","type":"string"}}},"ElasticProduct":{"type":"object","properties":{"id":{"type":"string","description":"Product id in the Elastic index"},"name":{"type":"string","description":"Name of product"},"parent_path":{"type":"string","description":"Parent Path"},"path":{"type":"string","description":"Product path"},"data":{"type":"object","properties":{"attributes":{"type":"object","description":"Attributes for product"},"baseTemplate":{"type":"string","description":"Template for product attributes"}}}}}},"responses":{"401ApplicationResponse":{"description":"Unauthorized: the request lacks valid authentication credentials. Verify your Bearer token or API key is correct and has not expired.","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","description":"The unique identifier of the request"},"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"paths":{"/products":{"get":{"operationId":"getProducts","summary":"Get Products","deprecated":true,"description":"**Superseded.** Use `GET /catalog_items?record_type=product` for the working copy, or `GET /published_catalog_items?record_type=product` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\n\nRetrieves all the products in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query, an array with the details of these products (limited to the pageSize property, default to 50) and a queryMore object for continuing query if the amount of hits exceeded the retrieved products and pagination is activated.","tags":["Deprecated Catalog Reads"],"parameters":[{"$ref":"#/components/parameters/path"},{"$ref":"#/components/parameters/optPageSize"},{"$ref":"#/components/parameters/optModifiedAfter"},{"$ref":"#/components/parameters/optAll"},{"$ref":"#/components/parameters/optQueryMoreFrom"},{"$ref":"#/components/parameters/optQueryMoreAlias"},{"$ref":"#/components/parameters/attributes"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProductsResponse"}}}},"401":{"$ref":"#/components/responses/401ApplicationResponse"}}}}}}
```

## Get Segments

> \*\*Superseded.\*\* Use \`GET /catalog\_items?record\_type=segment\` for the working copy, or \`GET /published\_catalog\_items?record\_type=segment\` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\
> \
> Retrieves the segments in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query and an array with the details of these segments. A single page of up to 160 segments is returned. This endpoint does not support pagination or page-size options, and the \`queryMore\` object is not returned.

```json
{"openapi":"3.1.0","info":{"title":"Limio Commerce API","version":"1.0.0"},"tags":[{"name":"Deprecated Catalog Reads","description":"One endpoint for each record type, answering from the same index as `/catalog_items`. They are superseded and they stay only for the integrations that call them.\n\nUse `/catalog_items` or `/published_catalog_items` for new work. Read the description of each endpoint first: some hold behaviour that the two general endpoints do not have yet."}],"servers":[{"url":"https://{tenant}/api","description":"Limio environment API","variables":{"tenant":{"default":"your-environment.prod.limio.com","description":"Your Limio environment hostname, e.g. `acme.prod.limio.com` or `acme-sandbox.prod.limio.com`."}}}],"security":[{"ApiKey":[]},{"bearerAuth":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","name":"Authorization","in":"header","description":"Publishable API key for read-only catalog access. Suitable for client-side or public-facing integrations where only catalog data (offers, products, pages, segments) is needed.\n\nGenerate a key in the Limio dashboard. See [Authentication](https://docs.limio.com/developers/api-documentation/authentication-overview#api-keys-legacy) for details."},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OAuth 2.0 Bearer token for authenticated API access. Required for order submission, object management, and administrative operations.\n\nObtain a token via the OAuth flow described in [OAuth Bearer Token](https://docs.limio.com/developers/api-documentation/authentication-overview/oauth-bearer-token).\n\nPass the token in the `Authorization` header: `Bearer <token>`"}},"parameters":{"path":{"in":"query","name":"path","description":"Filter by the exact catalog path of the item, e.g. `/offers/2024 Summer Campaign` or `/pages/Homepage`.","schema":{"type":"string"}},"attributes":{"in":"query","name":"attributes.YOUR_ATTRIBUTE_HERE","description":"To query with attributes, replace 'YOUR_ATTRIBUTE_HERE' with your attribute. Attributes are defined by your templates.","schema":{"type":"string"}}},"schemas":{"GetSegmentsResponse":{"type":"object","properties":{"hits":{"type":"object","description":"Amount of records found on the catalog responding the query","properties":{"value":{"type":"number","description":"The number of records found"},"relation":{"type":"string","description":"How value relates to the true total: eq (exact) or gte (lower bound)"}}},"items":{"type":"array","description":"Segments retrieved","items":{"$ref":"#/components/schemas/ElasticSegment"}},"queryMore":{"type":"object","description":"query more object used for pagination","properties":{"from":{"type":"string","description":"Cursor for the next page of results"},"alias":{"type":"string","description":"The Alias used to fetch next page of the query"}}},"commitId":{"description":"the commitId from the index used to query","type":"string"}}},"ElasticSegment":{"type":"object","properties":{"id":{"type":"string","description":"Segment id in the Elastic index"},"name":{"type":"string","description":"Name of segment"},"parent_path":{"type":"string","description":"Parent Path"},"path":{"type":"string","description":"Segment path"},"data":{"type":"object","properties":{"attributes":{"type":"object","description":"Attributes for segment"},"baseTemplate":{"type":"string","description":"Template for segment attributes"}}}}}},"responses":{"401ApplicationResponse":{"description":"Unauthorized: the request lacks valid authentication credentials. Verify your Bearer token or API key is correct and has not expired.","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","description":"The unique identifier of the request"},"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"paths":{"/segments":{"get":{"operationId":"getSegments","summary":"Get Segments","tags":["Deprecated Catalog Reads"],"deprecated":true,"description":"**Superseded.** Use `GET /catalog_items?record_type=segment` for the working copy, or `GET /published_catalog_items?record_type=segment` for the published copy. This endpoint answers from the same index and stays only for the integrations that call it.\n\nRetrieves the segments in the Catalog matching the specified queries. It will retrieve an object containing a number for the amount of hits that responded to the query and an array with the details of these segments. A single page of up to 160 segments is returned. This endpoint does not support pagination or page-size options, and the `queryMore` object is not returned.","parameters":[{"$ref":"#/components/parameters/path"},{"$ref":"#/components/parameters/attributes"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSegmentsResponse"}}}},"401":{"$ref":"#/components/responses/401ApplicationResponse"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.limio.com/api/catalog-api/deprecated-catalog-reads.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
