API - Items


Overview

The API is a light-weight list of Items. No data update allowed. For updating or for viewing details use itemDetails.

Endpoint name

items

Source table

Item

Fixed view

No filter. Returns all items, both standard items and trade items, blocked and non-blocked.

Requests allowed

GET

Primary key

number

Record ID

number

Procedures

Additionally POST requests can be done on procedure endpoints.

  • AddNote

  • AddNoteFromUser


Data

Field List

Property

Type

Format

Description


1

systemId

string

uuid

SystemId

non-editable

2

number

string

max 20

Item No.

Record ID

primary key

3

description

string

max 50

Item Description


4

packageDescriptionType

string

enum

Options:

  • blank

  • Trade Item

  • Irregular


5

packageDescription

string

max 30

Package Description


6

tradeItemType

string

enum

Blank if it is a standard item, if not blank, it is a “trade item”. Options:

  • blank - standard item, can be used if it is not seafood, for example packaging

  • Product

  • Raw Material

  • WIP - produced material that will be used as a consumption for products


7

itemCategoryCode

string

max 20

Item Category Code


8

rawMaterialReportingCode

string

max 10

Raw Mat. - Official Reporting Code


9

inventoryPostingGroup

string

max 20

Inventory Posting Group


10

blocked

boolean


Item is blocked.


11

status

string

enum

Options:

  • blank

  • On Hold

  • Quit


12

baseUnitOfMeasure

string

max 10

Base Unit of Measure


13

tradeItemUnitOfMeasure

string

max 10

Trade Item Unit of Measure


14

palletUnitOfMeasure

string

max 10

Pallet Unit of Measure


15

weightUnitOfMeasure

string

max 10

Weight Unit of Measure


16

unitPrice

number


Unit Price


17

priceIncludesTax

boolean


Price Includes VAT


18

unitCost

number


Unit Cost


19

gtin

string

max 14

GTIN of the base unit.


20

gtinTradeItem

string

max 14

GTIN of the trade item unit.


21

gtinOuter

string

max 14

GTIN of the outer package.


22

systemRowVersion

integer


System row version. Increments every time the record is modified.

non-editable

23

lastModified

string

date-time

SystemModifiedAt (date and time of last change)

non-editable

Object Example

JSON
{
    "number": "70079",
    "systemId": "473e5d0f-f6a8-f011-b027-fa32451b10aa",
    "description": "Cod fillets (3 kg box)",
    "packageDescriptionType": "Trade Item",
    "packageDescription": "1 x 3kg",
    "tradeItemType": "Product",
    "itemCategoryCode": "",
    "rawMaterialReportingCode": "001",
    "inventoryPostingGroup": "RESALE",
    "blocked": false,
    "status": " ",
    "baseUnitOfMeasure": "KG",
    "tradeItemUnitOfMeasure": "BOX",
    "palletUnitOfMeasure": "PALLET",
    "weightUnitOfMeasure": "KG",
    "unitPrice": 0,
    "priceIncludesTax": false,
    "unitCost": 0,
    "gtin": "",
    "gtinTradeItem": "",
    "gtinOuter": "",
    "systemRowVersion": 2581734,
    "lastModified": "2025-12-17T16:22:57.803Z"
}


Procedures

Procedures are called on a specific item: POST items('<number>')/Microsoft.NAV.<procedureName> with a JSON body of parameters. Each procedure returns a text message in the value property of the response on success. On failure it returns an error with a readable message.

Parameter names are case-sensitive, and the procedure name starts with a capital letter (AddNote).

Procedure

Parameters

Description

Details

AddNote

noteText (text, max 250)

Add a note to the item. The note is registered as from the API user.

Show more

AddNoteFromUser

noteText (text, max 250), fromUser (code, max 50)

Add a note to the item, registered as from the given Business Central user. The user must exist in User Setup.

Show more


Notes

Add Note

The procedure AddNote adds a note to the item. The note is a Business Central Note record link with the description “Sent through API”, and it is registered as from the API user (the user making the call).

JSON
POST
.../items([record-id])/Microsoft.NAV.AddNote

Body:
{
    "noteText": [the text of the note]
}

Parameters

Type

Max Len

Description


noteText

string

250

The text of the note.

mandatory

A note is added to the item, and the value property of the response is Note successfully added.

Possible errors:

  • The item does not exist (standard Business Central error, record not found).

  • noteText is longer than 250 characters (standard Business Central error, the text exceeds the parameter length).

Behaviour notes:

  • The note text is not validated: an empty noteText is not rejected, an empty note is added.

  • The note is a Note type record link with the description “Sent through API”, created with the current date and time.

Notes can be read with the Record Notes API, see API - Record Notes in this space.


Add Note from a User

The procedure AddNoteFromUser works the same way as AddNote, but the note is registered as from the given Business Central user instead of the API user.

JSON
POST
.../items([record-id])/Microsoft.NAV.AddNoteFromUser

Body:
{
    "noteText": [the text of the note],
    "fromUser": [the BC user ID the note is registered from]
}

Parameters

Type

Max Len

Description


noteText

string

250

The text of the note.

mandatory

fromUser

string

50

The BC user ID the note is registered from. The user must exist in User Setup, otherwise the call fails with the error “User with ID X does not exist”.

mandatory

A note is added to the item, and the value property of the response is Note successfully added and registered from user <fromUser>.

Possible errors:

  • The item does not exist (standard Business Central error, record not found).

  • A parameter is longer than its maximum length (standard Business Central error, the text exceeds the parameter length).

  • User with ID <fromUser> does not exist (when fromUser is not found in User Setup)

Behaviour notes:

  • fromUser is a code parameter, so the value is converted to upper case: "john" is registered and returned as JOHN.

  • If fromUser is empty, no user check is made and the note is registered as from the API user (same as AddNote), but the response text then ends with an empty user ID: Note successfully added and registered from user .

  • The note text is not validated: an empty noteText is not rejected.


Examples

The following are just some examples of usage.

Read items

Read all entries

Reads all items, both standard items and trade items. The response is a list of item objects, as shown in Object Example.

JSON
GET
.../items

Read all entries with a filter

This request would return all Items in the Item Category called FISH.

JSON
GET
.../items?$filter=itemCategoryCode eq 'FISH'

Read one item

Reads one item by its Record ID (number). The response is one item object.

Request:

JSON
GET .../items('70079')

Response:

JSON
{
    "@odata.context": "https://containers.wisefish.com/BC/api/wisefish/base/v1.0/$metadata#items/$entity",
    "@odata.etag": "W/\"JzE5OzEyMjQ1NjE5ODc0NTUxMjM0NTYxOzAwOyc=\"",
    "number": "70079",
    "systemId": "473e5d0f-f6a8-f011-b027-fa32451b10aa",
    "description": "Cod fillets (3 kg box)",
    "packageDescriptionType": "Trade Item",
    "packageDescription": "1 x 3kg",
    "tradeItemType": "Product",
    "itemCategoryCode": "",
    "rawMaterialReportingCode": "001",
    "inventoryPostingGroup": "RESALE",
    "blocked": false,
    "status": " ",
    "baseUnitOfMeasure": "KG",
    "tradeItemUnitOfMeasure": "BOX",
    "palletUnitOfMeasure": "PALLET",
    "weightUnitOfMeasure": "KG",
    "unitPrice": 0,
    "priceIncludesTax": false,
    "unitCost": 0,
    "gtin": "",
    "gtinTradeItem": "",
    "gtinOuter": "",
    "systemRowVersion": 2581734,
    "lastModified": "2025-12-17T16:22:57.803Z"
}

Read selected properties of products

Reads only the number, description and units of non-blocked items of trade item type Product, using $filter and $select (the response is shortened).

Request:

JSON
GET .../items?$filter=tradeItemType eq 'Product' and blocked eq false&$select=number,description,packageDescription,baseUnitOfMeasure,tradeItemUnitOfMeasure

Response:

JSON
{
    "@odata.context": "https://containers.wisefish.com/BC/api/wisefish/base/v1.0/$metadata#items(number,description,packageDescription,baseUnitOfMeasure,tradeItemUnitOfMeasure)",
    "value": [
        {
            "@odata.etag": "W/\"JzE5OzEyMjQ1NjE5ODc0NTUxMjM0NTYxOzAwOyc=\"",
            "number": "70079",
            "description": "Cod fillets (3 kg box)",
            "packageDescription": "1 x 3kg",
            "baseUnitOfMeasure": "KG",
            "tradeItemUnitOfMeasure": "BOX"
        }
    ]
}


Add notes

Add a note to an item

Adds the note “Quality check completed” to item 70079 with AddNote; the note is registered as from the API user.

Request:

JSON
POST .../items('70079')/Microsoft.NAV.AddNote
{
    "noteText": "Quality check completed"
}

Response:

JSON
{
    "@odata.context": "https://containers.wisefish.com/BC/api/wisefish/base/v1.0/$metadata#Edm.String",
    "value": "Note successfully added"
}

Add a note to an item from a specific user

Adds the same note to item 70079 with AddNoteFromUser, registered as from user JOHN.

Request:

JSON
POST .../items('70079')/Microsoft.NAV.AddNoteFromUser
{
    "noteText": "Quality check completed",
    "fromUser": "JOHN"
}

Response:

JSON
{
    "@odata.context": "https://containers.wisefish.com/BC/api/wisefish/base/v1.0/$metadata#Edm.String",
    "value": "Note successfully added and registered from user JOHN"
}

Add a note from a user that does not exist

Calls AddNoteFromUser with a user ID that is not in User Setup; the call fails and no note is added (the error message is shortened).

Request:

JSON
POST .../items('70079')/Microsoft.NAV.AddNoteFromUser
{
    "noteText": "Quality check completed",
    "fromUser": "NOBODY"
}

Response:

JSON
{
    "error": {
        "code": "Application_DialogException",
        "message": "User with ID NOBODY does not exist"
    }
}