Catalog API

Integration Manual

This API provides item data, specifically product categories and the products that belong to those categories. Both endpoints require authentication using an API token, which will be provided separately.

Authentication

All requests must include a valid Bearer token and request JSON responses.

Headers

Authorization: Bearer YOUR_API_TOKEN
Accept: application/json

Base URL example

https://www.lalizas.com/api

Endpoint

Get Categories

GET /categories

Returns all linked product categories. The endpoint is not paginated.

Parameter Type Required Description
locales array No Limits translated fields to the requested locales. Example: locales[]=en&locales[]=el.
active boolean No true returns active categories, false returns inactive categories, and an omitted value returns all categories.

Example Request

GET /api/categories?locales[]=en&locales[]=el
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json

Example Response

{
  "data": [
    {
      "id": "1001",
      "parent_id": null,
      "title": {
        "en": "Lifejackets",
        "el": "Σωσίβια"
      },
      "slug": {
        "en": "lifejackets",
        "el": "sosivia"
      },
      "description": {
        "en": "<p>Category description</p>",
        "el": "<p>Περιγραφή κατηγορίας</p>"
      },
      "images": [
        "https://www.lalizas.com/storage/categories/image.jpg"
      ],
      "is_active": true
    }
  ]
}
Property Type Description
idstringThe public category identifier.
parent_idstring/nullThe parent category id. null means this is a top-level category.
titleobjectTranslated category title, keyed by locale.
slugobjectTranslated URL slug, keyed by locale.
descriptionobjectTranslated HTML description. CSS class attributes are removed and relative links are converted to absolute URLs.
imagesarrayPublic image URLs for the category, ordered by display order.
is_activebooleanIndicates whether the category is active.

Endpoint

Get Products

GET /products

Returns paginated product data, including product categories, product images, product variants/items, and item attributes.

Parameter Type Required Description
localesarrayNoLimits translated fields to the requested locales. Example: locales[]=en&locales[]=el.
localestringNoValidated by the API, but translated responses are currently controlled by locales.
activebooleanNotrue returns active products, false returns inactive products, and an omitted value returns all products.
per_pageintegerNoNumber of products per page. Minimum: 10. Maximum: 500. Default: 200.

Example Request

GET /api/products?locales[]=en&locales[]=el&per_page=100
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json

Example Response

{
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": "01HXAMPLEULID1234567890",
        "title": {
          "en": "Product title",
          "el": "Τίτλος προϊόντος"
        },
        "description": {
          "en": "<p>Product description</p>",
          "el": "<p>Περιγραφή προϊόντος</p>"
        },
        "details": {
          "en": "<p>Product details</p>",
          "el": "<p>Λεπτομέρειες προϊόντος</p>"
        },
        "benefits": {
          "en": "<ul><li>Benefit</li></ul>",
          "el": "<ul><li>Πλεονέκτημα</li></ul>"
        },
        "videos": [],
        "is_active": true,
        "categories": ["1001", "1002"],
        "images": [
          "https://www.lalizas.com/storage/products/product-image.jpg"
        ],
        "items": [
          {
            "id": "ITEM-CODE-001",
            "is_active": true,
            "title": {
              "en": "Product title",
              "el": "Τίτλος προϊόντος"
            },
            "images": [
              "https://www.lalizas.com/storage/items/item-image.jpg"
            ],
            "attributes": [
              {
                "id": 1,
                "title": {
                  "en": "Size",
                  "el": "Μέγεθος"
                },
                "value": {
                  "en": "Large",
                  "el": "Μεγάλο"
                }
              }
            ]
          }
        ]
      }
    ],
    "first_page_url": "https://www.lalizas.com/api/products?page=1",
    "from": 1,
    "last_page": 10,
    "next_page_url": "https://www.lalizas.com/api/products?page=2",
    "path": "https://www.lalizas.com/api/products",
    "per_page": 100,
    "prev_page_url": null,
    "to": 100,
    "total": 1000
  }
}
Product PropertyTypeDescription
idstringThe product ULID. This is the public product identifier.
titleobjectTranslated product title, keyed by locale.
descriptionobjectTranslated HTML product description. CSS class attributes are removed and relative links are converted to absolute URLs.
detailsobjectTranslated HTML product details, keyed by locale.
benefitsobjectTranslated HTML product benefits, keyed by locale.
videosarray/object/nullProduct video data as stored in the system.
is_activebooleanIndicates whether the product is active.
categoriesarrayList of category ids that this product belongs to.
imagesarrayPublic product image URLs, ordered by display order.
itemsarrayProduct item/variant records.
Item PropertyTypeDescription
idstringThe item code.
is_activebooleanIndicates whether the item is active.
titleobjectTranslated product title, keyed by locale.
imagesarrayPublic item image URL, if available. Empty array if no item image exists.
attributesarrayList of item-specific product attributes.
AttributeType
idinteger
titleobject
valueobject/null

Pagination

The /products endpoint is paginated. Use per_page to control the number of products returned per page.

GET /api/products?per_page=100
GET /api/products?page=2&per_page=100
Minimum10
Maximum500
Default200

Laravel pagination metadata is included inside the data object. The /categories endpoint is not paginated.

Locale Filtering

The API supports translated fields. Use the locales query parameter to request specific languages.

GET /api/products?locales[]=en&locales[]=el
GET /api/categories?locales[]=en&locales[]=el

Translated fields are returned as objects keyed by locale.

{
  "title": {
    "en": "Product title",
    "el": "Τίτλος προϊόντος"
  }
}

If locales is not provided, the API may return all available translations, depending on the stored translations.