Inventory & Products | Stock Types | Get Stock Types

Getting Stock Type | Unit Of Measurement (UOM) Data

This document outlines the procedure for making API calls to retrieve stock type data from https://easycms.fi/public_api/get_stock_types/. Utilize various parameters to filter and customize your data retrieval.

Stock Types Data Retrieval

Fetch stock type data effectively using the below API call. Apply the IN, NOT_IN, or other relevant parameters as an array or a single integer to filter results according to your specific needs.

Endpoint and Method

  • Endpoint: https://easycms.fi/public_api/get_stock_types/
  • Method: POST

Parameters | Payload

Each parameter can be used individually or in combination to refine your data retrieval:

  • TOKEN (api_key): Your unique API key for authentication. How to Create API Credentials.
  • username: Your login username.
  • password: Your login password.
  • account: Your specific account ID.
  • Pagination: To manage data effectively, this endpoint supports fetching up to 50 stock types at a time.
    • start - Specify the starting point from which to begin fetching stock types.
    • limit - Control the number of stock types returned in a single request. The maximum limit is 50, but you can opt for a smaller number based on your needs.
  • Filters:
    • IN - Specify Stock Type IDs to include specific stock types (optional, array or single integer).
    • NOT_IN - Specify Stock Type IDs to exclude specific stock types (optional, array or single integer).
    • search - Search keyword (optional, string). Performs a partial (LIKE) match across multiple stock type columns. Supports multi-word queries separated by spaces or + — each word must match at least one column (AND logic between words). Case-insensitive.
    • Searchable columns: stock_type_name, stock_type_number, stock_type_id, cruom_id



Understanding Stock Type Search

The search parameter enables broad keyword matching across all relevant columns of the stock type record. This is useful for:

  • Quick lookup: Find a stock type by partial name (searches across all language variants stored in stock_type_name).
  • Number search: Find stock types by their stock type number (stock_type_number) or internal ID (stock_type_id).
  • UUID search: Look up stock types by their CRUOM ID (cruom_id).
  • Multi-word search: Use spaces to narrow results — e.g., search=KPL+PCS will only return stock types where one word matches "KPL" AND another matches "PCS" across any searchable columns.

Each word in the search query is matched independently across all searchable columns using OR within a word, and AND between words.



Call Examples in Different Languages


# Get all stock types (default: first 50)
curl -X POST 'https://easycms.fi/public_api/get_stock_types' \
-H 'Authorization1: TOKEN' \
-d 'username=USERNAME&password=PASSWORD&account=ACCOUNT_ID'

# Search stock types by keyword (matches stock_type_name, stock_type_number, stock_type_id, cruom_id)
curl -X POST 'https://easycms.fi/public_api/get_stock_types' \
-H 'Authorization1: TOKEN' \
-d 'username=USERNAME&password=PASSWORD&account=ACCOUNT_ID&search=KPL'

# Search stock types by multiple keywords (AND logic)
curl -X POST 'https://easycms.fi/public_api/get_stock_types' \
-H 'Authorization1: TOKEN' \
-d 'username=USERNAME&password=PASSWORD&account=ACCOUNT_ID&search=KPL+PCS'

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://easycms.fi/public_api/get_stock_types",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => http_build_query(['username' => 'USERNAME', 'password' => 'PASSWORD', 'account' => 'ACCOUNT_ID', 'search' => 'KPL']),
  CURLOPT_HTTPHEADER => array("Authorization1: TOKEN"),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

import requests
url = "https://easycms.fi/public_api/get_stock_types"
headers = {"Authorization1": "TOKEN"}
payload = {'username': 'USERNAME', 'password': 'PASSWORD', 'account': 'ACCOUNT_ID', 'search': 'KPL'}
response = requests.post(url, headers=headers, data=payload)
print(response.text)

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://easycms.fi/public_api/get_stock_types"))
    .headers("Authorization1", "TOKEN")
    .POST(HttpRequest.BodyPublishers.ofString("username=USERNAME&password=PASSWORD&account=ACCOUNT_ID&search=KPL"))
    .build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

const https = require('https');
const data = new URLSearchParams({ 
  username: 'USERNAME', 
  password: 'PASSWORD', 
  account: 'ACCOUNT_ID',
  search: 'KPL'
}).toString();
const options = {
  hostname: 'prolasku.fi',
  path: '/public_api/get_stock_types',
  method: 'POST',
  headers: {
    'Authorization1': 'TOKEN',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': data.length
  }
};
const req = https.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => { data += chunk; });
  res.on('end', () => { console.log(data); });
});
req.on('error', (e) => { console.error(e); });
req.write(data);
req.end();

import React, { useEffect, useState } from 'react';
function App() {
  const [categoryData, setCategoryData] = useState('');
  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await fetch('https://easycms.fi/public_api/get_stock_types', {
          method: 'POST',
          headers: {'Authorization1': 'TOKEN', 'Content-Type': 'application/x-www-form-urlencoded'},
          body: new URLSearchParams({username: 'USERNAME', password: 'PASSWORD', account: 'ACCOUNT_ID', search: 'KPL'}).toString()
        });
        const data = await response.text();
        setCategoryData(data);
      } catch (error) {
        console.error(error);
      }
    };
    fetchData();
  }, []);
  return (
{categoryData}
); } export default App;

// Kotlin example requires using a third-party library like OkHttp for POST requests with a body
// Kotlin Example using OkHttp for POST request
import okhttp3.OkHttpClient
import okhttp3.FormBody
import okhttp3.Request

fun main() {
    val client = OkHttpClient()

    val formBody = FormBody.Builder()
        .add("username", "USERNAME")
        .add("password", "PASSWORD")
        .add("account", "ACCOUNT_ID")
        .add("search", "KPL")
        .build()

    val request = Request.Builder()
        .url("https://easycms.fi/public_api/get_stock_types")
        .post(formBody)
        .addHeader("Authorization1", "TOKEN")
        .build()

    client.newCall(request).execute().use { response ->
        if (!response.isSuccessful) throw IOException("Unexpected code $response")

        println(response.body?.string())
    }
}

using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
    static async Task Main()
    {
        var token = "TOKEN";
        var content = new FormUrlEncodedContent(new[]
        {
            new KeyValuePair("username", "USERNAME"),
            new KeyValuePair("password", "PASSWORD"),
            new KeyValuePair("account", "ACCOUNT_ID"),
            new KeyValuePair("search", "KPL")
        });
        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Add("Authorization1", token);
            var response = await httpClient.PostAsync("https://easycms.fi/public_api/get_stock_types", content);
            if (response.IsSuccessStatusCode)
            {
                var responseData = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseData);
            }
            else
            {
                Console.WriteLine($"Error: {response.StatusCode}");
            }
        }
    }
}

Handling Endpoint Results

When you make a request to the endpoint, you receive a JSON response containing various keys and values. Here's an explanation of the response keys and their meanings:


- `stock_type_id`: Stock Type ID (String) - A unique identifier for each stock type.
- `cruom_id`: CRUOM ID (String) - A unique identifier, typically in UUID format, for the unit of measure associated with the stock.
- `stock_type_number`: Stock Type Number (String) - A numerical identifier for the stock type.
- `stock_type_name`: Stock Type Names (Object) - An object containing the name of the stock type in different languages.
  - `fi`: Stock type name in Finnish (String).
  - `en_gb`: Stock type name in English (Great Britain) (String).
  - `fa_ir`: Stock type name in Persian (Iran) (String).
  - `es`: Stock type name in Spanish (String).
  - `zh`: Stock type name in Chinese (String).
  - `vi`: Stock type name in Vietnamese (String).
- `stock_alert_qty`: Stock Alert Quantity (Integer) - The quantity at which a stock alert is triggered.
- `parent_id`: Parent Stock Type ID (Integer) - The identifier of the parent stock type, if applicable.
- `visible`: Visibility Status (String) - Indicates whether the stock type is visible ("1") or not ("0").
- `default_value`: Default Value Status (String) - Indicates whether this is the default stock type ("1") or not ("0").
    

{
    "INFO": {
        "start": 0,
        "limit": 50,
        "count": 11,
        "total_count": "11",
        "tip": "You may pass the table's main column identifier ex: city_id for tbl_cities, pid for tbl_products, cid for tbl_categories etc... to make a request for a single specific id from your query. EXAMPLE PARAM: city_id = 2 when sending the request for \"get_cities\" "
    },
    "OUTPUT": [
        {
            "stock_type_id": "66",
            "cruom_id": "029e4f21-1dbd-4243-85b1-0880b0d77f6b",
            "stock_type_number": "1",
            "stock_type_name": {
                "fi": "KPL",
                "en_gb": "PCS",
                "fa_ir": "قطعه",
                "es": "pieza",
                "zh": "件",
                "vi": "mảnh"
            },
            "stock_alert_qty": 0,
            "parent_id": 0,
            "visible": "1",
            "default_value": "1"
        },
        {
            "stock_type_id": "64",
            "cruom_id": "0",
            "stock_type_number": "2",
            "stock_type_name": {
                "fi": "PKT",
                "en_gb": "PKG",
                "fa_ir": "بسته",
                "es": "paquete",
                "zh": "包",
                "vi": "gói"
            },
            "stock_alert_qty": 0,
            "parent_id": 0,
            "visible": "1",
            "default_value": 0
        }
    ]

}
    

Error Handling

Here are the possible error messages and their meanings:

  • UN-AUTHORIZED - _user_name_password_is_set_but_wrong_value!: Incorrect username or password.
  • this_account_does_not_exist_or_your_credentials_do_not_match_this_account: The account doesn't exist or mismatched credentials.
  • UN-AUTHORIZED - header is set but the header value is not correct!: Incorrect authorization header value.
  • Maximum query size is 50 rows per query: Exceeded maximum limit of 50 rows per query.